diff --git a/lib/api/oauth.dart b/lib/api/oauth.dart index ce76722..75f4fac 100644 --- a/lib/api/oauth.dart +++ b/lib/api/oauth.dart @@ -1 +1,8 @@ import 'package:http/http.dart' as http; +import 'dart:io'; +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; + +import 'package:oauth2/oauth2.dart' as oauth2; + +// Future authorize({required String userid}) { +// } diff --git a/lib/api/user.dart b/lib/api/user.dart index 87c7c1d..9057b38 100644 --- a/lib/api/user.dart +++ b/lib/api/user.dart @@ -19,3 +19,20 @@ Uri urlFromUsername({required String name}) { name = cleanUpUsername(name: name); return Uri.parse("https://${name.substring(name.indexOf("@") + 1)}"); } + +String userFromUsername({required String name}) { + name = cleanUpUsername(name: name); + return name.substring(0, name.indexOf("@")); +} + +// A fully qualified and valid username for example (@)hello@world.com +// The first @ is ignored +class Username { + late final String user; + late final Uri url; + Username(String username) { + assert(isValidUsername(name: username)); + user = userFromUsername(name: username); + url = urlFromUsername(name: username); + } +} diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index e71a16d..d0e7f79 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -6,6 +6,10 @@ #include "generated_plugin_registrant.h" +#include void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) flutter_secure_storage_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterSecureStorageLinuxPlugin"); + flutter_secure_storage_linux_plugin_register_with_registrar(flutter_secure_storage_linux_registrar); } diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index 2e1de87..b29e9ba 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + flutter_secure_storage_linux ) list(APPEND FLUTTER_FFI_PLUGIN_LIST diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index cccf817..25d87cc 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,6 +5,8 @@ import FlutterMacOS import Foundation +import flutter_secure_storage_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + FlutterSecureStorageMacosPlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStorageMacosPlugin")) } diff --git a/pubspec.lock b/pubspec.lock index b2c7084..d519adf 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -76,11 +76,58 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.1" + flutter_secure_storage: + dependency: "direct main" + description: + name: flutter_secure_storage + url: "https://pub.dartlang.org" + source: hosted + version: "5.0.2" + flutter_secure_storage_linux: + dependency: transitive + description: + name: flutter_secure_storage_linux + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + flutter_secure_storage_macos: + dependency: transitive + description: + name: flutter_secure_storage_macos + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + flutter_secure_storage_platform_interface: + dependency: transitive + description: + name: flutter_secure_storage_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + flutter_secure_storage_web: + dependency: transitive + description: + name: flutter_secure_storage_web + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + flutter_secure_storage_windows: + dependency: transitive + description: + name: flutter_secure_storage_windows + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.2" flutter_test: dependency: "direct dev" description: flutter source: sdk version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" http: dependency: "direct main" description: @@ -95,6 +142,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "4.0.1" + js: + dependency: transitive + description: + name: js + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.4" lints: dependency: transitive description: @@ -137,6 +191,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.8.1" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.2" settings_ui: dependency: "direct main" description: @@ -207,3 +268,4 @@ packages: version: "2.1.2" sdks: dart: ">=2.17.3 <3.0.0" + flutter: ">=2.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index 8276a18..da86607 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -37,6 +37,7 @@ dependencies: settings_ui: ^2.0.2 http: ^0.13.4 oauth2: ^2.0.0 + flutter_secure_storage: ^5.0.2 dev_dependencies: flutter_test: diff --git a/test/user/user_test.dart b/test/user/user_test.dart index 84ad284..464d47b 100644 --- a/test/user/user_test.dart +++ b/test/user/user_test.dart @@ -5,6 +5,7 @@ void main() { validUsernameTest(); usernameToUrlTest(); cleanupNameTest(); + userFromUsernameTest(); } void validUsernameTest() { @@ -36,3 +37,10 @@ void cleanupNameTest() { expect(cleanUpUsername(name: ""), ""); }); } + +void userFromUsernameTest() { + test("try extracting user from the full valid user id", () { + expect(userFromUsername(name: "@hello@world"), "hello"); + expect(userFromUsername(name: "@john@from.garfield"), "john"); + }); +} diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 8b6d468..0c50753 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -6,6 +6,9 @@ #include "generated_plugin_registrant.h" +#include void RegisterPlugins(flutter::PluginRegistry* registry) { + FlutterSecureStorageWindowsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index b93c4c3..4fc759c 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + flutter_secure_storage_windows ) list(APPEND FLUTTER_FFI_PLUGIN_LIST