mirror of
https://github.com/twonlyapp/twonly-app.git
synced 2026-01-15 21:18:40 +00:00
68 lines
1.8 KiB
Dart
68 lines
1.8 KiB
Dart
import 'dart:convert';
|
|
import 'package:connect/main.dart';
|
|
import 'package:connect/src/signal/signal_helper.dart';
|
|
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
|
import 'model/user.dart';
|
|
|
|
// Just a helper function to get the secure storage
|
|
FlutterSecureStorage getSecureStorage() {
|
|
AndroidOptions _getAndroidOptions() => const AndroidOptions(
|
|
encryptedSharedPreferences: true,
|
|
);
|
|
return FlutterSecureStorage(aOptions: _getAndroidOptions());
|
|
}
|
|
|
|
Future<bool> isUserCreated() async {
|
|
User? user = await getUser();
|
|
if (user == null) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
Future<User?> getUser() async {
|
|
final storage = getSecureStorage();
|
|
String? userJson = await storage.read(key: "user");
|
|
if (userJson == null) {
|
|
return null;
|
|
}
|
|
try {
|
|
// Decode the JSON string
|
|
final userMap = jsonDecode(userJson) as Map<String, dynamic>;
|
|
final user = User.fromJson(userMap);
|
|
return user;
|
|
} catch (_) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
Future<bool> deleteLocalUserData() async {
|
|
final storage = getSecureStorage();
|
|
await storage.delete(key: "user");
|
|
return true;
|
|
}
|
|
|
|
Future<String?> createNewUser(String username, String inviteCode) async {
|
|
final storage = getSecureStorage();
|
|
|
|
// TODO: API call to server to check username and inviteCode
|
|
final check = await apiProvider.handshakeCheckRegister(username, inviteCode);
|
|
if (check != null) {
|
|
return check;
|
|
}
|
|
|
|
final signalModel = await SignalHelper.createNewSignalIdentity(username);
|
|
|
|
final identityKeyPair = await signalModel.signalStore.getIdentityKeyPair();
|
|
|
|
final user = User(
|
|
username: username,
|
|
identityKeyPairU8List: identityKeyPair.serialize(),
|
|
registrationId: await signalModel.signalStore.getLocalRegistrationId());
|
|
|
|
// TODO: API call to register user
|
|
|
|
await storage.write(key: "user", value: jsonEncode(user));
|
|
|
|
return null;
|
|
}
|