mirror of https://github.com/oxen-io/session-ios
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.9 KiB
Swift
79 lines
2.9 KiB
Swift
2 years ago
|
// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
|
||
|
|
||
|
import Foundation
|
||
|
import GRDB
|
||
|
import SessionUtil
|
||
|
import SessionUtilitiesKit
|
||
|
|
||
|
/*internal*/public enum SessionUtil { // TODO: Rename this to be cleaner?
|
||
|
/*internal*/public static func loadState() {
|
||
|
let storedDump: Data? = Storage.shared
|
||
|
.read { db in try ConfigDump.fetchOne(db, id: .userProfile) }?
|
||
|
.data
|
||
|
var dump: UnsafePointer<CChar>? = nil // TODO: Load from DB/Disk
|
||
|
let dumpLen: size_t = 0
|
||
|
var conf: UnsafeMutablePointer<config_object>? = nil
|
||
|
// var confSetup: UnsafeMutablePointer<UnsafeMutablePointer<config_object>?>? = nil
|
||
|
var error: UnsafeMutablePointer<CChar>? = nil
|
||
|
// TODO: Will need to manually release any unsafe pointers
|
||
|
let result = user_profile_init(&conf, dump, dumpLen, error)
|
||
|
|
||
|
guard result == 0 else { return } // TODO: Throw error
|
||
|
|
||
|
// var conf: UnsafeMutablePointer<config_object>? = confSetup?.pointee
|
||
|
|
||
|
user_profile_set_name(conf, "TestName") // TODO: Confirm success
|
||
|
|
||
|
let profileUrl: [CChar] = "http://example.org/omg-pic-123.bmp".bytes.map { CChar(bitPattern: $0) }
|
||
|
let profileKey: [CChar] = "secretNOTSECRET".bytes.map { CChar(bitPattern: $0) }
|
||
|
let profilePic: user_profile_pic = profileUrl.withUnsafeBufferPointer { profileUrlPtr in
|
||
|
profileKey.withUnsafeBufferPointer { profileKeyPtr in
|
||
|
user_profile_pic(
|
||
|
url: profileUrlPtr.baseAddress,
|
||
|
key: profileKeyPtr.baseAddress,
|
||
|
keylen: profileKey.count
|
||
|
)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
user_profile_set_pic(conf, profilePic) // TODO: Confirm success
|
||
|
|
||
|
if config_needs_push(conf) {
|
||
|
print("Needs Push!!!")
|
||
|
}
|
||
|
|
||
|
if config_needs_dump(conf) {
|
||
|
print("Needs Dump!!!")
|
||
|
}
|
||
|
|
||
|
var toPush: UnsafeMutablePointer<CChar>? = nil
|
||
|
var pushLen: Int = 0
|
||
|
let seqNo = config_push(conf, &toPush, &pushLen)
|
||
|
|
||
|
//var remoteAddr: [CChar] = remote.bytes.map { CChar(bitPattern: $0) }
|
||
|
//config_dump(conf, &dump1, &dump1len);
|
||
|
|
||
|
free(toPush) // TODO: Confirm
|
||
|
|
||
|
var dumpResult: UnsafeMutablePointer<CChar>? = nil
|
||
|
var dumpResultLen: Int = 0
|
||
|
|
||
|
config_dump(conf, &dumpResult, &dumpResultLen)
|
||
|
|
||
|
print("RAWR")
|
||
|
let str = String(cString: dumpResult!)
|
||
|
let stryBytes = str.bytes
|
||
|
let hexStr = stryBytes.toHexString()
|
||
|
let data = Data(bytes: dumpResult!, count: dumpResultLen)
|
||
|
// dumpResult.
|
||
|
// Storage.shared.write { db in
|
||
|
// try ConfigDump(variant: .userProfile, data: <#T##Data#>)
|
||
|
// .save(db)
|
||
|
// }
|
||
|
//
|
||
|
print("RAWR2")
|
||
|
|
||
|
//String(cString: dumpResult!)
|
||
|
}
|
||
|
}
|