mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-13 08:43:27 +01:00
Prioritizes AltServer that originally installed AltStore over others
This commit is contained in:
@@ -20,6 +20,8 @@ class ServerManager: NSObject
|
||||
|
||||
private let serviceBrowser = NetServiceBrowser()
|
||||
|
||||
private var services = Set<NetService>()
|
||||
|
||||
private override init()
|
||||
{
|
||||
super.init()
|
||||
@@ -45,10 +47,24 @@ extension ServerManager
|
||||
self.isDiscovering = false
|
||||
|
||||
self.discoveredServers.removeAll()
|
||||
self.services.removeAll()
|
||||
self.serviceBrowser.stop()
|
||||
}
|
||||
}
|
||||
|
||||
private extension ServerManager
|
||||
{
|
||||
func addDiscoveredServer(_ server: Server)
|
||||
{
|
||||
var server = server
|
||||
server.isPreferred = (server.identifier == UserDefaults.standard.preferredServerID)
|
||||
|
||||
guard !self.discoveredServers.contains(server) else { return }
|
||||
|
||||
self.discoveredServers.append(server)
|
||||
}
|
||||
}
|
||||
|
||||
extension ServerManager: NetServiceBrowserDelegate
|
||||
{
|
||||
func netServiceBrowserWillSearch(_ browser: NetServiceBrowser)
|
||||
@@ -68,19 +84,46 @@ extension ServerManager: NetServiceBrowserDelegate
|
||||
|
||||
func netServiceBrowser(_ browser: NetServiceBrowser, didFind service: NetService, moreComing: Bool)
|
||||
{
|
||||
let server = Server(service: service)
|
||||
guard !self.discoveredServers.contains(server) else { return }
|
||||
service.delegate = self
|
||||
|
||||
self.discoveredServers.append(server)
|
||||
if let txtData = service.txtRecordData(), let server = Server(service: service, txtData: txtData)
|
||||
{
|
||||
self.addDiscoveredServer(server)
|
||||
}
|
||||
else
|
||||
{
|
||||
service.resolve(withTimeout: 3)
|
||||
self.services.insert(service)
|
||||
}
|
||||
}
|
||||
|
||||
func netServiceBrowser(_ browser: NetServiceBrowser, didRemove service: NetService, moreComing: Bool)
|
||||
{
|
||||
let server = Server(service: service)
|
||||
|
||||
if let index = self.discoveredServers.firstIndex(of: server)
|
||||
if let index = self.discoveredServers.firstIndex(where: { $0.service == service })
|
||||
{
|
||||
self.discoveredServers.remove(at: index)
|
||||
}
|
||||
|
||||
self.services.remove(service)
|
||||
}
|
||||
}
|
||||
|
||||
extension ServerManager: NetServiceDelegate
|
||||
{
|
||||
func netServiceDidResolveAddress(_ service: NetService)
|
||||
{
|
||||
guard let data = service.txtRecordData(), let server = Server(service: service, txtData: data) else { return }
|
||||
self.addDiscoveredServer(server)
|
||||
}
|
||||
|
||||
func netService(_ sender: NetService, didNotResolve errorDict: [String : NSNumber])
|
||||
{
|
||||
print("Error resolving net service \(sender).", errorDict)
|
||||
}
|
||||
|
||||
func netService(_ sender: NetService, didUpdateTXTRecord data: Data)
|
||||
{
|
||||
let txtDict = NetService.dictionary(fromTXTRecord: data)
|
||||
print("Service \(sender) updated TXT Record:", txtDict)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user