Add profile settings and permission models

This commit is contained in:
2025-01-21 00:10:24 -05:00
parent 2195a038fc
commit cb870fe304
6 changed files with 73 additions and 13 deletions

View File

@@ -0,0 +1,30 @@
//
// NostrClientModel.swift
// Yeti
//
// Created by Terry Yiu on 1/20/25.
//
import Foundation
import SwiftData
@Model
final class NostrClientModel {
@Attribute(.unique) var id: String
@Relationship(deleteRule: .cascade) var signEventPermissions: [SignEventPermissionModel] = []
var signingPolicy: SigningPolicy?
var readPublicKeyPermission: Bool?
var nip04EncryptPermission: Bool?
var nip44EncryptPermission: Bool?
var nip04DencryptPermission: Bool?
var nip44DencryptPermission: Bool?
var getRelaysPermission: Bool?
var decryptZapEventPermission: Bool?
init(id: String) {
self.id = id
}
}

View File

@@ -0,0 +1,20 @@
//
// ProfileSettingsModel.swift
// Yeti
//
// Created by Terry Yiu on 1/20/25.
//
import Foundation
import SwiftData
@Model
final class ProfileSettingsModel {
@Attribute(.unique) var publicKey: String
var nostrClientModels: [NostrClientModel] = []
init(publicKey: String) {
self.publicKey = publicKey
}
}

View File

@@ -0,0 +1,20 @@
//
// SignEventPermissionModel.swift
// Yeti
//
// Created by Terry Yiu on 1/20/25.
//
import Foundation
import SwiftData
@Model
final class SignEventPermissionModel {
var kind: Int
var allowed: Bool
init(kind: Int, allowed: Bool) {
self.kind = kind
self.allowed = allowed
}
}

View File

@@ -1,21 +1,11 @@
// //
// SigningPolicyModel.swift // SigningPolicy.swift
// Yeti // Yeti
// //
// Created by Terry Yiu on 1/20/25. // Created by Terry Yiu on 1/20/25.
// //
import Foundation import Foundation
import SwiftData
@Model
final class SigningPolicyModel {
var signingPolicy: SigningPolicy
init(signingPolicy: SigningPolicy) {
self.signingPolicy = signingPolicy
}
}
enum SigningPolicy: Int, Codable, CaseIterable { enum SigningPolicy: Int, Codable, CaseIterable {
case basic = 0 case basic = 0

View File

@@ -19,5 +19,5 @@ struct ContentView: View {
#Preview { #Preview {
ContentView() ContentView()
.modelContainer(for: SigningPolicyModel.self, inMemory: true) .modelContainer(for: ProfileSettingsModel.self, inMemory: true)
} }

View File

@@ -14,7 +14,7 @@ struct YetiApp: App {
var sharedModelContainer: ModelContainer = { var sharedModelContainer: ModelContainer = {
let schema = Schema([ let schema = Schema([
SigningPolicyModel.self ProfileSettingsModel.self
]) ])
let modelConfiguration = ModelConfiguration(schema: schema, isStoredInMemoryOnly: false) let modelConfiguration = ModelConfiguration(schema: schema, isStoredInMemoryOnly: false)