feat(@desktop/general): Keychain manager added

Exposed methods of KeychainManager class added to `dotherside`

This change is required as part of the feature issue-2675
This commit is contained in:
Sale Djenic 2021-09-07 10:16:27 +02:00
parent 00ee27ca52
commit 4351b9a61f
4 changed files with 42 additions and 2 deletions

View File

@ -36,7 +36,7 @@ include "nimqml/private/nimqmlmacros.nim"
include "nimqml/private/singleinstance.nim"
include "nimqml/private/status/statusevent.nim"
include "nimqml/private/status/statusosnotification.nim"
include "nimqml/private/status/statuskeychainmanager.nim"
proc signal_handler*(receiver: pointer, signal: cstring, slot: cstring) =
var dosqobj = cast[DosQObject](receiver)

View File

@ -35,6 +35,7 @@ type
DosStatusEvent = distinct pointer
DosStatusOSNotification = DosQObject
DosQSettings = DosQObject
DosStatusKeychainManager = DosQObject
DosParameterDefinition = object
name: cstring
@ -371,6 +372,21 @@ proc dos_qsettings_remove(vptr: DosQSettings, key: cstring)
proc dos_qsettings_delete(vptr: DosQSettings)
{.cdecl, dynlib: dynLibName, importc.}
# DosStatusKeychainManager
proc dos_keychainmanager_create(service: cstring, authenticationReason: cstring):
DosStatusKeychainManager
{.cdecl, dynlib: dynLibName, importc.}
proc dos_keychainmanager_read_data_sync(vptr: DosStatusKeychainManager,
key: cstring): string {.cdecl, dynlib: dynLibName, importc.}
proc dos_keychainmanager_read_data_async(vptr: DosStatusKeychainManager,
key: cstring) {.cdecl, dynlib: dynLibName, importc.}
proc dos_keychainmanager_store_data_async(vptr: DosStatusKeychainManager,
key: cstring, data: cstring) {.cdecl, dynlib: dynLibName, importc.}
proc dos_keychainmanager_delete_data_async(vptr: DosStatusKeychainManager,
key: cstring) {.cdecl, dynlib: dynLibName, importc.}
proc dos_keychainmanager_delete(vptr: DosStatusKeychainManager)
{.cdecl, dynlib: dynLibName, importc.}
proc dos_to_local_file(fileUrl: cstring): cstring
{.cdecl, dynlib: dynLibName, importc.}

View File

@ -140,7 +140,7 @@ type
StatusOSNotification* = ref object of QObject
StatusOSNotificationObject* = ref object of QObject
StatusKeychainManager* = ref object of QObject
const
UserRole* = 0x100

View File

@ -0,0 +1,24 @@
proc setup(self: StatusKeychainManager, service: string,
authenticationReason: string) =
self.vptr = dos_keychainmanager_create(service, authenticationReason)
proc delete*(self: StatusKeychainManager) =
dos_keychainmanager_delete(self.vptr)
self.vptr.resetToNil
proc newStatusKeychainManager*(service: string,
authenticationReason: string): StatusKeychainManager =
new(result, delete)
result.setup(service, authenticationReason)
proc readDataSync*(self: StatusKeychainManager, key: string): string =
return dos_keychainmanager_read_data_sync(self.vptr, key)
proc readDataAsync*(self: StatusKeychainManager, key: string) =
dos_keychainmanager_read_data_async(self.vptr, key)
proc storeDataAsync*(self: StatusKeychainManager, key: string, data: string) =
dos_keychainmanager_store_data_async(self.vptr, key, data)
proc deleteDataAsync*(self: StatusKeychainManager, key: string) =
dos_keychainmanager_delete_data_async(self.vptr, key)