[ABANDONED] Mastodon iOS client.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
1.9 KiB

//
// AuthenticationManager.swift
// elpha-ios
//
// Created by Dwayne Harris on 8/25/18.
// Copyright © 2018 Elpha. All rights reserved.
//
import CoreData
import UIKit
class AuthenticationManager {
static var sessions: [SessionMO] {
get {
do {
let request = NSFetchRequest<SessionMO>(entityName: "Session")
return try CoreDataManager.shared.context.fetch(request)
} catch {
print("Error fetching Sessions \(error)")
return []
}
}
}
static var session: SessionMO? {
get {
let request = NSFetchRequest<SessionMO>(entityName: "Session")
request.predicate = NSPredicate(format: "selected = YES")
do {
let results = try CoreDataManager.shared.context.fetch(request)
return results.first
} catch {
print("Error fetching Session \(error)")
return nil
}
}
}
static var token: String? {
get {
guard let account = session?.account, let client = session?.client else {
return nil
}
return KeychainWrapper.standard.string(forKey: "token:\(account.username!)@\(client.host!)")
}
}
static func saveSession(client: ClientMO, account: AccountMO, token: String) -> SessionMO? {
if let session = self.session {
session.selected = false
}
let session = SessionMO(context: CoreDataManager.shared.context)
session.client = client
session.account = account
session.order = 0
session.createdAt = Date()
session.selected = true
CoreDataManager.shared.saveContext()
KeychainWrapper.standard.set(token, forKey: "token:\(account.username!)@\(client.host!)")
return session
}
}