//go:build wasm //:build wasm package idb import ( "git.smesh.lol/smesh/web/common/jsbridge/callback" "unsafe" ) //:wasmimport bridge idb_set_enc_key func wasmSetEncKey(ptr *byte, len int32, cap int32) //:wasmimport bridge idb_open func wasmOpen(cbID int32) //:wasmimport bridge idb_save_event func wasmSaveEvent(ptr *byte, len int32, cap int32, cbID int32) //:wasmimport bridge idb_query_events func wasmQueryEvents(ptr *byte, len int32, cap int32, cbID int32) //:wasmimport bridge idb_save_dm func wasmSaveDM(ptr *byte, len int32, cap int32, cbID int32) //:wasmimport bridge idb_query_dms func wasmQueryDMs(peerPtr *byte, peerLen int32, peerCap int32, limit int32, until int64, cbID int32) //:wasmimport bridge idb_get_conversation_list func wasmGetConversationList(cbID int32) //:wasmimport bridge idb_clear_dms_by_peer func wasmClearDMsByPeer(ptr *byte, len int32, cap int32, cbID int32) //:wasmimport bridge idb_set_version func wasmSetVersion(ptr *byte, len int32, cap int32) func SetEncKey(hexKey string) { wasmSetEncKey(unsafe.StringData(hexKey), int32(len(hexKey)), int32(len(hexKey))) } func Open(fn func()) { wasmOpen(callback.Register0Once(fn)) } func SaveEvent(eventJSON string, fn func(bool)) { wasmSaveEvent(unsafe.StringData(eventJSON), int32(len(eventJSON)), int32(len(eventJSON)), callback.RegisterBOnce(fn)) } func QueryEvents(filterJSON string, fn func(string)) { wasmQueryEvents(unsafe.StringData(filterJSON), int32(len(filterJSON)), int32(len(filterJSON)), callback.RegisterSOnce(fn)) } func SaveDM(dmJSON string, fn func(string)) { wasmSaveDM(unsafe.StringData(dmJSON), int32(len(dmJSON)), int32(len(dmJSON)), callback.RegisterSOnce(fn)) } func QueryDMs(peer string, limit int, until int64, fn func(string)) { wasmQueryDMs(unsafe.StringData(peer), int32(len(peer)), int32(len(peer)), int32(limit), until, callback.RegisterSOnce(fn)) } func GetConversationList(fn func(string)) { wasmGetConversationList(callback.RegisterSOnce(fn)) } func ClearDMsByPeer(peer string, fn func()) { wasmClearDMsByPeer(unsafe.StringData(peer), int32(len(peer)), int32(len(peer)), callback.Register0Once(fn)) } func SetVersion(v string) { wasmSetVersion(unsafe.StringData(v), int32(len(v)), int32(len(v))) } //:wasmimport bridge idb_mls_save_group func wasmMlsSaveGroup(gPtr *byte, gLen int32, gCap int32, sPtr *byte, sLen int32, sCap int32, cbID int32) //:wasmimport bridge idb_mls_load_group func wasmMlsLoadGroup(gPtr *byte, gLen int32, gCap int32, cbID int32) //:wasmimport bridge idb_mls_list_groups func wasmMlsListGroups(cbID int32) //:wasmimport bridge idb_mls_save_kpp func wasmMlsSaveKPP(ptr *byte, len int32, cap int32, cbID int32) //:wasmimport bridge idb_mls_load_kpp func wasmMlsLoadKPP(cbID int32) func MlsSaveGroup(groupIDHex, stateBase64 string, fn func()) { wasmMlsSaveGroup( unsafe.StringData(groupIDHex), int32(len(groupIDHex)), int32(len(groupIDHex)), unsafe.StringData(stateBase64), int32(len(stateBase64)), int32(len(stateBase64)), callback.Register0Once(fn), ) } func MlsLoadGroup(groupIDHex string, fn func(string)) { wasmMlsLoadGroup(unsafe.StringData(groupIDHex), int32(len(groupIDHex)), int32(len(groupIDHex)), callback.RegisterSOnce(fn)) } func MlsListGroups(fn func(string)) { wasmMlsListGroups(callback.RegisterSOnce(fn)) } func MlsSaveKPP(kppBase64 string, fn func()) { wasmMlsSaveKPP(unsafe.StringData(kppBase64), int32(len(kppBase64)), int32(len(kppBase64)), callback.Register0Once(fn)) } func MlsLoadKPP(fn func(string)) { wasmMlsLoadKPP(callback.RegisterSOnce(fn)) } //:wasmimport bridge idb_kv_get func wasmKVGet(sPtr *byte, sLen int32, sCap int32, kPtr *byte, kLen int32, kCap int32, cbID int32) //:wasmimport bridge idb_kv_put func wasmKVPut(sPtr *byte, sLen int32, sCap int32, kPtr *byte, kLen int32, kCap int32, vPtr *byte, vLen int32, vCap int32) //:wasmimport bridge idb_kv_get_all func wasmKVGetAll(sPtr *byte, sLen int32, sCap int32, fnID int32, doneID int32) func KVGet(store, key string, fn func(string)) { wasmKVGet( unsafe.StringData(store), int32(len(store)), int32(len(store)), unsafe.StringData(key), int32(len(key)), int32(len(key)), callback.RegisterSOnce(fn), ) } func KVPut(store, key, value string) { wasmKVPut( unsafe.StringData(store), int32(len(store)), int32(len(store)), unsafe.StringData(key), int32(len(key)), int32(len(key)), unsafe.StringData(value), int32(len(value)), int32(len(value)), ) } func KVGetAll(store string, each func(string, string), done func()) { fnID := callback.RegisterSS(each) doneID := callback.Register0Once(done) wasmKVGetAll(unsafe.StringData(store), int32(len(store)), int32(len(store)), fnID, doneID) }