diff --git a/flutter/lib/api/api_client.dart b/flutter/lib/api/api_client.dart index 052b02c..a2e0d58 100644 --- a/flutter/lib/api/api_client.dart +++ b/flutter/lib/api/api_client.dart @@ -413,6 +413,22 @@ class APIClient { ); } + static Future createKeyToken(TokenSource auth, String name, String perm, bool allChannels, {List? channels}) async { + return await _request( + name: 'createKeyToken', + method: 'POST', + relURL: 'users/${auth.getUserID()}/keys', + jsonBody: { + 'name': name, + 'pem': perm, + 'all_channels': allChannels, + if (channels != null) 'channels': channels, + }, + fn: KeyTokenWithToken.fromJson, + authToken: auth.getToken(), + ); + } + static Future> getSenderNameList(TokenSource auth) async { return await _request( name: 'getSenderNameList', diff --git a/flutter/lib/models/keytoken.dart b/flutter/lib/models/keytoken.dart index a2d84d5..3f13d51 100644 --- a/flutter/lib/models/keytoken.dart +++ b/flutter/lib/models/keytoken.dart @@ -40,6 +40,23 @@ class KeyToken { } } +class KeyTokenWithToken { + final KeyToken keyToken; + final String token; + + KeyTokenWithToken({ + required this.keyToken, + required this.token, + }); + + factory KeyTokenWithToken.fromJson(Map json) { + return KeyTokenWithToken( + keyToken: KeyToken.fromJson(json), + token: json['token'] as String, + ); + } +} + class KeyTokenPreview { final String keytokenID; final String name; diff --git a/flutter/lib/pages/account/account.dart b/flutter/lib/pages/account/account.dart index cce61b2..a34eaba 100644 --- a/flutter/lib/pages/account/account.dart +++ b/flutter/lib/pages/account/account.dart @@ -503,7 +503,7 @@ class _AccountRootPageState extends State { } void _deleteAccount() async { - //TODO + Toaster.info("Not Implemented", "Account Upgrading will be implemented in a later version"); // TODO } void _changeUsername() async { diff --git a/flutter/lib/pages/account/login.dart b/flutter/lib/pages/account/login.dart index e4534b4..1f239f3 100644 --- a/flutter/lib/pages/account/login.dart +++ b/flutter/lib/pages/account/login.dart @@ -122,9 +122,9 @@ class _AccountLoginPageState extends State { try { setState(() => loading = true); - final uid = _ctrlUserID.text; - final atokv = _ctrlTokenAdmin.text; - final stokv = _ctrlTokenSend.text; + var uid = _ctrlUserID.text; + var atokv = _ctrlTokenAdmin.text; + var stokv = _ctrlTokenSend.text; final fcmToken = await FirebaseMessaging.instance.getToken(); @@ -147,8 +147,12 @@ class _AccountLoginPageState extends State { Toaster.error("Error", 'Send token does not have required permissions'); return; } + } else { + final toks = await APIClient.createKeyToken(DirectTokenSource(uid, atokv), "SendKey (auto generated by SCN)", "CS", true); + + stokv = toks.token; } - + final user = await APIClient.getUser(DirectTokenSource(uid, atokv), uid); final client = await APIClient.addClient(DirectTokenSource(uid, atokv), fcmToken, Globals().deviceModel, Globals().version, Globals().hostname, Globals().clientType); diff --git a/flutter/lib/pages/channel_scanner/channel_scanner_result_messagesend.dart b/flutter/lib/pages/channel_scanner/channel_scanner_result_messagesend.dart index 15593b1..90eb888 100644 --- a/flutter/lib/pages/channel_scanner/channel_scanner_result_messagesend.dart +++ b/flutter/lib/pages/channel_scanner/channel_scanner_result_messagesend.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:provider/provider.dart'; import 'package:simplecloudnotifier/api/api_client.dart'; -import 'package:simplecloudnotifier/models/channel.dart'; import 'package:simplecloudnotifier/models/keytoken.dart'; import 'package:simplecloudnotifier/models/scan_result.dart'; import 'package:simplecloudnotifier/models/user.dart'; diff --git a/flutter/lib/pages/debug/debug_actions.dart b/flutter/lib/pages/debug/debug_actions.dart index 695532f..aaef251 100644 --- a/flutter/lib/pages/debug/debug_actions.dart +++ b/flutter/lib/pages/debug/debug_actions.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:simplecloudnotifier/state/application_log.dart'; import 'package:simplecloudnotifier/utils/notifier.dart'; import 'package:simplecloudnotifier/utils/toaster.dart'; import 'package:simplecloudnotifier/utils/ui.dart';