|
|
|
|
@ -8,6 +8,11 @@ |
|
|
|
|
import Foundation |
|
|
|
|
import UIKit |
|
|
|
|
|
|
|
|
|
public enum ResetOption { |
|
|
|
|
case all |
|
|
|
|
case synchronizedOnly |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
enum StoreError: Error { |
|
|
|
|
case missingService |
|
|
|
|
case unexpectedCollectionType(name: String) |
|
|
|
|
@ -133,18 +138,28 @@ public class Store { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public func disconnect(resetAll: Bool = false) { |
|
|
|
|
public func disconnect(resetOption: ResetOption? = nil) { |
|
|
|
|
try? self.service().disconnect() |
|
|
|
|
self._settingsStorage.update { settings in |
|
|
|
|
settings.username = nil |
|
|
|
|
settings.userId = nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if resetAll { |
|
|
|
|
switch resetOption { |
|
|
|
|
case .all: |
|
|
|
|
for collection in self._collections.values { |
|
|
|
|
collection.reset() |
|
|
|
|
} |
|
|
|
|
case .synchronizedOnly: |
|
|
|
|
for collection in self._collections.values { |
|
|
|
|
if collection.synchronized { |
|
|
|
|
collection.reset() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
default: |
|
|
|
|
break |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public func hasToken() -> Bool { |
|
|
|
|
|