From 1f16da8f8804b252e85a126489ed709e3c45d828 Mon Sep 17 00:00:00 2001 From: Marc Rejohn Castillano Date: Mon, 9 Feb 2026 20:10:42 +0800 Subject: [PATCH] Initial commit --- .metadata | 45 + .vscode/mcp.json | 9 + README.md | 3 + analysis_options.yaml | 1 + android/.gitignore | 14 + android/app/build.gradle.kts | 44 + android/app/src/debug/AndroidManifest.xml | 7 + android/app/src/main/AndroidManifest.xml | 45 + .../kotlin/com/example/tasq/MainActivity.kt | 5 + .../res/drawable-v21/launch_background.xml | 12 + .../main/res/drawable/launch_background.xml | 12 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 5164 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 3028 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 7390 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 12205 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 17336 bytes .../app/src/main/res/values-night/styles.xml | 18 + android/app/src/main/res/values/styles.xml | 18 + android/app/src/profile/AndroidManifest.xml | 7 + android/build.gradle.kts | 24 + android/gradle.properties | 2 + .../gradle/wrapper/gradle-wrapper.properties | 5 + android/settings.gradle.kts | 26 + assets/tasq_ico.png | Bin 0 -> 42087 bytes assets/tasq_notification.wav | Bin 0 -> 356640 bytes ios/.gitignore | 34 + ios/Flutter/AppFrameworkInfo.plist | 26 + ios/Flutter/Debug.xcconfig | 1 + ios/Flutter/Release.xcconfig | 1 + ios/Runner.xcodeproj/project.pbxproj | 616 ++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 101 ++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 122 +++ .../Icon-App-1024x1024@1x.png | Bin 0 -> 196586 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 889 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 2326 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 4048 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 1523 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 3858 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 6535 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 2326 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 5856 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 9779 bytes .../AppIcon.appiconset/Icon-App-50x50@1x.png | Bin 0 -> 3139 bytes .../AppIcon.appiconset/Icon-App-50x50@2x.png | Bin 0 -> 7818 bytes .../AppIcon.appiconset/Icon-App-57x57@1x.png | Bin 0 -> 3843 bytes .../AppIcon.appiconset/Icon-App-57x57@2x.png | Bin 0 -> 9169 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 9779 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 15904 bytes .../AppIcon.appiconset/Icon-App-72x72@1x.png | Bin 0 -> 5164 bytes .../AppIcon.appiconset/Icon-App-72x72@2x.png | Bin 0 -> 12205 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 5494 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 13055 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 14443 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + ios/Runner/Base.lproj/LaunchScreen.storyboard | 37 + ios/Runner/Base.lproj/Main.storyboard | 26 + ios/Runner/Info.plist | 49 + ios/Runner/Runner-Bridging-Header.h | 1 + ios/RunnerTests/RunnerTests.swift | 12 + lib/app.dart | 22 + lib/main.dart | 73 ++ lib/models/notification_item.dart | 41 + lib/models/office.dart | 10 + lib/models/profile.dart | 15 + lib/models/task.dart | 50 + lib/models/task_assignment.dart | 19 + lib/models/ticket.dart | 46 + lib/models/ticket_message.dart | 28 + lib/models/user_office.dart | 13 + lib/providers/admin_user_provider.dart | 105 ++ lib/providers/auth_provider.dart | 69 ++ lib/providers/notifications_provider.dart | 97 ++ lib/providers/profile_provider.dart | 45 + lib/providers/supabase_provider.dart | 6 + lib/providers/tasks_provider.dart | 235 +++++ lib/providers/tickets_provider.dart | 248 +++++ lib/providers/typing_provider.dart | 152 +++ lib/providers/user_offices_provider.dart | 46 + lib/routing/app_router.dart | 160 +++ lib/screens/admin/offices_screen.dart | 185 ++++ lib/screens/admin/user_management_screen.dart | 672 +++++++++++++ lib/screens/auth/login_screen.dart | 179 ++++ lib/screens/auth/signup_screen.dart | 275 ++++++ lib/screens/dashboard/dashboard_screen.dart | 637 ++++++++++++ .../notifications/notifications_screen.dart | 147 +++ .../shared/under_development_screen.dart | 84 ++ lib/screens/tasks/task_detail_screen.dart | 822 ++++++++++++++++ lib/screens/tasks/tasks_list_screen.dart | 319 ++++++ lib/screens/tickets/ticket_detail_screen.dart | 859 ++++++++++++++++ lib/screens/tickets/tickets_list_screen.dart | 268 +++++ lib/theme/app_theme.dart | 188 ++++ lib/widgets/app_shell.dart | 470 +++++++++ lib/widgets/responsive_body.dart | 46 + lib/widgets/task_assignment_section.dart | 233 +++++ lib/widgets/typing_dots.dart | 72 ++ linux/.gitignore | 1 + linux/CMakeLists.txt | 128 +++ linux/flutter/CMakeLists.txt | 88 ++ linux/flutter/generated_plugin_registrant.cc | 23 + linux/flutter/generated_plugin_registrant.h | 15 + linux/flutter/generated_plugins.cmake | 26 + linux/runner/CMakeLists.txt | 26 + linux/runner/main.cc | 6 + linux/runner/my_application.cc | 148 +++ linux/runner/my_application.h | 21 + macos/.gitignore | 7 + macos/Flutter/Flutter-Debug.xcconfig | 1 + macos/Flutter/Flutter-Release.xcconfig | 1 + macos/Flutter/GeneratedPluginRegistrant.swift | 18 + macos/Runner.xcodeproj/project.pbxproj | 705 +++++++++++++ .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 99 ++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + macos/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 68 ++ .../AppIcon.appiconset/app_icon_1024.png | Bin 0 -> 102994 bytes .../AppIcon.appiconset/app_icon_128.png | Bin 0 -> 5680 bytes .../AppIcon.appiconset/app_icon_16.png | Bin 0 -> 520 bytes .../AppIcon.appiconset/app_icon_256.png | Bin 0 -> 14142 bytes .../AppIcon.appiconset/app_icon_32.png | Bin 0 -> 1066 bytes .../AppIcon.appiconset/app_icon_512.png | Bin 0 -> 36406 bytes .../AppIcon.appiconset/app_icon_64.png | Bin 0 -> 2218 bytes macos/Runner/Base.lproj/MainMenu.xib | 343 +++++++ macos/Runner/Configs/AppInfo.xcconfig | 14 + macos/Runner/Configs/Debug.xcconfig | 2 + macos/Runner/Configs/Release.xcconfig | 2 + macos/Runner/Configs/Warnings.xcconfig | 13 + macos/Runner/DebugProfile.entitlements | 12 + macos/Runner/Info.plist | 32 + macos/Runner/MainFlutterWindow.swift | 15 + macos/Runner/Release.entitlements | 8 + macos/RunnerTests/RunnerTests.swift | 12 + pubspec.lock | 930 ++++++++++++++++++ pubspec.yaml | 40 + .../functions/admin_user_management/index.ts | 95 ++ web/favicon.png | Bin 0 -> 666 bytes web/icons/Icon-192.png | Bin 0 -> 17336 bytes web/icons/Icon-512.png | Bin 0 -> 72191 bytes web/icons/Icon-maskable-192.png | Bin 0 -> 17336 bytes web/icons/Icon-maskable-512.png | Bin 0 -> 72191 bytes web/index.html | 38 + web/manifest.json | 35 + windows/.gitignore | 17 + windows/CMakeLists.txt | 108 ++ windows/flutter/CMakeLists.txt | 109 ++ .../flutter/generated_plugin_registrant.cc | 20 + windows/flutter/generated_plugin_registrant.h | 15 + windows/flutter/generated_plugins.cmake | 26 + windows/runner/CMakeLists.txt | 40 + windows/runner/Runner.rc | 121 +++ windows/runner/flutter_window.cpp | 71 ++ windows/runner/flutter_window.h | 33 + windows/runner/main.cpp | 43 + windows/runner/resource.h | 16 + windows/runner/resources/app_icon.ico | Bin 0 -> 33772 bytes windows/runner/runner.exe.manifest | 14 + windows/runner/utils.cpp | 65 ++ windows/runner/utils.h | 19 + windows/runner/win32_window.cpp | 288 ++++++ windows/runner/win32_window.h | 102 ++ 172 files changed, 12461 insertions(+) create mode 100644 .metadata create mode 100644 .vscode/mcp.json create mode 100644 README.md create mode 100644 analysis_options.yaml create mode 100644 android/.gitignore create mode 100644 android/app/build.gradle.kts create mode 100644 android/app/src/debug/AndroidManifest.xml create mode 100644 android/app/src/main/AndroidManifest.xml create mode 100644 android/app/src/main/kotlin/com/example/tasq/MainActivity.kt create mode 100644 android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 android/app/src/main/res/drawable/launch_background.xml create mode 100644 android/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 android/app/src/main/res/values-night/styles.xml create mode 100644 android/app/src/main/res/values/styles.xml create mode 100644 android/app/src/profile/AndroidManifest.xml create mode 100644 android/build.gradle.kts create mode 100644 android/gradle.properties create mode 100644 android/gradle/wrapper/gradle-wrapper.properties create mode 100644 android/settings.gradle.kts create mode 100644 assets/tasq_ico.png create mode 100644 assets/tasq_notification.wav create mode 100644 ios/.gitignore create mode 100644 ios/Flutter/AppFrameworkInfo.plist create mode 100644 ios/Flutter/Debug.xcconfig create mode 100644 ios/Flutter/Release.xcconfig create mode 100644 ios/Runner.xcodeproj/project.pbxproj create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 ios/Runner/AppDelegate.swift create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 ios/Runner/Base.lproj/Main.storyboard create mode 100644 ios/Runner/Info.plist create mode 100644 ios/Runner/Runner-Bridging-Header.h create mode 100644 ios/RunnerTests/RunnerTests.swift create mode 100644 lib/app.dart create mode 100644 lib/main.dart create mode 100644 lib/models/notification_item.dart create mode 100644 lib/models/office.dart create mode 100644 lib/models/profile.dart create mode 100644 lib/models/task.dart create mode 100644 lib/models/task_assignment.dart create mode 100644 lib/models/ticket.dart create mode 100644 lib/models/ticket_message.dart create mode 100644 lib/models/user_office.dart create mode 100644 lib/providers/admin_user_provider.dart create mode 100644 lib/providers/auth_provider.dart create mode 100644 lib/providers/notifications_provider.dart create mode 100644 lib/providers/profile_provider.dart create mode 100644 lib/providers/supabase_provider.dart create mode 100644 lib/providers/tasks_provider.dart create mode 100644 lib/providers/tickets_provider.dart create mode 100644 lib/providers/typing_provider.dart create mode 100644 lib/providers/user_offices_provider.dart create mode 100644 lib/routing/app_router.dart create mode 100644 lib/screens/admin/offices_screen.dart create mode 100644 lib/screens/admin/user_management_screen.dart create mode 100644 lib/screens/auth/login_screen.dart create mode 100644 lib/screens/auth/signup_screen.dart create mode 100644 lib/screens/dashboard/dashboard_screen.dart create mode 100644 lib/screens/notifications/notifications_screen.dart create mode 100644 lib/screens/shared/under_development_screen.dart create mode 100644 lib/screens/tasks/task_detail_screen.dart create mode 100644 lib/screens/tasks/tasks_list_screen.dart create mode 100644 lib/screens/tickets/ticket_detail_screen.dart create mode 100644 lib/screens/tickets/tickets_list_screen.dart create mode 100644 lib/theme/app_theme.dart create mode 100644 lib/widgets/app_shell.dart create mode 100644 lib/widgets/responsive_body.dart create mode 100644 lib/widgets/task_assignment_section.dart create mode 100644 lib/widgets/typing_dots.dart create mode 100644 linux/.gitignore create mode 100644 linux/CMakeLists.txt create mode 100644 linux/flutter/CMakeLists.txt create mode 100644 linux/flutter/generated_plugin_registrant.cc create mode 100644 linux/flutter/generated_plugin_registrant.h create mode 100644 linux/flutter/generated_plugins.cmake create mode 100644 linux/runner/CMakeLists.txt create mode 100644 linux/runner/main.cc create mode 100644 linux/runner/my_application.cc create mode 100644 linux/runner/my_application.h create mode 100644 macos/.gitignore create mode 100644 macos/Flutter/Flutter-Debug.xcconfig create mode 100644 macos/Flutter/Flutter-Release.xcconfig create mode 100644 macos/Flutter/GeneratedPluginRegistrant.swift create mode 100644 macos/Runner.xcodeproj/project.pbxproj create mode 100644 macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 macos/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 macos/Runner/AppDelegate.swift create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png create mode 100644 macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png create mode 100644 macos/Runner/Base.lproj/MainMenu.xib create mode 100644 macos/Runner/Configs/AppInfo.xcconfig create mode 100644 macos/Runner/Configs/Debug.xcconfig create mode 100644 macos/Runner/Configs/Release.xcconfig create mode 100644 macos/Runner/Configs/Warnings.xcconfig create mode 100644 macos/Runner/DebugProfile.entitlements create mode 100644 macos/Runner/Info.plist create mode 100644 macos/Runner/MainFlutterWindow.swift create mode 100644 macos/Runner/Release.entitlements create mode 100644 macos/RunnerTests/RunnerTests.swift create mode 100644 pubspec.lock create mode 100644 pubspec.yaml create mode 100644 supabase/functions/admin_user_management/index.ts create mode 100644 web/favicon.png create mode 100644 web/icons/Icon-192.png create mode 100644 web/icons/Icon-512.png create mode 100644 web/icons/Icon-maskable-192.png create mode 100644 web/icons/Icon-maskable-512.png create mode 100644 web/index.html create mode 100644 web/manifest.json create mode 100644 windows/.gitignore create mode 100644 windows/CMakeLists.txt create mode 100644 windows/flutter/CMakeLists.txt create mode 100644 windows/flutter/generated_plugin_registrant.cc create mode 100644 windows/flutter/generated_plugin_registrant.h create mode 100644 windows/flutter/generated_plugins.cmake create mode 100644 windows/runner/CMakeLists.txt create mode 100644 windows/runner/Runner.rc create mode 100644 windows/runner/flutter_window.cpp create mode 100644 windows/runner/flutter_window.h create mode 100644 windows/runner/main.cpp create mode 100644 windows/runner/resource.h create mode 100644 windows/runner/resources/app_icon.ico create mode 100644 windows/runner/runner.exe.manifest create mode 100644 windows/runner/utils.cpp create mode 100644 windows/runner/utils.h create mode 100644 windows/runner/win32_window.cpp create mode 100644 windows/runner/win32_window.h diff --git a/.metadata b/.metadata new file mode 100644 index 00000000..08c24780 --- /dev/null +++ b/.metadata @@ -0,0 +1,45 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: "3b62efc2a3da49882f43c372e0bc53daef7295a6" + channel: "stable" + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 3b62efc2a3da49882f43c372e0bc53daef7295a6 + base_revision: 3b62efc2a3da49882f43c372e0bc53daef7295a6 + - platform: android + create_revision: 3b62efc2a3da49882f43c372e0bc53daef7295a6 + base_revision: 3b62efc2a3da49882f43c372e0bc53daef7295a6 + - platform: ios + create_revision: 3b62efc2a3da49882f43c372e0bc53daef7295a6 + base_revision: 3b62efc2a3da49882f43c372e0bc53daef7295a6 + - platform: linux + create_revision: 3b62efc2a3da49882f43c372e0bc53daef7295a6 + base_revision: 3b62efc2a3da49882f43c372e0bc53daef7295a6 + - platform: macos + create_revision: 3b62efc2a3da49882f43c372e0bc53daef7295a6 + base_revision: 3b62efc2a3da49882f43c372e0bc53daef7295a6 + - platform: web + create_revision: 3b62efc2a3da49882f43c372e0bc53daef7295a6 + base_revision: 3b62efc2a3da49882f43c372e0bc53daef7295a6 + - platform: windows + create_revision: 3b62efc2a3da49882f43c372e0bc53daef7295a6 + base_revision: 3b62efc2a3da49882f43c372e0bc53daef7295a6 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/.vscode/mcp.json b/.vscode/mcp.json new file mode 100644 index 00000000..0a531ebd --- /dev/null +++ b/.vscode/mcp.json @@ -0,0 +1,9 @@ +{ + "servers": { + "supabase": { + "type": "http", + "url": "https://mcp.supabase.com/mcp?project_ref=wqjebgpbwrfzshaabprh" + } + }, + "inputs": [] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 00000000..2c049e5a --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# tasq + +A new Flutter project. diff --git a/analysis_options.yaml b/analysis_options.yaml new file mode 100644 index 00000000..f9b30346 --- /dev/null +++ b/analysis_options.yaml @@ -0,0 +1 @@ +include: package:flutter_lints/flutter.yaml diff --git a/android/.gitignore b/android/.gitignore new file mode 100644 index 00000000..be3943c9 --- /dev/null +++ b/android/.gitignore @@ -0,0 +1,14 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java +.cxx/ + +# Remember to never publicly share your keystore. +# See https://flutter.dev/to/reference-keystore +key.properties +**/*.keystore +**/*.jks diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts new file mode 100644 index 00000000..d2f5ba6b --- /dev/null +++ b/android/app/build.gradle.kts @@ -0,0 +1,44 @@ +plugins { + id("com.android.application") + id("kotlin-android") + // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. + id("dev.flutter.flutter-gradle-plugin") +} + +android { + namespace = "com.example.tasq" + compileSdk = flutter.compileSdkVersion + ndkVersion = flutter.ndkVersion + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_17.toString() + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId = "com.example.tasq" + // You can update the following values to match your application needs. + // For more information, see: https://flutter.dev/to/review-gradle-config. + minSdk = flutter.minSdkVersion + targetSdk = flutter.targetSdkVersion + versionCode = flutter.versionCode + versionName = flutter.versionName + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig = signingConfigs.getByName("debug") + } + } +} + +flutter { + source = "../.." +} diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 00000000..399f6981 --- /dev/null +++ b/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..c0b90a2e --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/kotlin/com/example/tasq/MainActivity.kt b/android/app/src/main/kotlin/com/example/tasq/MainActivity.kt new file mode 100644 index 00000000..cc94f81f --- /dev/null +++ b/android/app/src/main/kotlin/com/example/tasq/MainActivity.kt @@ -0,0 +1,5 @@ +package com.example.tasq + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity : FlutterActivity() diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 00000000..f74085f3 --- /dev/null +++ b/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 00000000..304732f8 --- /dev/null +++ b/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..0813bfaba727842145167f192bac0be10a81574b GIT binary patch literal 5164 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 a;Qs-z#pzU}3{kfL0000Rn_(XSAF%>_f?Ov z+veq51T+P10D1!5fE4{%lwMu|oB>V%S-@6cEl_+Rom#^pFkV1=GcXJo0i;8t?~2i{ z4!{6l5}?$G-UxgIEC!tCL*je{Bm?7t2Z4n1>C~_98}#c9-~(VLkpEj>5-MbU zRr(%@f&NDg*VpkA5UIyDe;pWPJip{)y7n@J!K>@`Az31QrH|`7c9l=SP(A#u2k{cm z-s27SBe!dY+%@Im^S`AB&Z&z~;w+%5sM%*QK0VY|Y}Gk`{i?jbp);LU$XMjgV zN{9(87M$aJF}caVBzj{Ob60*yggJtZtGDvO8`zirgRXCIlsvkyu<$UNS`*1FtJ3b3mAh~+-=&dL7OmArQf`-A z*X~3fuIXPQwMaz$)rO&e8pgrb)RA{MalNuwvjPG4ce^n?k%447YwNngsOPXjA-Jik zhh)Mr6;Qn?eVN*tGQ}5n+1m&x(noawle7YXv(7qVb zQ&Ee{a8CIc!*!{(Gv(Qwg_IbJaoiw{h->B&JX^9b^u64_+s;BjyI_Ql<>a&HNG`t? z*fGd5Mx%jFol|fJ5g_IuE+N+Yk61MYcBI6ZTDz4~+u~lj`K*yq^NNtWw$*N>xM-y0 zcvM?StpH&<@?~wkjsXez(l%O~0JJgc>0CXuX%^4iW!p)JiDKeCeY7>OaNajmS2@nA z=WB&46IQjw!#)fv^Fq4s~V+U!wxFkB1Bwn5ML~VIxWfe1D ze20B|Pmq4cO?2qqg-DB;2y-NsCeh4I>&pHY7HYGgo+{M5lRpeSI-<<~9?zx&sJ2q1 zjxE6)URy4AZiTXF9nPoT_s*=MXwL#*ZZu?;b+3?lIEU^XTe5lmZk$e+_H5PC6<{&* zuLW4=kp(9dg3nR)^$cB1PHfb2_&Cq zE79!#?i$l6~|i z#=J0rgz#{FIB=BzJUg9Eo!Zgs`m6c&%kQwZZccAQG?^|3In@>1lF*#}E$o#1>t2*O z%QScCPhLPW$QbXv5$Dq%XyzoRr`EFw;icTWj^Yt}jdx~jLcq_#JW;GAk{J_*XnTw7 zRmii4SRVBo*(>mZecrvKjis)1GNQZI=wsnef^++yw1>_j@v&tKTz06?n5-%t& zqiI|;g*H1``;Tx*_b!@i-M?)w)}#b(xVbl_WtDvS$ugqN5q!UF9ggw}=086h*%HY@ zNz&J$6Uh>R`>QQM$@`#YWus(eH&`xR)zSCwQ6XR(@MvHqo4s7SP8XK)#rl1``N-{j zvveIl?m5gQsU6v{Vk3FEd8BslqIoE>Pgq+tm(u&z-sCu{$Vh6#vC2}iDoR2UAc8#C?5{CBeGgK&siA6ubD?h^nCCB`q_m8~ z2aXbHj?nJyXS~m2V9OzY` ziMXj8*pu-u&C;Ws`Y=XEP+nS2nZ1<4yaIX*zMi*c&c$}xhC!0FOKYk}$C)BA@(;&l ziLe=CwP;j~cF;aX^~1C0IIeg8hiSqcfoq~z=UgkGQa=w8i9Los-L$JANX6xBc<~eN znK+vDOIFdOYkTe-KazRX1w4?}lPH6cP4;{SCAP$DFtE3*n1yG4uJ@j>X=57fL(_Rx zM_edo8!sK_If67E>NIzB~XCaS*GddF6Tz4 zmdMWyW8G&P;q#R=PicuIHX7UNJ=lPK!WFw56e~_HiPW>Psxn*+WOjit3`o-s6x=%w z5%%nG|3u~`u`GiL5O}R-W4o)dB11?`Q~op(7rDJw!y;bBl=qSyv~pOzEDN--zEt) z$A%go14aX;M+WbunAc}D``{gt^Jh-{jJt) z@TQlKN!BK74YyrW?{uTFgyv;HIO*ws^tS>(^5RHhl9bfs9pi1ig4R73vA0ETqwf(B z7n|rgP@*3ne%Dx~P)7C({U-vS2VcO{4_A%?Kj^AYxqCL W5(=5eaZC&V0000Ydx+}_yA}JAevpx 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 QJ^%m!07*qoM6N<$g1LV9xc~qF literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..92c477913381ea9a0193273a2d2227026026b676 GIT binary patch literal 12205 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

dSU=t(bQ`ivi zwME{KZf&%XWk?$jSjMYX*%do$)lkhE32{VEZ_oI$w=eKk0SJ!(p!NwKjp1ul5Cup> zFN3O2d#D#~M%B8#Q0%JFs90wAx^3)1^o@?ayQ0^K0cg{u9THk6v$pF7ts0_6WJUTm zD3PNp$#K+IbA-uh%-x7pBpwvq!NE zu@9K<-0;d%_^JSehXG6i5a-7^8XkHrlyUvoU}g30vjedu+ay3WVIah!GN^KkA>9V{1ooU>9ch`^bA*ZCHrx z@SI^ZH^f9h^Uw?kiLo9W>=Gx8FU`LvP|FFV0#Fg|TmZjPa4~@A4I_k5a*H6J%;6Md zg=KJ6eLL1rlBpfckt`@B6_%(CCA#`_@N5zcWqI$N3NbCQ{$pLEN>0z5s~pJ+SeLLs zDga?8fN7jM-Ta*5O91l0(=dNolT)HDAH>KMtV2ksY;oxpDCwD&-!*DzpZy)nr_>3x z3hJB3`_mnooZh+8k}W%ZJ%P(*1@dGZlqIHW_%)4U@OBv9p;nm7c@6^K`0bCcFMiJ{ z4l3`-ZB`iN^vtQ!k}bdbdIEO{h5~?(T)hv#$BiIT7=|}+&M7FCIS95dQGu;E#6h7k&g$0l<@F)J|n;5U&wNfFY!`fH>(WMvJ;9)J zWWI_5#9r;8w2WcTv(#T5<_{$k)sy^cDDs-=2l z1ETyO)OPv5c&qh)hWNT+Gz~n(Wh7*12*>m}URV6DusIY42bn#8@wA_3Akk2f8G55c z5q!H5(%HiZEo4rof43nn-jJcmcX=TV{R~(`_%NCjsL#~>oIu$iXz18Hz41Z3uK0Hi zyp}LRi!XRJp{XGk(a;J2{sG(yfMzK@8}yFn)`wcj>ez>Ry@Zk6W-4z4x_1{ z3cxLmY1m3*QULHUn2L{P4c`fx7ZlD2Xf(o)MyLREd;Bwv_qEF&htc#w&8u$nwsUhR z(AX5fip4xa@IRUp(a?(t!!K;*gvdI_l{OR_s{(+3V52VH75>hXB#n8kVbq41Cp(|z z|8JCN>_TPc3h)zez0$s+7Zip^IK`da28-`|ipH)0R{YA7Wv_5YD(oOPPLQMf5uYMd z>cR01j;5jj;2-EcycPBb0J?hcnlM6#qx}0>>%p;&22Du;tXRwM27lp?aOa7JMHT0E zk-cBt(2MaFO;G{BKj?q(VaR{x#rF{ny{JnJG;{Vt051Z_ZRo}Lil(XnR#2$)MgU1X zy?!UPYHH|3HFKDFyPId4vfx|M)D^&rT+S+djejvW@QiX8fdfqmna4MpMj6xh1dp%>M}Km|*m0(kx6 z=XbiH7ZWTrR|T-*G_N-LJLjHLqpswJUQ{E;$%{VKd%Q-YxectWh32jRR?rvuD(_81 zQ|@mMXO(N=6sM$r#z~2n1TGZ?u%eLr2lPdc<^IAf8r#s&3u_>h@KExXJipS2rtO6W zmzn}tq44(Y^tczm)c~#qFy#_Z1`_%oI4^$%Ph?%PxKtIu9#wo7qz6rG8^aZWW}bC! z=*0yHG@fxK7yNZiF=HDngcZOMBp9psgD`-bNLO6kEr)OgX$qkCL47rs0{EUgwqdwH zSOMzBF8%-){{DOr-~j&rZjB(%KymtX0K55GxAFgncXAK z_$mbeHP&xUgFpeq1BmANhiL9wL~!z+jyD9eDvyarUg#P|&a)}u4A?UMlN|UQ0B8A6 jdeD^U?8aPh(%A9;@KI!!1*YTs00000NkvXXu0mjfb|y0E literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 00000000..06952be7 --- /dev/null +++ b/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml new file mode 100644 index 00000000..cb1ef880 --- /dev/null +++ b/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 00000000..399f6981 --- /dev/null +++ b/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/android/build.gradle.kts b/android/build.gradle.kts new file mode 100644 index 00000000..dbee657b --- /dev/null +++ b/android/build.gradle.kts @@ -0,0 +1,24 @@ +allprojects { + repositories { + google() + mavenCentral() + } +} + +val newBuildDir: Directory = + rootProject.layout.buildDirectory + .dir("../../build") + .get() +rootProject.layout.buildDirectory.value(newBuildDir) + +subprojects { + val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name) + project.layout.buildDirectory.value(newSubprojectBuildDir) +} +subprojects { + project.evaluationDependsOn(":app") +} + +tasks.register("clean") { + delete(rootProject.layout.buildDirectory) +} diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 00000000..fbee1d8c --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,2 @@ +org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError +android.useAndroidX=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..e4ef43fb --- /dev/null +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-all.zip diff --git a/android/settings.gradle.kts b/android/settings.gradle.kts new file mode 100644 index 00000000..ca7fe065 --- /dev/null +++ b/android/settings.gradle.kts @@ -0,0 +1,26 @@ +pluginManagement { + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } + + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") + + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +plugins { + id("dev.flutter.flutter-plugin-loader") version "1.0.0" + id("com.android.application") version "8.11.1" apply false + id("org.jetbrains.kotlin.android") version "2.2.20" apply false +} + +include(":app") diff --git a/assets/tasq_ico.png b/assets/tasq_ico.png new file mode 100644 index 0000000000000000000000000000000000000000..5efbbdeb17bb4df5ff7f304001b0da83bc56ccb4 GIT binary patch literal 42087 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 z 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

;vy-M- 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%0AoBKOcIJLu^I$H@o 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 z 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 literal 0 HcmV?d00001 diff --git a/ios/.gitignore b/ios/.gitignore new file mode 100644 index 00000000..7a7f9873 --- /dev/null +++ b/ios/.gitignore @@ -0,0 +1,34 @@ +**/dgph +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 00000000..1dc6cf76 --- /dev/null +++ b/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 13.0 + + diff --git a/ios/Flutter/Debug.xcconfig b/ios/Flutter/Debug.xcconfig new file mode 100644 index 00000000..592ceee8 --- /dev/null +++ b/ios/Flutter/Debug.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/ios/Flutter/Release.xcconfig b/ios/Flutter/Release.xcconfig new file mode 100644 index 00000000..592ceee8 --- /dev/null +++ b/ios/Flutter/Release.xcconfig @@ -0,0 +1 @@ +#include "Generated.xcconfig" diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 00000000..bcacaf8a --- /dev/null +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,616 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C8082294A63A400263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + 331C8082294A63A400263BE5 /* RunnerTests */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + 331C8081294A63A400263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 331C807D294A63A400263BE5 /* Sources */, + 331C807F294A63A400263BE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 331C8086294A63A400263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C8080294A63A400263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 97C146ED1CF9000F007C117D; + }; + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + 331C8080294A63A400263BE5 /* RunnerTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C807F294A63A400263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C807D294A63A400263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.tasq; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 331C8088294A63A400263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.tasq.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Debug; + }; + 331C8089294A63A400263BE5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.tasq.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Release; + }; + 331C808A294A63A400263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.tasq.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.tasq; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.tasq; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C8088294A63A400263BE5 /* Debug */, + 331C8089294A63A400263BE5 /* Release */, + 331C808A294A63A400263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..919434a6 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 00000000..f9b0d7c5 --- /dev/null +++ b/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 00000000..e3773d42 --- /dev/null +++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..1d526a16 --- /dev/null +++ b/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 00000000..f9b0d7c5 --- /dev/null +++ b/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift new file mode 100644 index 00000000..62666446 --- /dev/null +++ b/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import Flutter +import UIKit + +@main +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..d36b1fab --- /dev/null +++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..0557e1ab21e98773ac6ffe97d2792851d430d609 GIT binary patch literal 196586 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%0A)IU48?g$u;%M^Dc1z3VRA=y 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 g%r z^=<;Yuy@&4fm`3E4$|t0&kd*32rE6oaRbF~RKdy!k~0sjbH6SDVPCs`dS^*!tS$|$Bc=%2TPpqbd_u7@*3nt4=!+FvPyq&Li9{sd^j(6^Z_w+T)^ z;|)hIFIpJnfoV%hj&+^&&zu3_%XB|j2y-owaA0J_9)Y^JY&5R8aUF;L1P!i8d%?Dv zvcYikg>oy{F>R&nU&*uOXUZ~mARqHIy8$JUuf=pfarijjYADmdR&M~h#-3M_&Ult!=ES@2m0|P{2O&rAk3!ZqukmLLw1y{9%35u3 zq_o*1(yD(_J5e*kcZz8!F_9CEOa=!3h!VC(-tu z>T21Nn*Z`}aPzCr25#K8=A>u&`;xB^Cq@3|n*+tdp^zxEy^3E73X@(#->1ANpKiU> zf}y58Ni7v$zG8NKYdJAJN9(o5nzT*$cW%oI-49qYWuD2vau`?jO_!yNgl&dVj2;jZ zlu|}R3mD**#hF6CO0u;1S^I6Y1-(ITvRE0SZEDE8A!EWCGu;^PI}UFw`V6T{G+PqY zT0@s`Y*-2Gv9o-xBVpdYRVJi++ZY+RVskHUP9V+K}lGG;BxjXH+ z)oOB=2XGPxcY47sUg7xF0>|@1$d>z?Nej(Oae>u~pZ#mQDVwAP>Qx>Z;AL*dm#-Hv zF$MY#;<42~go4?4K7LXa&|+Hhc2fNsojghmUuvDkEABE_s8Tbk4HcSyA@hh|7FsLe}7+IyKO!(60{OXMPW*JX0W% zN(fM5_Bnb(132cO7OTs*KyH85%bmxLb@k$?5QZRwM%Oh(fHD{L3ny+ky?Fr{w9$Bj z>I|?V34LoTnh#dolM3{}f>>s_lBl|w3GmzYH7- zf&csqbt+*mp*X7jZ(G0Y&#n?5T;O)`z3Ex?N&8_Q(I?2|uRodhc*RxDz3pjPF88{d zojj=hsH%WmRu0CR@rK`dIT9GE^Vc4BT-4U(7+wD*)!2|bxY*JeOmmQ@1QrfV zc?N1r7yJK?`8}!Pi9cE|zTeW%eG1q&j!gg*c()~!U=)rd*hL7NWlHPuDP0z8OPMyg zjfi;!fi;e-6ou4-M^8gYmazNkbpBIjTc2!LZ-+m3f&o^~JU!uPOD)LE3cJ$O0x#=M z6c3NAo2FKVMKh#F*rqJ?T_~G)mjplFBY!r9=p7oBDWS>Qy5)BNBEQMnDGvX8&Mbt+ zmIOFZH?%ZGISrhm`_T6E{k8eg=LF6R5Oj8owG)N%sdqufLRM`J zi-pQ?X%$tnq2X|5`C#X3X7PivDA0Hh<4ygLZ>8f{sg{-x?J`B-c7jS^5TaZ`=n~Ve zi1z=$q_MxuJ?~07;=j8aIidP;HTAcur+L^K0p|oQiFOJZ*hmWe+68bY(8%QeOCQ3+ zKNfY`e`6tFExcp}Zwn<;h#W77zlSa)s~XgjiBKRz$@7?&R2p;lI;q+y?s?WsuELOg#>!uDty2Qqx8^QKG$@=z$U?Dv*`KxGim+LN zAs_7L5-7^TEmGItjED?1Rd<w_2$8>xQl1 zH!(V=+<})M-8!U(5U#19?~H@6_c+Pw9StD(eT% zCavRR?WpxU!iD+;3zkWT(}KwePo)(`4jO>AIpl2pybtQU0nIm?$@{SX+&L!6 zI8n!lj4vQKh=bpxVFS(k3szTtc3oYmTs~pL3XL-A!%!mW0M_~;R6g~(hBc}upH70) z67}ij(QKBtg98bypA(vYHjQn;& z^Ni-uNL;1Yw$P>a<+M_iyaF~Yp%(Twnh975!D9>^%` zY^{+8#UZcb^ww4tx|UPUjG?AIy~ywm4ArpaNPzve@$WPRFpHT`;r-uJ=g17k zEwN6S8t_rnOz60rP-D)*+%EIT0QoJa5TA*#=vo%5-@ek7hnCgjH??a)8_1umO$GI0 zU1II7xt_wFK}|3L3kUdf{|sTL)~-eA6klz^#l=do>f%DTv%XEMfC_y2hrzEIdK_0~fv86}ye8=t11cRH%Ww-d#{`q>6Y z-(GHUsNjj+R+|0YdCQ%Gfy=Zap)&A4lV}z;X_33WqQ0K&FMtu|&cfD?7dIKwyFdqJ z1Nn*WeOcnWv93+%H-n&>UsGn1^Qq&%(cO2%X_OqP7mo4S$>$(z#QgF+UC&YN?HS3{ z`?N`ZLL)cniv6;TrM>J*zp6a(cV&P*;l;y59mB+kld^I`N6tuXnNRS@U6dc+Q(x4D zqUtH~_IzfKg?DI~ONB!b(WN_g#QY+hrk28=;idZuofGob!fX#2sH}E?)>b`1Cn6Qd z5iNDp8UBs+%?bn$SkU^;alWi^Fxj{IPxFq&6K8q{KQ^=9g=W5Q`Q8_ zaBcr=t@wuyU_XvpfXLQ2998qY_gor>c%5W%2y}uvG1Tb>&4gV12WNqkanX#5+n9ty zfA_~~rlcotlq%8TTwAS96jhVfc^5T zW30a_n3K8l^Hp?z6xcUe4ytM?tl@thloP>5Ce{bw;x*Sj+{`M-2q14}Qwjnrchpa| zeCH0MXQQ6Isnq>GtMRNG%beUdHq%c{ z21K_`Tngu(qmh2=FdEmERs4k2Sn+3l8P(_Ao9ROVQO3*W=)irYfRZ6S!Fo@1;S0BP zaXU@oJ_B;9aSxjE0FY_sC`h?~>EGG1@VU{sjt0hCAV&`c(C0M8i`Q~jr*qxWlZYS# zC-L^p)1sHoo494=9*Rs+{*FYH>DOkHM|jom*(5M3NpGaYW7*OG4qKphtKO9}g(Jd}I z2q?}ZHx@barIj?x@m-=hX4i<(hsASJ|BK<()XUvlr5k6GyTIg>;fb2=r4fbL%_z_! z#^LP#!nwf|wR4@+PyJ`5s(ROgwpfr$MzVa3h1D*6;KIhb?BD!U+%So$SOp(=_1FMB zZ0o{&MYLu6Di`E${EW;kvthbSpxNFZ`1-v(V!Fd7|p*!rMIC@mX;C z;#}Y_C_#%O6m@}*#zO2lupIsmgI5GG!7-#`_twq0q#p`}JdvN1vH+~-dU0)z1N`^G zITXJ*6-jDdE9e)e{y0 z@bOY`6K18u7t1SfrCT)dA`{^h)cI)7Fxe$N$u&Lc`k(0?bo)T$<94f5ekQ`)!Y&jF znWH2XrAMhf6UG1+DY|b0`!pY*<5utY6DJN*leo|h^GnQV3(nxs?enW4BF;=NiBce) z%?CcXpGhe!T+5BEs7-RW!YV?D zVLa^Q$;?Z%+g_E`(&Oz&$$|s$xtcx^t$|9ROc0AEK6*Vj1!mO7Q=GOoArXI(A@YvG zk>Wi!h5vhJ)P?w=>FahpDEawsv!%$6*Qs3pJhvrz>+r$%Sd9E(SuADftB>cNBq@)|Y#N!yx9-F$hCsfC@*tDPv8Z~q=Y&mHk`ivZ; zQ6rQ46Hl>$lgB;((m&|2>xpWB>M{DD6yWK^QzB1-63q&l6q1!;e0D1lc;WyD1nLd7 zzQKXa)~grkv}P%dLM>oR2;j~1|M^8TluM){Yfw)E)CG?GkzI6v^?9Id;O7yh=E@PL z0}u@h!XHLs{LI75+gqND)Q#)h^Eh+_-ZFiJ-rBxH=OY%IVJ8O1!0#sWqLhsKpx7*V`=jzBb(Ht2fMTv(wT-Jqsx&U z)WrkH>imuO6ljvh$g29Sik-|~@<>k)zsk??=DtTS&BZ~xn=n-0u#MR1Up)bT*ip#E z(s!s51@PYrUh5Zyir|UMKM?DOctc7&8$=yoQ5L2WS1Xk6>)B-*DV zkeOkG3x$Eu{+qxGay_wC+u_S4eVg+K18LH^o- z>McQO;^4Y2_TklFjD>b2F$_~XwcE5X+Y#Shc2rwv;rxAQxDP!00I@p8Z_Th_o(W&tm`hZm)HBR6`SSCqeCC^}VuTzc(o; zAjAL+P(QkR#cRr|YUy|b<4Xvk;Fc*yTcm@Q@ZGDT$hw_o^;Ug)ByP+Z(`Q&qE`lnw zTp5d|)@JgcS}`6HP(}*Hj!Z;P{n~We>guk%^caF4GON-wK#Sqm1i%;Q=!6&JKK)lM z4iCS_pW>D^f9yJsr-IvfpXBK~E}c`$B0DKA&+Z-A@AU*L7mcLQ@?P`B=iZ3uAsvw_ zF09%b)$QYZn2%&!e~Km3KFv^GKgOU|QisSzA_UvZn{=OgEN3{{o%n$lOV7GIruMqD zrx5BdKj>se#eJZ(LN%~?ai5*?!4&l5acfX{A4=9D@#}xqKmRedjCr9`F5_!J`qT|M zOBAE*g13_?JWU^H8zz~{)>O00v>LhmGH2mizhvd{#qs>;g*rJJsczw)(xO}Eoc@6d z@BM1#-*#d*7y%RQV4{jt7Yw3SHukvpR!5vZ?FOVj+`puDVs*>MpVK5k7smzXYGTbl zt9IFucEt1uWSv@2l{4d0Dje!{b(zFbL-|V37|V7b1@$HgJa0hTcIm&9k3&3pTP*D9 zck1%^etrC3c!rr6`5TKueA=D&{#zSeA`k#tT@@8IcZtAu4w_10hoqJCyI2}%_*xzL z_7fyEhg!mrMJw zff9pL+jNPnQ& zVl{eiLJ-o&71h|nR(uA0`y5}Iejh;k3>yib@?Be2Tzp)&q-6V2y}z8CCu)HXJj7u- zk>VfO7SjHwrYnz!^85bJ%rMBlC1i=Dq-@#B)A+9escP^Wxrn?zv}u-*fJBQ5W+LryYigJRSeNI)U&+5@eJE zj+q-U*)sFuWw{N>6vyY9g|yKS6j>C)`P#CWj*b3s+6-awa#H9yo_rr9+*r`50veST z71<>%cOAzeLycqgCglYKF=boL8VK#DiaeRK>%Z>$)*+6+a7G6_kO-d-X~iv4-vFeZ zw~OOf5|(%D-qO0<@+7=*dt?EAJ$f@Bni(B-=p!d)aLY%Yt*#JP4hkx{>w~Q?wnRic zdOL=kEv-?wXADw-LuXTD5F1;Me?uGQbR!qU9ON{o6>xnELLSY z7jwK$Jkr&fR;>S$45e>P@wC#!|UTAlK)nFNnFlSqN(^|oGfdRZ_VNR20F6h$3kO!NYT zd90Z$x|1&d3l2hhO-~%&s*DO)kpKuHD8Aq8!aM9{0BW1|Kz7L!%@J`3;3~7I3iXw+ z4rR1IeABD`w;ZScPL|Ie$XLAXW!^e81er~Bz}G>6Xtjc#&RR4GDB~Ck$J%+xI(BHS z7eq8uIDZ`w^p(MCe|rl>tu6H~O`BQqY=_qdHPp||_MF!!*1i3^6A0v+%(uhEj++;X zU;sWa%~f&ZwRI+f^xRR~-urp29S`9n*mvia@tw%k$m=)hee4nCjlcuwQ+#Yi48EZX ztIeAJpqEPn*z!Mqf_T&I-?p1;w600Yj#GW`7lYE`6x=dUKD*&Q$=;y@Yw1}qMnzPQ zV#PSH+nV%mxk+l6maHur4m(5RfIjFFQgW!hY4}Iz%h%0Wp{qcAalY2UkF-LnQ>c`- zlztpLFEeyco}Y~8M~bhk!P8I+R#WfAuITbMDtc+;hjDo|r3b9n^Fgm^gjy!~&qx*X z2myx|mvL43YE zbW|So#oL7u+cfSYEXGsOq$|{8Jov_$8agh#LwEZdoXvNs{J>98lr#vix!Lh~Eu)s; zmY-_eiDQ>bwE^1lGatg^vv9UMWAj#^maHERhS zPj*yE5_v;WS}sTQIEmhkh9lJ7!!mu~M4%+i-@|!|x3{%Wa!ujfr=(f;1 za}(JIuOt&jhmVMpt~6$0+>^v{!D{H3n)D z`jS?Z6m?TJp!DNg7ok{3e=6Z*8XKg=vXtuuZ?#Rn8B|E|#&|s&_5X9{`!Yu7A_CG> zpuVp##s^ZxZ9tK-+n$DON)T;hFJt%SEybAQ(Q%-776bPR{yuSIdr#FTmK6s3ULf9p>KywHIAgNziwpY?VXw-**2LYck&RTS-0U zu~8S|kzL5Ia&y>z=;yaG??!tAclPtki#W@+w7IC3I(o$szN4$#^cf&VljfOr$5Nph z4H=>uJQp@9Ktek+s#{`X!G+N&io}|KeBFF8E^YHyfHyr_6ebK$Nf0e-6h|NIbzuoA zRyGuX9`@c;`OXUJKz}McW3f{~wdgS9CE3>{qtUz3V*+L+9))7wDhM?yg5~@?l!=He zl!2XRDpSdkf2{p#Ws$Q1KPiGig>oJc7rRs>w4#|PN>>w2)S4bGYNXVE!W%(*S;C$& zR7PszMYo^`U3;>F;5-d-HecmTKt$I|A7#BLCuHkr1ek)cfeS#{#?=4d1Y3`wqi!nnUvIu zFPl1Du#jS#2A5M-_7?fxUju;3?duka2a1<>I;s$}P>Z9Y-v8ij(>b4fSgx8SsD1(GLsD^R{5i31SU~{_21`ndD7kVT3b4MiqnegLI|X`MI<`Pk7b5c$iy{kzT)w%UQj5nG8xbdrmR zTin<_KrQK3#v{B|6e3_mx2+H_QlTu^ZpZF*Of;v3%C2vz8HRet%V6>MZ@P67Y9?4(! zsM7+4|3`=aaek=cB&>UTjO4Td{i(WG*PZ~F;q_obp@}OB(r*dRB*kz;B`9kbGs!Ck z|87B9(`-UZ7IENd(|~OlO+-{X>Z1)1knp`d)46KOev9 zl(ZYqAUwyFm_D;na_`bkp9qSMBr2#3Lye~~FBuBie*U0c>NuRO3UddqcxOOuVT5)w zGe{48B%5v}tXf)S-$r_y zoj`owZ^jtnb+=0^`m4p9^Ewj|rvz1W@#3Y<8Uec0*zyaXC3ni>-q9bpgYc{qz3b(& zekrq9W@%AyoxV8BMcm8BIALbS^uESLx18@HHjLI`7YyDe0$c|$_I=y@43yVd8G-u+ zy730@8_+rq12#opj+uK%a9i-b-wetBo)x!BZbqCqv`f$Sfw8m^#P`rL@1PYp77?k~ zXNdg+w6wLP3sc8->Q&vo8?->L?X)53yc2)e1%Uu2SAP37L)THK4=gR7hZHm_U-g7q zCMN@l<)}Vx6@`F~G7phA7qroc|AA`BIyZgu2^|m-ZVmm~bc^mR0Orqsk3^URSkXYw z>RzHZq~+j^*L;H7JqA^Ojf7Y4d+7Y)2H|Z6-%XxwcfADiZJ-}h03Cpq5}hoY#@0wK zDU9+<@H2VxvIJ@%%xk|^^fcf(x~ zw7ZhBnNdf$dV=e8H2aV zR}!t~;LI%gqA=?awwiD*3n%Ok&f>6PgIap#dUO`Nw4wPwnjXFHfa|re+x$_;*);{H zvw$9FF}gArp~O#~xx%I-1{!E6v_8bcxqWvxobWqyA89-D9Lla?(y^Vz%rKoLN9kscl%Zq zq!+dMU)?aAImbCDPAcyqFcLGY-G4LCvjb#t+|20cG^LsF8Nxqd`e3(ve%oi7aaq6f z-gvCI_R#6FI|fe`RrIiqK*dw?TJ`iYIPIG}1l)QMICh8o{YXO~5{ymF+&_7qvQXVe zN(u{mpMX>8KXL7UW4gYTsiC072DxrfxQV~{k7b_>o?fS6R=>eX-DvG8!*pRe<;%dm zUnK8i`lHM|e{Y7a62_5$`CF;wpkvOJ=Nri&t@W74PV^SkQZ^zo@eCWD~(B_ITO7#2mCYj}yyJGDhLll zz0a`Bu9tZ?P;l+7+1lg%_uDl`+GDe4up%GA+LR*qUZ!i~aV|U#kv6-M ze0z0v|3p1AIaF;s^fNDRl!N1C7olAi?BjM}N(N_WH&>NuhL~b+ZW_SQ8D;`q_^ztQ z%6JFnPTYKb_%~*96=)Hq0kkY{rgJ(ZPht>T%=mIh-p^!t;=2SRo_P^ib)7yZ-={T+ z=wTQCs^zGd_bF;WF9j5(oYN`mVqMkg?@}8wbBU2g9owhas)P8KK&-_$fy!fZ+JeKB zEgJFOdb;i_UH>>x%;Y4ahWBnn6CKJO9Q44f@j#I_9rp`pm%yQr)|1J z=q(APY6M319+3h`Mf>!BvIpW6btm}ybgGdN9aZ>T6;X!={7j5pO|I~zI;sWzk{Dpu z@v5{+0l>5su*B^jH3puF`6&}mp;7b%S^6Bc;q5;MVdYXxHBnoy4lRYB9BB*7y|_6z zg_+y~c+uE!uzG_sX-PRJ$zH zhz5)}u5jaOQ%?@$9PpfGb^IuML+iiLihANr{Yl3V!Vh!p$*QTY(J+j87A|=XgdUSC z`{%xja4>nO=$CeE1`6+E)kZv^+OQ8poqK?QCSUxmoFq1``#q==zFS1cp_haHfhCw7iT%6{#3ZZTyyuWjdf7J@h$up(i4pk=;YGhyQg_(f{|%e| z{DfH}XCp?oY>BD74bef_4ZjO>Y&$2=rx%2gZsd?l z_$XU7A_74^3e`6hqW^g+ZGlc{&=q&oi=JEklXQGBd4%EKEWs;{2K ztrxC+e@RGdtSR)A4pQHCjpEhEu#!7X;`S=Wxf8smLO;d@C)rzYpTT)$x%ae7F*Ee@;4=}wwv(^ZNzNjNv2zFD^yCJ7)n1oP4-ub1Vd=QAda5fL*22dN5JzEGOc*0J_ z2uU1=D(^BvDdltTV+q#_w?~WNO*_k}pzfV)uEpSUSXOYJ${Gi*m-RqIME>-3HCB(M z%C0GVT_MG9r*dWYHZ;OFql~6nxFg}5N!51bA^W=Ym#5&84}kQt-G}w&ow}bStQirB z6gAG@5gZhQs(1a9y3EgW`67#^Ibc-tjW+l?U`ccq;D2i?xL~mjI}`q%Hxd@YBk_Eu zul}`12-2t~<3J{K|0>ri^qJSZwoUwh0&HuK)PDjA7eti$?PB?_YiZFdv z+Lx!pIJK|r$E!1RT`Zq_u91ATU0)H_6;9sJmG-9y?RH&plm|>*Tt8JfY7_pW96>#_ zs?k$|5Bee`4~9A&V1kI7$W0T51p!F{L)2U-R zlxrg6R#3#}+Rn;IKU9l7!)0l!rb=8hfsM-4=Z)49ogovz8G|&ynf%t}`xI^WzvC4r z$Ot@mgQQITUqPDPX+a{_n;lq~n4A6=_o3>8BH9etA71d+b~j&Riuda8L+Uh{mYyn9 z3pStVtj3mYX~VF?+5BH=?j_Up1~~6v;?g4%`naNW-n;p;yu!XCJhAa*T(ZpbmB$yg zi%|C-;YqhkmG$y+0|AX}BX5%`_+g1gd!-+^sMC>W#noPRMEQIQ~^(}93NfMWm>Xop{72C^|2hllPlZb z@)%1|tb%jEqq2&p$ZB|hs2W_rGK`8c{Y-8i{|4{KPXpbOLE}x`c4J|_WF>~r2rBlQ zz_s_l>QDrloQt3)x~GOC9(FM56q1*pEUm%m!cmqa7&UlGT=H8G_p>{=WTisJI5ua5 z2^z(v@*`v}d)j>lJU}YxlkpDEXM|$tpH|J*7^e3Gr5Z%%5XgAQBNNSMKxNe4WIE7y zY?#a#P*^5hI~@eEf=i+h0qqk9k{iaNyduoru4=T@DME++X=fKEx02j;CWgp_X_oPq z1@50yVIil5eN9TAwVGT+9c61@UPumMwBW=ur4_Go&(NLG^aUPrubp=~r!@n#ZFgX3 zqUQd7#Orvv?&KQ&i{zJ1Ia zwu-@6n-ML+p~)%uh&nwGLETRz`26^_$g&$OL}OBV=QgNxF}(NiuVa zh6XcKrxj!Yyp`sW;b>;LdHyB*+)*`-np$E!w7Vv{sFfd9&aK8&*1??Ww7ncd&YF5o zUxbcIwd#X$Y|?kRf}{~%R2+gF*uBTv5v`ZV$+(EYDxS>Xf|G{F7TL0Bo}g;t9JT>$ zPfEfm16mx`sCb7y!#G1RqMX(J(+Fo~z|pl-rzTvQbLfuUsGTUs7=b)DJFg&>%g~&# zZZ=bTE9*0FYrZ9;GSbrK`F2*|Yd|ox*;KL)WHY`eG}q6w0@ur?f_(h<|3?|e&87R_ z(<~Gb_x(`P7kG6ezSpRPNr<2!)gl}_u_O|Totb$Y; z$oyl&E?qdS_3Og3J>Dn9tK}t6aJ=oRCE`zO{b3gZ+JE5L8(fAMja1FFcnmZC>m<1t z_lRvjFeeP>4$!{2SoQsj03f~(f!sygDoz^Zx-|_>iUG_i7H-DY(nx;cZFs$uqkW*% zsSJQTyp1nCRGuIAK2tY@%6rFuzrGvEYJxl_>X6)nbV_A81CpukXDE8b4zExS|lY!&`7visV!hFN>!4duBHyC4BTdl+Dp z@}pzrDL1P`b99gS{bd_WlCK$o)21ar0mk1tX5&y|@l z=q~bdxkon2iFoT+t#=f)Wm9;WEF{l=*oPsmQuzm&-i;bh+qw9waMI8C5z;aW zBW_rv3m5fA@CpOy4Mc4JU2ETCYH&^KNN^_`a&BJOC(iv?ieO%JBpAri6n5Nw84EZz z>3y`H?45NwvhLE3KK2U`qU5ZBo^D;QR1u;#=-KbYGVltHYw2P9 zcZW?IbNnnCXUbg-;Nr&ISPljrqs%(&5~-?ov2%6p#YfR1r%M7A{g0i?{_Do>>S4Rd zAM6$CYrFGdi6_Z_MujpyMR+UY3}oq2%2ydH-{84*ShSn7sJNJ*V#m<(a`ZtL!4gZ(V&t~NvkYd*7y z4xH?&(s0{q0`j{C5Y>oINfn6Wa&j_LQD$adsGk%6{+kMHs!nm~f zQ-qZAgWcUv2jzd)+T8Gws%|q+&+lgI@kFy3hSjM0mtAG3r>R;k;oWpPd)W0=#N zn!D;5TCyy}D|{2g)a@@{sc2V!?19}=Q6-gH9Mzm1Q!xXm7gZM_sPL zmWA9s5rvH;wkT#PDQQy%*DThJdB}q5>wfbnhb$WI*Y+`R@LNinEyqC=FB|{NQ`u== zc&F3akI*)@CQ&`#?M#o4ZMSAjZE$@9UD}Z%qUfpe!cXVMA)@jiA6{Q4nlJJ_1apC? zE40+Oht6vbUT*%bJ6VhiSg2;vOUXcjpb8*Xyuz}c<2ALx{jOQCjSIRPwS^>tunpib z?in_WUijGfw7sUQ-04SL3LL$M$-N>w77ahkl`oh%1?UBS5du9g3XHwOr17U4b;)9v z_jx7r)hg7TpQvtLPuIJ0+Hw8M&EJKG<(QFVDS61_aSnRbil1Zbasd8!61U;MHxbt-K8XHtyR1+OBE%#G* zAdi&PR$NT7q8)Q!*M*E?vaT`49VFiO;v>D5%PW3I*RU7TU+#T=n0{H{BWZmkS||S^ zGX!;KUqMlFo=^xDP6T+UiLN5L#9exg14`urD|fy4TUcIHXnOs}xfZJlqJ#x=MY%Zg z)B_WJyR#R$AY$w4Fr{UI{`GQ=AjV<}z8FPMI{9gDM4CBO7;-3l2tgI|&qw{N)E_OD z`jR69xVJ6}A}7#y%WJe8o^(P`5MKdbt*hKL{L)VlJ>vWas)!(|Fc~IyY2( zj|sv%57rk(7KI!aVeuONj3B&vTvIAsAS%N)An-a>Ahujq6M|BXl%B)6x$m$v8Q^L& zX!Q>Q4VkEA?{qk65Si;B1d(lhrAPYnaCxWUt*KR#{$(xGW#eT#BXpf0gztE4_`&{G zg#_mgHRx6k)zK4f^hB^j4JfevEz1*J@i~yvYR#(!gcBaFI{bhjM=z9%w92H(BEZ6; zM-V>G=N53Pt#H<_xJRfoOF^C|$Zjf%c<%xP>1mT}PnH}$P~p{6@TuDD{D{?dfv0ps zL2O~9t)XOzFO9k4-mj36eg}9YQEc?nVm0V0u27{7u!I`|Cs6gsq44Mq<+r1 zQ$5>@H#Lcoj}W}NBW1`pb~uFmvmEqxUoCv0O+&Z-GfgaOnNXujhwzI;#!%9ijU2C{ z!D}Mq#gQuT)!=apXFW{0`mOg_EMG715aqiHHVZr(Go=SMB#J-ic2Y^VSW@?GZMxHs zLBv2QusLq`mtsi6Qm5v=k?-mQic5OnW6sr1@1vw@@7ciT z?{urF&{BKDJMfyj>eoC%(L{3T4yL~wZh3^L{7CLSi7RC~9XF?f*F5osgI>&+CsCu1 z+28w^_0J!X8EwS#42d691ew=2iVfm^T_c0Ea4zZN@WH5eV7`%Wg;i5iJdZWx8$@Yd zdmzXT1sOY!h}XJuQko0{0#xH9RCfA^i`;SSw!Pd?I+729mTI;Cl7v(s=mbljU67MqJy#TA;@OPH{m34W$Z$gAclf`dI6g z`r|;V_+>Lo9u&>QXjC*~gu53BsCTs?| z*w5R4?USb`e{@}!)BLIjj|@;ZuW-2iVu7j?n1E)d4k?^UWor<$-H~9!pXH=uuJMss z=42{voZ^{`WjY;Yh;TTNP!f#63_gj_x4ZcxVidiT+rJ#=vXkF&(_RgN(osNr93md8 zy$N`>n&{O{8oq)Tvz4kSkDZF#*&CY5;WobPjY`**9(7SbZ(&N4G1+bILYCW$Jv)v^ zh{ON}5#U4dkRs;!8Oec(va9F%w^8v&k@mJ!JAsc!f3%m+sAL_4@c*5t5~e%#OeKkK z(aK8CODB3R=~kVN00t(T!Hv};finS@Ka&P~!mO&pCPd+SOHQAMz#v@nc+qxQhDhRc z*hYhQIX!(-#6!;#{Nnn*b(fcxH)m{cqoE+Xv33OU*Aa^q(Q4d8MziTHsRl1jX4`?I z4%r+*z!a`N2zti!4vkaCXYkmrB(QACihK#pwsxf-UPv+szwS;Jn(hk|fGWrh$te6s zfrO@}Oxo+}*Gxnece$YSOb+qc@X=Rjw?b=^B+-)wGDuEzWQcu_O17e-i*Dvd@cvOs z#*+;cq=$r{R6EnCsAq=JZPn2dCC~CC>g95J7nfz2P3DZCylW>m_un#Gbl#!-;iPDt z6r2{bU|TDsp^%UZ3lK?bFYPC=!4cp5Lu#IRaFhkxWY9B&iBWDZNthhaVuCq;vBBx% z{hmJ(wjU%3?g^(~-<=AF@NjE_FeG2E?5SW~lz-)y$VaMLl~q046+1|54H2gijjLVQsA`2znxgbFuXm6m{z1*x7tp;0YO6Fzreh(QoZ z5*%gvz1~~)q~-B_#6=qmV)cVqF*MiO&}+2ix-jP{HMtzyVvWFqe2Vw&4q*!Uw!?G` zd)q3#qk>4c7i%2nnq$+~7l)>Sb{_^x42fUkaBwtTZV}0P`byKm!b46?er00++!04% z1a5Rm8$BQ@?efFB#2Bt?sN1|gv;0JLW3_ECU|u<&8w%Ppb`Sw(=zbhf`p%)Xj@9GE z0&=3!!iZ`9#W*rlFlluq(qv~p2nmLu7AKm*$j$Hworv1g^x7vg(@r`PN~>TFx!pOy zJDSy*M+eS3oLc9J9Woi^_OiOl`+*OcR4BIEC@Veto^ak6bF*!q8A%o`*cQo2FF)$C z==7BSpA1^-^q0zE>fgsWT?o3$uo&rreR`!eg;5JNe)z?M6_&iq;-;(~KdQ1NQ@OuA zEw@cVbmx3+nhDK_sGrhmd&0TlL?l(qK(v~Jl7SnGR&Q|{3z$6+B)7BwFTt9f`Hg#fO0!rKBu{*7uAyN5}_a` zf-WmsV1Hewvi2aVseoxS*sfmSS((Baj`1wjHwV7S9JHKw|Lc@K@Z5^Cq3c2I99`8u zQTNs1-g3F--g1+bA;P%pG3d^A8I|3x9Pvy zvX|gmu!=gGvRHUJxZZ_mul}$+q!g3#u-$h3_e=NoHnId%@rA*&y(W*NbzfMT*q!M8$^`Q=3J+)bY@%u&nOXteYINbd|P%F+s|k zv=Be=9B>Lq0X^>eD)0j^3S0!L&4&VpiPZx3Jn#;%x5eI|`#l4!0B3=*W`$;;0lWvi z)XL-*GT>Ty4tO0a;NVyD^jbcm_w+fsHw%)snH-;*B}5{QDpfFgI#EiYmevph-3ZIX9DWd0tROs2 z^iElBosqgXLHe;Fs<(?|ujc6MiqakHn&Ie0SdlucF_X?xJmq2yjvr9ws3*(z@l@_LB}L#$5D5*+M7EoC9phCTf&D22>q zAslE}s{bLYfm0fI>voy(sbA>#o2)IbQYn{t`IQ&3rDQSlJB5=+2@UO|EbW~nA5I`* z9ZncH`G{Vc(!fi=)4ALq49BBRy9dKc$$Xs~z>{rUR7o z%ZQ!`))T2l&%h-O`~-Mw;&`%m!Y(zgP7kv0>jiRQAH{f#2Rb^bD}~6}2){>nM#IAX zZYQSpkBgY8`!atQ%ViC$=spx4>mxj_FMVAsJ$00;(-{IQ26IYb>zFBtt>jLIuirpK z!k8mzrPlLjiAL(%S-t=qZ|-NUXrDMj;g06e2UNb~z*Kh!#({q1!pggBRWB2b{A=2r zai_;!Cyr;l!KG7jBDmEu8qD0oyEh9kAPS!ByJz6QJcU=7cED2j5@= P00000NkvXXu0mjf&El&a literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..5e963b79b45dc1660ddafd9795b9df5dc87c04da GIT binary patch literal 2326 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 Z^&bc(^%u}$J6r$&002ovPDHLkV1h!u)|~(V literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c76012997568a9032263c994efc220f974a1c4fe GIT binary patch literal 3858 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 U6NwS#xc~qF07*qoM6N<$g5WTWo&W#< literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..bcabdbcc7fcb8c3742853b58d3aedf1679c3eac3 GIT binary patch literal 6535 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 N002ovPDHLkV1jZo$)5lK literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..1e803b69eea0f2aef799c36e81b6572a87fa736b GIT binary patch literal 3139 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..79f896d864fd51b9fd0ad2af138162bbbfbbf23f GIT binary patch literal 7818 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 N002ovPDHLkV1jZo$)5lK literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..f855f13ae17f7e717a44a534aca73f3ba6db72bc GIT binary patch literal 15904 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 a;Qs-z#pzU}3{kfL0000rdBx^RM_5LIBVXKnDQv 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 literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..79419e761647c589307dfde80b766285fec2a715 GIT binary patch literal 13055 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 N002ovPDHLkV1gl4$_4-c literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..19a26dbc57de892c00301b315489e21f0221e0b3 GIT binary patch literal 14443 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 Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 00000000..89c2725b --- /dev/null +++ b/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/ios/Runner/Base.lproj/LaunchScreen.storyboard b/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000..f2e259c7 --- /dev/null +++ b/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/Base.lproj/Main.storyboard b/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 00000000..f3c28516 --- /dev/null +++ b/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist new file mode 100644 index 00000000..c03a8c3e --- /dev/null +++ b/ios/Runner/Info.plist @@ -0,0 +1,49 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Tasq + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + tasq + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + + + diff --git a/ios/Runner/Runner-Bridging-Header.h b/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 00000000..308a2a56 --- /dev/null +++ b/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/ios/RunnerTests/RunnerTests.swift b/ios/RunnerTests/RunnerTests.swift new file mode 100644 index 00000000..86a7c3b1 --- /dev/null +++ b/ios/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Flutter +import UIKit +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/lib/app.dart b/lib/app.dart new file mode 100644 index 00000000..b17f1a4a --- /dev/null +++ b/lib/app.dart @@ -0,0 +1,22 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; + +import 'routing/app_router.dart'; +import 'theme/app_theme.dart'; + +class TasqApp extends ConsumerWidget { + const TasqApp({super.key}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final router = ref.watch(appRouterProvider); + + return MaterialApp.router( + title: 'TasQ', + routerConfig: router, + theme: AppTheme.light(), + darkTheme: AppTheme.dark(), + themeMode: ThemeMode.system, + ); + } +} diff --git a/lib/main.dart b/lib/main.dart new file mode 100644 index 00000000..47b79ec2 --- /dev/null +++ b/lib/main.dart @@ -0,0 +1,73 @@ +import 'package:flutter/material.dart'; +import 'package:audioplayers/audioplayers.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:supabase_flutter/supabase_flutter.dart'; +import 'package:flutter_dotenv/flutter_dotenv.dart'; + +import 'app.dart'; +import 'providers/notifications_provider.dart'; + +Future main() async { + WidgetsFlutterBinding.ensureInitialized(); + + await dotenv.load(fileName: '.env'); + + final supabaseUrl = dotenv.env['SUPABASE_URL'] ?? ''; + final supabaseAnonKey = dotenv.env['SUPABASE_ANON_KEY'] ?? ''; + + if (supabaseUrl.isEmpty || supabaseAnonKey.isEmpty) { + runApp(const _MissingConfigApp()); + return; + } + + await Supabase.initialize(url: supabaseUrl, anonKey: supabaseAnonKey); + + runApp( + ProviderScope( + observers: [NotificationSoundObserver()], + child: const TasqApp(), + ), + ); +} + +class NotificationSoundObserver extends ProviderObserver { + static final AudioPlayer _player = AudioPlayer(); + + @override + void didUpdateProvider( + ProviderBase provider, + Object? previousValue, + Object? newValue, + ProviderContainer container, + ) { + if (provider == unreadNotificationsCountProvider) { + final prev = previousValue as int?; + final next = newValue as int?; + if (prev != null && next != null && next > prev) { + _player.play(AssetSource('tasq_notification.wav')); + } + } + } +} + +class _MissingConfigApp extends StatelessWidget { + const _MissingConfigApp(); + + @override + Widget build(BuildContext context) { + return const MaterialApp( + home: Scaffold( + body: Center( + child: Padding( + padding: EdgeInsets.all(24), + child: Text( + 'Missing SUPABASE_URL or SUPABASE_ANON_KEY. ' + 'Provide them in the .env file.', + textAlign: TextAlign.center, + ), + ), + ), + ), + ); + } +} diff --git a/lib/models/notification_item.dart b/lib/models/notification_item.dart new file mode 100644 index 00000000..e041c864 --- /dev/null +++ b/lib/models/notification_item.dart @@ -0,0 +1,41 @@ +class NotificationItem { + NotificationItem({ + required this.id, + required this.userId, + required this.actorId, + required this.ticketId, + required this.taskId, + required this.messageId, + required this.type, + required this.createdAt, + required this.readAt, + }); + + final String id; + final String userId; + final String? actorId; + final String? ticketId; + final String? taskId; + final int? messageId; + final String type; + final DateTime createdAt; + final DateTime? readAt; + + bool get isUnread => readAt == null; + + factory NotificationItem.fromMap(Map map) { + return NotificationItem( + id: map['id'] as String, + userId: map['user_id'] as String, + actorId: map['actor_id'] as String?, + ticketId: map['ticket_id'] as String?, + taskId: map['task_id'] as String?, + messageId: map['message_id'] as int?, + type: map['type'] as String? ?? 'mention', + createdAt: DateTime.parse(map['created_at'] as String), + readAt: map['read_at'] == null + ? null + : DateTime.parse(map['read_at'] as String), + ); + } +} diff --git a/lib/models/office.dart b/lib/models/office.dart new file mode 100644 index 00000000..fc7575fa --- /dev/null +++ b/lib/models/office.dart @@ -0,0 +1,10 @@ +class Office { + Office({required this.id, required this.name}); + + final String id; + final String name; + + factory Office.fromMap(Map map) { + return Office(id: map['id'] as String, name: map['name'] as String? ?? ''); + } +} diff --git a/lib/models/profile.dart b/lib/models/profile.dart new file mode 100644 index 00000000..7af0418a --- /dev/null +++ b/lib/models/profile.dart @@ -0,0 +1,15 @@ +class Profile { + Profile({required this.id, required this.role, required this.fullName}); + + final String id; + final String role; + final String fullName; + + factory Profile.fromMap(Map map) { + return Profile( + id: map['id'] as String, + role: map['role'] as String? ?? 'standard', + fullName: map['full_name'] as String? ?? '', + ); + } +} diff --git a/lib/models/task.dart b/lib/models/task.dart new file mode 100644 index 00000000..4b6eb621 --- /dev/null +++ b/lib/models/task.dart @@ -0,0 +1,50 @@ +class Task { + Task({ + required this.id, + required this.ticketId, + required this.title, + required this.description, + required this.officeId, + required this.status, + required this.priority, + required this.queueOrder, + required this.createdAt, + required this.creatorId, + required this.startedAt, + required this.completedAt, + }); + + final String id; + final String? ticketId; + final String title; + final String description; + final String? officeId; + final String status; + final int priority; + final int? queueOrder; + final DateTime createdAt; + final String? creatorId; + final DateTime? startedAt; + final DateTime? completedAt; + + factory Task.fromMap(Map map) { + return Task( + id: map['id'] as String, + ticketId: map['ticket_id'] as String?, + title: map['title'] as String? ?? 'Task', + description: map['description'] as String? ?? '', + officeId: map['office_id'] as String?, + status: map['status'] as String? ?? 'queued', + priority: map['priority'] as int? ?? 1, + queueOrder: map['queue_order'] as int?, + createdAt: DateTime.parse(map['created_at'] as String), + creatorId: map['creator_id'] as String?, + startedAt: map['started_at'] == null + ? null + : DateTime.parse(map['started_at'] as String), + completedAt: map['completed_at'] == null + ? null + : DateTime.parse(map['completed_at'] as String), + ); + } +} diff --git a/lib/models/task_assignment.dart b/lib/models/task_assignment.dart new file mode 100644 index 00000000..b04c621f --- /dev/null +++ b/lib/models/task_assignment.dart @@ -0,0 +1,19 @@ +class TaskAssignment { + TaskAssignment({ + required this.taskId, + required this.userId, + required this.createdAt, + }); + + final String taskId; + final String userId; + final DateTime createdAt; + + factory TaskAssignment.fromMap(Map map) { + return TaskAssignment( + taskId: map['task_id'] as String, + userId: map['user_id'] as String, + createdAt: DateTime.parse(map['created_at'] as String), + ); + } +} diff --git a/lib/models/ticket.dart b/lib/models/ticket.dart new file mode 100644 index 00000000..251792ce --- /dev/null +++ b/lib/models/ticket.dart @@ -0,0 +1,46 @@ +class Ticket { + Ticket({ + required this.id, + required this.subject, + required this.description, + required this.officeId, + required this.status, + required this.createdAt, + required this.creatorId, + required this.respondedAt, + required this.promotedAt, + required this.closedAt, + }); + + final String id; + final String subject; + final String description; + final String officeId; + final String status; + final DateTime createdAt; + final String? creatorId; + final DateTime? respondedAt; + final DateTime? promotedAt; + final DateTime? closedAt; + + factory Ticket.fromMap(Map map) { + return Ticket( + id: map['id'] as String, + subject: map['subject'] as String? ?? '', + description: map['description'] as String? ?? '', + officeId: map['office_id'] as String? ?? '', + status: map['status'] as String? ?? 'pending', + createdAt: DateTime.parse(map['created_at'] as String), + creatorId: map['creator_id'] as String?, + respondedAt: map['responded_at'] == null + ? null + : DateTime.parse(map['responded_at'] as String), + promotedAt: map['promoted_at'] == null + ? null + : DateTime.parse(map['promoted_at'] as String), + closedAt: map['closed_at'] == null + ? null + : DateTime.parse(map['closed_at'] as String), + ); + } +} diff --git a/lib/models/ticket_message.dart b/lib/models/ticket_message.dart new file mode 100644 index 00000000..3e9aadb8 --- /dev/null +++ b/lib/models/ticket_message.dart @@ -0,0 +1,28 @@ +class TicketMessage { + TicketMessage({ + required this.id, + required this.ticketId, + required this.taskId, + required this.senderId, + required this.content, + required this.createdAt, + }); + + final int id; + final String? ticketId; + final String? taskId; + final String? senderId; + final String content; + final DateTime createdAt; + + factory TicketMessage.fromMap(Map map) { + return TicketMessage( + id: map['id'] as int, + ticketId: map['ticket_id'] as String?, + taskId: map['task_id'] as String?, + senderId: map['sender_id'] as String?, + content: map['content'] as String? ?? '', + createdAt: DateTime.parse(map['created_at'] as String), + ); + } +} diff --git a/lib/models/user_office.dart b/lib/models/user_office.dart new file mode 100644 index 00000000..1e8a35fb --- /dev/null +++ b/lib/models/user_office.dart @@ -0,0 +1,13 @@ +class UserOffice { + UserOffice({required this.userId, required this.officeId}); + + final String userId; + final String officeId; + + factory UserOffice.fromMap(Map map) { + return UserOffice( + userId: map['user_id'] as String, + officeId: map['office_id'] as String, + ); + } +} diff --git a/lib/providers/admin_user_provider.dart b/lib/providers/admin_user_provider.dart new file mode 100644 index 00000000..ab43dc18 --- /dev/null +++ b/lib/providers/admin_user_provider.dart @@ -0,0 +1,105 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:supabase_flutter/supabase_flutter.dart'; + +import 'supabase_provider.dart'; + +final adminUserControllerProvider = Provider((ref) { + final client = ref.watch(supabaseClientProvider); + return AdminUserController(client); +}); + +class AdminUserStatus { + AdminUserStatus({required this.email, required this.bannedUntil}); + + final String? email; + final DateTime? bannedUntil; + + bool get isLocked { + if (bannedUntil == null) return false; + return bannedUntil!.isAfter(DateTime.now().toUtc()); + } +} + +class AdminUserController { + AdminUserController(this._client); + + final SupabaseClient _client; + + Future updateProfile({ + required String userId, + required String fullName, + required String role, + }) async { + await _client + .from('profiles') + .update({'full_name': fullName, 'role': role}) + .eq('id', userId); + } + + Future updateRole({ + required String userId, + required String role, + }) async { + await _client.from('profiles').update({'role': role}).eq('id', userId); + } + + Future setPassword({ + required String userId, + required String password, + }) async { + await _invokeAdminFunction( + action: 'set_password', + payload: {'userId': userId, 'password': password}, + ); + } + + Future setLock({required String userId, required bool locked}) async { + await _invokeAdminFunction( + action: 'set_lock', + payload: {'userId': userId, 'locked': locked}, + ); + } + + Future fetchStatus(String userId) async { + final data = await _invokeAdminFunction( + action: 'get_user', + payload: {'userId': userId}, + ); + final user = (data as Map)['user'] as Map; + final bannedUntilRaw = user['banned_until'] as String?; + return AdminUserStatus( + email: user['email'] as String?, + bannedUntil: bannedUntilRaw == null + ? null + : DateTime.tryParse(bannedUntilRaw), + ); + } + + Future _invokeAdminFunction({ + required String action, + required Map payload, + }) async { + final response = await _client.functions.invoke( + 'admin_user_management', + body: {'action': action, ...payload}, + ); + if (response.status != 200) { + throw Exception(_extractErrorMessage(response.data)); + } + return response.data; + } + + String _extractErrorMessage(dynamic data) { + if (data is Map) { + final error = data['error']; + if (error is String && error.trim().isNotEmpty) { + return error; + } + final message = data['message']; + if (message is String && message.trim().isNotEmpty) { + return message; + } + } + return 'Admin request failed.'; + } +} diff --git a/lib/providers/auth_provider.dart b/lib/providers/auth_provider.dart new file mode 100644 index 00000000..be0016f0 --- /dev/null +++ b/lib/providers/auth_provider.dart @@ -0,0 +1,69 @@ +import 'dart:async'; + +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:supabase_flutter/supabase_flutter.dart'; + +import 'supabase_provider.dart'; + +final authStateChangesProvider = StreamProvider((ref) { + final client = ref.watch(supabaseClientProvider); + return client.auth.onAuthStateChange; +}); + +final sessionProvider = Provider((ref) { + final client = ref.watch(supabaseClientProvider); + return client.auth.currentSession; +}); + +final authControllerProvider = Provider((ref) { + final client = ref.watch(supabaseClientProvider); + return AuthController(client); +}); + +class AuthController { + AuthController(this._client); + + final SupabaseClient _client; + + Future signInWithPassword({ + required String email, + required String password, + }) { + return _client.auth.signInWithPassword(email: email, password: password); + } + + Future signUp({ + required String email, + required String password, + String? fullName, + List? officeIds, + }) { + return _client.auth.signUp( + email: email, + password: password, + data: { + if (fullName != null && fullName.trim().isNotEmpty) + 'full_name': fullName.trim(), + if (officeIds != null && officeIds.isNotEmpty) 'office_ids': officeIds, + }, + ); + } + + Future signInWithGoogle({String? redirectTo}) { + return _client.auth.signInWithOAuth( + OAuthProvider.google, + redirectTo: redirectTo, + ); + } + + Future signInWithMeta({String? redirectTo}) { + return _client.auth.signInWithOAuth( + OAuthProvider.facebook, + redirectTo: redirectTo, + ); + } + + Future signOut() { + return _client.auth.signOut(); + } +} diff --git a/lib/providers/notifications_provider.dart b/lib/providers/notifications_provider.dart new file mode 100644 index 00000000..42014348 --- /dev/null +++ b/lib/providers/notifications_provider.dart @@ -0,0 +1,97 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:supabase_flutter/supabase_flutter.dart'; + +import '../models/notification_item.dart'; +import 'profile_provider.dart'; +import 'supabase_provider.dart'; + +final notificationsProvider = StreamProvider>((ref) { + final userId = ref.watch(currentUserIdProvider); + if (userId == null) { + return const Stream.empty(); + } + final client = ref.watch(supabaseClientProvider); + return client + .from('notifications') + .stream(primaryKey: ['id']) + .eq('user_id', userId) + .order('created_at', ascending: false) + .map((rows) => rows.map(NotificationItem.fromMap).toList()); +}); + +final unreadNotificationsCountProvider = Provider((ref) { + final notificationsAsync = ref.watch(notificationsProvider); + return notificationsAsync.maybeWhen( + data: (items) => items.where((item) => item.isUnread).length, + orElse: () => 0, + ); +}); + +final notificationsControllerProvider = Provider(( + ref, +) { + final client = ref.watch(supabaseClientProvider); + return NotificationsController(client); +}); + +class NotificationsController { + NotificationsController(this._client); + + final SupabaseClient _client; + + Future createMentionNotifications({ + required List userIds, + required String actorId, + required int messageId, + String? ticketId, + String? taskId, + }) async { + if (userIds.isEmpty) return; + if ((ticketId == null || ticketId.isEmpty) && + (taskId == null || taskId.isEmpty)) { + return; + } + final rows = userIds + .map( + (userId) => { + 'user_id': userId, + 'actor_id': actorId, + 'ticket_id': ticketId, + 'task_id': taskId, + 'message_id': messageId, + 'type': 'mention', + }, + ) + .toList(); + await _client.from('notifications').insert(rows); + } + + Future markRead(String id) async { + await _client + .from('notifications') + .update({'read_at': DateTime.now().toUtc().toIso8601String()}) + .eq('id', id); + } + + Future markReadForTicket(String ticketId) async { + final userId = _client.auth.currentUser?.id; + if (userId == null) return; + await _client + .from('notifications') + .update({'read_at': DateTime.now().toUtc().toIso8601String()}) + .eq('ticket_id', ticketId) + .eq('user_id', userId) + .filter('read_at', 'is', null); + } + + Future markReadForTask(String taskId) async { + final userId = _client.auth.currentUser?.id; + if (userId == null) return; + await _client + .from('notifications') + .update({'read_at': DateTime.now().toUtc().toIso8601String()}) + .eq('task_id', taskId) + .eq('user_id', userId) + .filter('read_at', 'is', null); + } +} diff --git a/lib/providers/profile_provider.dart b/lib/providers/profile_provider.dart new file mode 100644 index 00000000..a110e175 --- /dev/null +++ b/lib/providers/profile_provider.dart @@ -0,0 +1,45 @@ +import 'dart:async'; + +import 'package:flutter_riverpod/flutter_riverpod.dart'; + +import '../models/profile.dart'; +import 'auth_provider.dart'; +import 'supabase_provider.dart'; + +final currentUserIdProvider = Provider((ref) { + final authState = ref.watch(authStateChangesProvider); + return authState.maybeWhen( + data: (state) => state.session?.user.id, + orElse: () => ref.watch(sessionProvider)?.user.id, + ); +}); + +final currentProfileProvider = StreamProvider((ref) { + final userId = ref.watch(currentUserIdProvider); + if (userId == null) { + return const Stream.empty(); + } + final client = ref.watch(supabaseClientProvider); + return client + .from('profiles') + .stream(primaryKey: ['id']) + .eq('id', userId) + .map((rows) => rows.isEmpty ? null : Profile.fromMap(rows.first)); +}); + +final profilesProvider = StreamProvider>((ref) { + final client = ref.watch(supabaseClientProvider); + return client + .from('profiles') + .stream(primaryKey: ['id']) + .order('full_name') + .map((rows) => rows.map(Profile.fromMap).toList()); +}); + +final isAdminProvider = Provider((ref) { + final profileAsync = ref.watch(currentProfileProvider); + return profileAsync.maybeWhen( + data: (profile) => profile?.role == 'admin', + orElse: () => false, + ); +}); diff --git a/lib/providers/supabase_provider.dart b/lib/providers/supabase_provider.dart new file mode 100644 index 00000000..5729a60c --- /dev/null +++ b/lib/providers/supabase_provider.dart @@ -0,0 +1,6 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:supabase_flutter/supabase_flutter.dart'; + +final supabaseClientProvider = Provider((ref) { + return Supabase.instance.client; +}); diff --git a/lib/providers/tasks_provider.dart b/lib/providers/tasks_provider.dart new file mode 100644 index 00000000..17e29c2d --- /dev/null +++ b/lib/providers/tasks_provider.dart @@ -0,0 +1,235 @@ +import 'dart:async'; + +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:supabase_flutter/supabase_flutter.dart'; +import '../models/task.dart'; +import '../models/task_assignment.dart'; +import 'profile_provider.dart'; +import 'supabase_provider.dart'; +import 'tickets_provider.dart'; +import 'user_offices_provider.dart'; + +final tasksProvider = StreamProvider>((ref) { + final client = ref.watch(supabaseClientProvider); + final profileAsync = ref.watch(currentProfileProvider); + final ticketsAsync = ref.watch(ticketsProvider); + final assignmentsAsync = ref.watch(userOfficesProvider); + + final profile = profileAsync.valueOrNull; + if (profile == null) { + return Stream.value(const []); + } + + final isGlobal = + profile.role == 'admin' || + profile.role == 'dispatcher' || + profile.role == 'it_staff'; + + if (isGlobal) { + return client + .from('tasks') + .stream(primaryKey: ['id']) + .order('queue_order', ascending: true) + .order('created_at') + .map((rows) => rows.map(Task.fromMap).toList()); + } + + final allowedTicketIds = + ticketsAsync.valueOrNull?.map((ticket) => ticket.id).toList() ?? + []; + final officeIds = + assignmentsAsync.valueOrNull + ?.where((assignment) => assignment.userId == profile.id) + .map((assignment) => assignment.officeId) + .toSet() + .toList() ?? + []; + + if (allowedTicketIds.isEmpty && officeIds.isEmpty) { + return Stream.value(const []); + } + + return client + .from('tasks') + .stream(primaryKey: ['id']) + .order('queue_order', ascending: true) + .order('created_at') + .map( + (rows) => rows.map(Task.fromMap).where((task) { + final matchesTicket = + task.ticketId != null && allowedTicketIds.contains(task.ticketId); + final matchesOffice = + task.officeId != null && officeIds.contains(task.officeId); + return matchesTicket || matchesOffice; + }).toList(), + ); +}); + +final taskAssignmentsProvider = StreamProvider>((ref) { + final client = ref.watch(supabaseClientProvider); + return client + .from('task_assignments') + .stream(primaryKey: ['task_id', 'user_id']) + .map((rows) => rows.map(TaskAssignment.fromMap).toList()); +}); + +final taskAssignmentsControllerProvider = Provider(( + ref, +) { + final client = ref.watch(supabaseClientProvider); + return TaskAssignmentsController(client); +}); + +final tasksControllerProvider = Provider((ref) { + final client = ref.watch(supabaseClientProvider); + return TasksController(client); +}); + +class TasksController { + TasksController(this._client); + + final SupabaseClient _client; + + Future updateTaskStatus({ + required String taskId, + required String status, + }) async { + await _client.from('tasks').update({'status': status}).eq('id', taskId); + } + + Future createTask({ + required String title, + required String description, + required String officeId, + }) async { + final actorId = _client.auth.currentUser?.id; + final data = await _client + .from('tasks') + .insert({ + 'title': title, + 'description': description, + 'office_id': officeId, + }) + .select('id') + .single(); + final taskId = data['id'] as String?; + if (taskId == null) return; + unawaited(_notifyCreated(taskId: taskId, actorId: actorId)); + } + + Future _notifyCreated({ + required String taskId, + required String? actorId, + }) async { + try { + final recipients = await _fetchRoleUserIds( + roles: const ['dispatcher', 'it_staff'], + excludeUserId: actorId, + ); + if (recipients.isEmpty) return; + final rows = recipients + .map( + (userId) => { + 'user_id': userId, + 'actor_id': actorId, + 'task_id': taskId, + 'type': 'created', + }, + ) + .toList(); + await _client.from('notifications').insert(rows); + } catch (_) { + return; + } + } + + Future> _fetchRoleUserIds({ + required List roles, + required String? excludeUserId, + }) async { + try { + final data = await _client + .from('profiles') + .select('id, role') + .inFilter('role', roles); + final rows = data as List; + final ids = rows + .map((row) => row['id'] as String?) + .whereType() + .where((id) => id.isNotEmpty && id != excludeUserId) + .toList(); + return ids; + } catch (_) { + return []; + } + } +} + +class TaskAssignmentsController { + TaskAssignmentsController(this._client); + + final SupabaseClient _client; + + Future replaceAssignments({ + required String taskId, + required String? ticketId, + required List newUserIds, + required List currentUserIds, + }) async { + final nextIds = newUserIds.toSet(); + final currentIds = currentUserIds.toSet(); + final toAdd = nextIds.difference(currentIds).toList(); + final toRemove = currentIds.difference(nextIds).toList(); + + if (toAdd.isNotEmpty) { + final rows = toAdd + .map((userId) => {'task_id': taskId, 'user_id': userId}) + .toList(); + await _client.from('task_assignments').insert(rows); + await _notifyAssigned(taskId: taskId, ticketId: ticketId, userIds: toAdd); + } + if (toRemove.isNotEmpty) { + await _client + .from('task_assignments') + .delete() + .eq('task_id', taskId) + .inFilter('user_id', toRemove); + } + } + + Future _notifyAssigned({ + required String taskId, + required String? ticketId, + required List userIds, + }) async { + if (userIds.isEmpty) return; + try { + final actorId = _client.auth.currentUser?.id; + final rows = userIds + .map( + (userId) => { + 'user_id': userId, + 'actor_id': actorId, + 'task_id': taskId, + 'ticket_id': ticketId, + 'type': 'assignment', + }, + ) + .toList(); + await _client.from('notifications').insert(rows); + } catch (_) { + return; + } + } + + Future removeAssignment({ + required String taskId, + required String userId, + }) async { + await _client + .from('task_assignments') + .delete() + .eq('task_id', taskId) + .eq('user_id', userId); + } +} diff --git a/lib/providers/tickets_provider.dart b/lib/providers/tickets_provider.dart new file mode 100644 index 00000000..111067e2 --- /dev/null +++ b/lib/providers/tickets_provider.dart @@ -0,0 +1,248 @@ +import 'dart:async'; + +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:supabase_flutter/supabase_flutter.dart'; + +import '../models/office.dart'; +import '../models/ticket.dart'; +import '../models/ticket_message.dart'; +import 'profile_provider.dart'; +import 'supabase_provider.dart'; +import 'user_offices_provider.dart'; + +final officesProvider = StreamProvider>((ref) { + final client = ref.watch(supabaseClientProvider); + return client + .from('offices') + .stream(primaryKey: ['id']) + .order('name') + .map((rows) => rows.map(Office.fromMap).toList()); +}); + +final officesOnceProvider = FutureProvider>((ref) async { + final client = ref.watch(supabaseClientProvider); + final rows = await client.from('offices').select().order('name'); + return (rows as List) + .map((row) => Office.fromMap(row as Map)) + .toList(); +}); + +final officesControllerProvider = Provider((ref) { + final client = ref.watch(supabaseClientProvider); + return OfficesController(client); +}); + +final ticketsProvider = StreamProvider>((ref) { + final client = ref.watch(supabaseClientProvider); + final profileAsync = ref.watch(currentProfileProvider); + final assignmentsAsync = ref.watch(userOfficesProvider); + + final profile = profileAsync.valueOrNull; + if (profile == null) { + return Stream.value(const []); + } + + final isGlobal = + profile.role == 'admin' || + profile.role == 'dispatcher' || + profile.role == 'it_staff'; + + if (isGlobal) { + return client + .from('tickets') + .stream(primaryKey: ['id']) + .order('created_at', ascending: false) + .map((rows) => rows.map(Ticket.fromMap).toList()); + } + + final officeIds = + assignmentsAsync.valueOrNull + ?.where((assignment) => assignment.userId == profile.id) + .map((assignment) => assignment.officeId) + .toSet() + .toList() ?? + []; + if (officeIds.isEmpty) { + return Stream.value(const []); + } + + return client + .from('tickets') + .stream(primaryKey: ['id']) + .inFilter('office_id', officeIds) + .order('created_at', ascending: false) + .map((rows) => rows.map(Ticket.fromMap).toList()); +}); + +final ticketMessagesProvider = + StreamProvider.family, String>((ref, ticketId) { + final client = ref.watch(supabaseClientProvider); + return client + .from('ticket_messages') + .stream(primaryKey: ['id']) + .eq('ticket_id', ticketId) + .order('created_at', ascending: false) + .map((rows) => rows.map(TicketMessage.fromMap).toList()); + }); + +final ticketMessagesAllProvider = StreamProvider>((ref) { + final client = ref.watch(supabaseClientProvider); + return client + .from('ticket_messages') + .stream(primaryKey: ['id']) + .order('created_at', ascending: false) + .map((rows) => rows.map(TicketMessage.fromMap).toList()); +}); + +final taskMessagesProvider = StreamProvider.family, String>( + (ref, taskId) { + final client = ref.watch(supabaseClientProvider); + return client + .from('ticket_messages') + .stream(primaryKey: ['id']) + .eq('task_id', taskId) + .order('created_at', ascending: false) + .map((rows) => rows.map(TicketMessage.fromMap).toList()); + }, +); + +final ticketsControllerProvider = Provider((ref) { + final client = ref.watch(supabaseClientProvider); + return TicketsController(client); +}); + +class TicketsController { + TicketsController(this._client); + + final SupabaseClient _client; + + Future createTicket({ + required String subject, + required String description, + required String officeId, + }) async { + final actorId = _client.auth.currentUser?.id; + final data = await _client + .from('tickets') + .insert({ + 'subject': subject, + 'description': description, + 'office_id': officeId, + 'creator_id': _client.auth.currentUser?.id, + }) + .select('id') + .single(); + final ticketId = data['id'] as String?; + if (ticketId == null) return; + unawaited(_notifyCreated(ticketId: ticketId, actorId: actorId)); + } + + Future _notifyCreated({ + required String ticketId, + required String? actorId, + }) async { + try { + final recipients = await _fetchRoleUserIds( + roles: const ['dispatcher', 'it_staff'], + excludeUserId: actorId, + ); + if (recipients.isEmpty) return; + final rows = recipients + .map( + (userId) => { + 'user_id': userId, + 'actor_id': actorId, + 'ticket_id': ticketId, + 'type': 'created', + }, + ) + .toList(); + await _client.from('notifications').insert(rows); + } catch (_) { + return; + } + } + + Future> _fetchRoleUserIds({ + required List roles, + required String? excludeUserId, + }) async { + try { + final data = await _client + .from('profiles') + .select('id, role') + .inFilter('role', roles); + final rows = data as List; + final ids = rows + .map((row) => row['id'] as String?) + .whereType() + .where((id) => id.isNotEmpty && id != excludeUserId) + .toList(); + return ids; + } catch (_) { + return []; + } + } + + Future sendTicketMessage({ + required String ticketId, + required String content, + }) async { + final data = await _client + .from('ticket_messages') + .insert({ + 'ticket_id': ticketId, + 'content': content, + 'sender_id': _client.auth.currentUser?.id, + }) + .select() + .single(); + return TicketMessage.fromMap(data); + } + + Future sendTaskMessage({ + required String taskId, + required String? ticketId, + required String content, + }) async { + final payload = { + 'task_id': taskId, + 'content': content, + 'sender_id': _client.auth.currentUser?.id, + }; + if (ticketId != null) { + payload['ticket_id'] = ticketId; + } + final data = await _client + .from('ticket_messages') + .insert(payload) + .select() + .single(); + return TicketMessage.fromMap(data); + } + + Future updateTicketStatus({ + required String ticketId, + required String status, + }) async { + await _client.from('tickets').update({'status': status}).eq('id', ticketId); + } +} + +class OfficesController { + OfficesController(this._client); + + final SupabaseClient _client; + + Future createOffice({required String name}) async { + await _client.from('offices').insert({'name': name}); + } + + Future updateOffice({required String id, required String name}) async { + await _client.from('offices').update({'name': name}).eq('id', id); + } + + Future deleteOffice({required String id}) async { + await _client.from('offices').delete().eq('id', id); + } +} diff --git a/lib/providers/typing_provider.dart b/lib/providers/typing_provider.dart new file mode 100644 index 00000000..0d7993fa --- /dev/null +++ b/lib/providers/typing_provider.dart @@ -0,0 +1,152 @@ +import 'dart:async'; + +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:supabase_flutter/supabase_flutter.dart'; + +import 'supabase_provider.dart'; + +class TypingIndicatorState { + const TypingIndicatorState({ + required this.userIds, + required this.channelStatus, + required this.lastPayload, + }); + + final Set userIds; + final String channelStatus; + final Map lastPayload; + + TypingIndicatorState copyWith({ + Set? userIds, + String? channelStatus, + Map? lastPayload, + }) { + return TypingIndicatorState( + userIds: userIds ?? this.userIds, + channelStatus: channelStatus ?? this.channelStatus, + lastPayload: lastPayload ?? this.lastPayload, + ); + } +} + +final typingIndicatorProvider = StateNotifierProvider.autoDispose + .family(( + ref, + ticketId, + ) { + final client = ref.watch(supabaseClientProvider); + final controller = TypingIndicatorController(client, ticketId); + ref.onDispose(controller.dispose); + return controller; + }); + +class TypingIndicatorController extends StateNotifier { + TypingIndicatorController(this._client, this._ticketId) + : super( + const TypingIndicatorState( + userIds: {}, + channelStatus: 'init', + lastPayload: {}, + ), + ) { + _initChannel(); + } + + final SupabaseClient _client; + final String _ticketId; + RealtimeChannel? _channel; + Timer? _typingTimer; + final Map _remoteTimeouts = {}; + + void _initChannel() { + final channel = _client.channel('typing:$_ticketId'); + channel.onBroadcast( + event: 'typing', + callback: (payload) { + final Map data = _extractPayload(payload); + final userId = data['user_id'] as String?; + final rawType = data['type']?.toString(); + final currentUserId = _client.auth.currentUser?.id; + state = state.copyWith(lastPayload: data); + if (userId == null || userId == currentUserId) { + return; + } + if (rawType == 'stop') { + _clearRemoteTyping(userId); + return; + } + _markRemoteTyping(userId); + }, + ); + channel.subscribe((status, error) { + state = state.copyWith(channelStatus: status.name); + }); + _channel = channel; + } + + Map _extractPayload(dynamic payload) { + if (payload is Map) { + final inner = payload['payload']; + if (inner is Map) { + return inner; + } + return payload; + } + final dynamic inner = payload.payload; + if (inner is Map) { + return inner; + } + return {}; + } + + void userTyping() { + if (_client.auth.currentUser?.id == null) return; + _sendTypingEvent('start'); + _typingTimer?.cancel(); + _typingTimer = Timer(const Duration(milliseconds: 150), () { + _sendTypingEvent('stop'); + }); + } + + void stopTyping() { + _typingTimer?.cancel(); + _sendTypingEvent('stop'); + } + + void _markRemoteTyping(String userId) { + final updated = {...state.userIds, userId}; + state = state.copyWith(userIds: updated); + _remoteTimeouts[userId]?.cancel(); + _remoteTimeouts[userId] = Timer(const Duration(milliseconds: 400), () { + _clearRemoteTyping(userId); + }); + } + + void _clearRemoteTyping(String userId) { + final updated = {...state.userIds}..remove(userId); + state = state.copyWith(userIds: updated); + _remoteTimeouts[userId]?.cancel(); + _remoteTimeouts.remove(userId); + } + + void _sendTypingEvent(String type) { + final userId = _client.auth.currentUser?.id; + if (userId == null || _channel == null) return; + _channel!.sendBroadcastMessage( + event: 'typing', + payload: {'user_id': userId, 'type': type}, + ); + } + + @override + void dispose() { + stopTyping(); + _typingTimer?.cancel(); + for (final timer in _remoteTimeouts.values) { + timer.cancel(); + } + _remoteTimeouts.clear(); + _channel?.unsubscribe(); + super.dispose(); + } +} diff --git a/lib/providers/user_offices_provider.dart b/lib/providers/user_offices_provider.dart new file mode 100644 index 00000000..6742bb66 --- /dev/null +++ b/lib/providers/user_offices_provider.dart @@ -0,0 +1,46 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:supabase_flutter/supabase_flutter.dart'; + +import '../models/user_office.dart'; +import 'supabase_provider.dart'; + +final userOfficesProvider = StreamProvider>((ref) { + final client = ref.watch(supabaseClientProvider); + return client + .from('user_offices') + .stream(primaryKey: ['user_id', 'office_id']) + .order('created_at') + .map((rows) => rows.map(UserOffice.fromMap).toList()); +}); + +final userOfficesControllerProvider = Provider((ref) { + final client = ref.watch(supabaseClientProvider); + return UserOfficesController(client); +}); + +class UserOfficesController { + UserOfficesController(this._client); + + final SupabaseClient _client; + + Future assignUserOffice({ + required String userId, + required String officeId, + }) async { + await _client.from('user_offices').insert({ + 'user_id': userId, + 'office_id': officeId, + }); + } + + Future removeUserOffice({ + required String userId, + required String officeId, + }) async { + await _client + .from('user_offices') + .delete() + .eq('user_id', userId) + .eq('office_id', officeId); + } +} diff --git a/lib/routing/app_router.dart b/lib/routing/app_router.dart new file mode 100644 index 00000000..ea346904 --- /dev/null +++ b/lib/routing/app_router.dart @@ -0,0 +1,160 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:go_router/go_router.dart'; + +import '../providers/auth_provider.dart'; +import '../providers/profile_provider.dart'; +import '../screens/auth/login_screen.dart'; +import '../screens/auth/signup_screen.dart'; +import '../screens/admin/offices_screen.dart'; +import '../screens/admin/user_management_screen.dart'; +import '../screens/dashboard/dashboard_screen.dart'; +import '../screens/notifications/notifications_screen.dart'; +import '../screens/shared/under_development_screen.dart'; +import '../screens/tasks/task_detail_screen.dart'; +import '../screens/tasks/tasks_list_screen.dart'; +import '../screens/tickets/ticket_detail_screen.dart'; +import '../screens/tickets/tickets_list_screen.dart'; +import '../widgets/app_shell.dart'; + +final appRouterProvider = Provider((ref) { + final notifier = RouterNotifier(ref); + ref.onDispose(notifier.dispose); + + return GoRouter( + initialLocation: '/dashboard', + refreshListenable: notifier, + redirect: (context, state) { + final authState = ref.read(authStateChangesProvider); + final session = authState.maybeWhen( + data: (state) => state.session, + orElse: () => ref.read(sessionProvider), + ); + final isAuthRoute = + state.fullPath == '/login' || state.fullPath == '/signup'; + final isSignedIn = session != null; + final profileAsync = ref.read(currentProfileProvider); + final isAdminRoute = state.matchedLocation.startsWith('/settings'); + final isAdmin = profileAsync.maybeWhen( + data: (profile) => profile?.role == 'admin', + orElse: () => false, + ); + + if (!isSignedIn && !isAuthRoute) { + return '/login'; + } + if (isSignedIn && isAuthRoute) { + return '/dashboard'; + } + if (isAdminRoute && !isAdmin) { + return '/tickets'; + } + return null; + }, + routes: [ + GoRoute(path: '/login', builder: (context, state) => const LoginScreen()), + GoRoute( + path: '/signup', + builder: (context, state) => const SignUpScreen(), + ), + ShellRoute( + builder: (context, state, child) => AppScaffold(child: child), + routes: [ + GoRoute( + path: '/dashboard', + builder: (context, state) => const DashboardScreen(), + ), + GoRoute( + path: '/tickets', + builder: (context, state) => const TicketsListScreen(), + routes: [ + GoRoute( + path: ':id', + builder: (context, state) => TicketDetailScreen( + ticketId: state.pathParameters['id'] ?? '', + ), + ), + ], + ), + GoRoute( + path: '/tasks', + builder: (context, state) => const TasksListScreen(), + routes: [ + GoRoute( + path: ':id', + builder: (context, state) => + TaskDetailScreen(taskId: state.pathParameters['id'] ?? ''), + ), + ], + ), + GoRoute( + path: '/events', + builder: (context, state) => const UnderDevelopmentScreen( + title: 'Events', + subtitle: 'Event monitoring is under development.', + icon: Icons.event, + ), + ), + GoRoute( + path: '/announcements', + builder: (context, state) => const UnderDevelopmentScreen( + title: 'Announcement', + subtitle: 'Operational broadcasts are coming soon.', + icon: Icons.campaign, + ), + ), + GoRoute( + path: '/workforce', + builder: (context, state) => const UnderDevelopmentScreen( + title: 'Workforce', + subtitle: 'Workforce management is in progress.', + icon: Icons.groups, + ), + ), + GoRoute( + path: '/reports', + builder: (context, state) => const UnderDevelopmentScreen( + title: 'Reports', + subtitle: 'Reporting automation is under development.', + icon: Icons.analytics, + ), + ), + GoRoute( + path: '/settings/users', + builder: (context, state) => const UserManagementScreen(), + ), + GoRoute( + path: '/settings/offices', + builder: (context, state) => const OfficesScreen(), + ), + GoRoute( + path: '/notifications', + builder: (context, state) => const NotificationsScreen(), + ), + ], + ), + ], + ); +}); + +class RouterNotifier extends ChangeNotifier { + RouterNotifier(this.ref) { + _authSub = ref.listen(authStateChangesProvider, (previous, next) { + notifyListeners(); + }); + _profileSub = ref.listen(currentProfileProvider, (previous, next) { + notifyListeners(); + }); + } + + final Ref ref; + late final ProviderSubscription _authSub; + late final ProviderSubscription _profileSub; + + @override + void dispose() { + _authSub.close(); + _profileSub.close(); + super.dispose(); + } +} diff --git a/lib/screens/admin/offices_screen.dart b/lib/screens/admin/offices_screen.dart new file mode 100644 index 00000000..2c7f48a3 --- /dev/null +++ b/lib/screens/admin/offices_screen.dart @@ -0,0 +1,185 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:go_router/go_router.dart'; + +import '../../models/office.dart'; +import '../../providers/profile_provider.dart'; +import '../../providers/tickets_provider.dart'; +import '../../widgets/responsive_body.dart'; + +class OfficesScreen extends ConsumerWidget { + const OfficesScreen({super.key}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final isAdmin = ref.watch(isAdminProvider); + final officesAsync = ref.watch(officesProvider); + + return Scaffold( + body: ResponsiveBody( + maxWidth: 800, + child: !isAdmin + ? const Center(child: Text('Admin access required.')) + : officesAsync.when( + data: (offices) { + if (offices.isEmpty) { + return const Center(child: Text('No offices found.')); + } + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Padding( + padding: const EdgeInsets.only(top: 16, bottom: 8), + child: Row( + children: [ + Expanded( + child: Text( + 'Office Management', + style: Theme.of(context).textTheme.titleLarge + ?.copyWith(fontWeight: FontWeight.w700), + ), + ), + TextButton.icon( + onPressed: () => context.go('/settings/users'), + icon: const Icon(Icons.group), + label: const Text('User access'), + ), + ], + ), + ), + Expanded( + child: ListView.separated( + padding: const EdgeInsets.only(bottom: 24), + itemCount: offices.length, + separatorBuilder: (_, index) => + const SizedBox(height: 12), + itemBuilder: (context, index) { + final office = offices[index]; + return ListTile( + leading: const Icon(Icons.apartment_outlined), + title: Text(office.name), + trailing: Wrap( + spacing: 8, + children: [ + IconButton( + tooltip: 'Edit', + icon: const Icon(Icons.edit), + onPressed: () => _showOfficeDialog( + context, + ref, + office: office, + ), + ), + IconButton( + tooltip: 'Delete', + icon: const Icon(Icons.delete), + onPressed: () => + _confirmDelete(context, ref, office), + ), + ], + ), + ); + }, + ), + ), + ], + ); + }, + loading: () => const Center(child: CircularProgressIndicator()), + error: (error, _) => + Center(child: Text('Failed to load offices: $error')), + ), + ), + floatingActionButton: isAdmin + ? FloatingActionButton.extended( + onPressed: () => _showOfficeDialog(context, ref), + icon: const Icon(Icons.add), + label: const Text('New Office'), + ) + : null, + ); + } + + Future _showOfficeDialog( + BuildContext context, + WidgetRef ref, { + Office? office, + }) async { + final nameController = TextEditingController(text: office?.name ?? ''); + + await showDialog( + context: context, + builder: (dialogContext) { + return AlertDialog( + title: Text(office == null ? 'Create Office' : 'Edit Office'), + content: TextField( + controller: nameController, + decoration: const InputDecoration(labelText: 'Office name'), + ), + actions: [ + TextButton( + onPressed: () => Navigator.of(dialogContext).pop(), + child: const Text('Cancel'), + ), + FilledButton( + onPressed: () async { + final name = nameController.text.trim(); + if (name.isEmpty) { + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar(content: Text('Name is required.')), + ); + return; + } + final controller = ref.read(officesControllerProvider); + if (office == null) { + await controller.createOffice(name: name); + } else { + await controller.updateOffice(id: office.id, name: name); + } + ref.invalidate(officesProvider); + if (context.mounted) { + Navigator.of(dialogContext).pop(); + } + }, + child: Text(office == null ? 'Create' : 'Save'), + ), + ], + ); + }, + ); + } + + Future _confirmDelete( + BuildContext context, + WidgetRef ref, + Office office, + ) async { + await showDialog( + context: context, + builder: (dialogContext) { + return AlertDialog( + title: const Text('Delete Office'), + content: Text('Delete ${office.name}? This cannot be undone.'), + actions: [ + TextButton( + onPressed: () => Navigator.of(dialogContext).pop(), + child: const Text('Cancel'), + ), + FilledButton( + onPressed: () async { + await ref + .read(officesControllerProvider) + .deleteOffice(id: office.id); + ref.invalidate(officesProvider); + if (context.mounted) { + Navigator.of(dialogContext).pop(); + } + }, + child: const Text('Delete'), + ), + ], + ); + }, + ); + } +} diff --git a/lib/screens/admin/user_management_screen.dart b/lib/screens/admin/user_management_screen.dart new file mode 100644 index 00000000..39b0f45e --- /dev/null +++ b/lib/screens/admin/user_management_screen.dart @@ -0,0 +1,672 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; + +import '../../models/office.dart'; +import '../../models/profile.dart'; +import '../../models/ticket_message.dart'; +import '../../models/user_office.dart'; +import '../../providers/admin_user_provider.dart'; +import '../../providers/profile_provider.dart'; +import '../../providers/tickets_provider.dart'; +import '../../providers/user_offices_provider.dart'; +import '../../widgets/responsive_body.dart'; + +class UserManagementScreen extends ConsumerStatefulWidget { + const UserManagementScreen({super.key}); + + @override + ConsumerState createState() => + _UserManagementScreenState(); +} + +class _UserManagementScreenState extends ConsumerState { + static const List _roles = [ + 'standard', + 'dispatcher', + 'it_staff', + 'admin', + ]; + + final _fullNameController = TextEditingController(); + + String? _selectedUserId; + String? _selectedRole; + Set _selectedOfficeIds = {}; + AdminUserStatus? _selectedStatus; + bool _isSaving = false; + bool _isStatusLoading = false; + final Map _statusCache = {}; + final Set _statusLoading = {}; + final Set _statusErrors = {}; + Set _prefetchedUserIds = {}; + + @override + void dispose() { + _fullNameController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final isAdmin = ref.watch(isAdminProvider); + final profilesAsync = ref.watch(profilesProvider); + final officesAsync = ref.watch(officesProvider); + final assignmentsAsync = ref.watch(userOfficesProvider); + final messagesAsync = ref.watch(ticketMessagesAllProvider); + + return Scaffold( + body: ResponsiveBody( + maxWidth: 1080, + child: !isAdmin + ? const Center(child: Text('Admin access required.')) + : _buildContent( + context, + profilesAsync, + officesAsync, + assignmentsAsync, + messagesAsync, + ), + ), + ); + } + + Widget _buildContent( + BuildContext context, + AsyncValue> profilesAsync, + AsyncValue> officesAsync, + AsyncValue> assignmentsAsync, + AsyncValue> messagesAsync, + ) { + if (profilesAsync.isLoading || + officesAsync.isLoading || + assignmentsAsync.isLoading || + messagesAsync.isLoading) { + return const Center(child: CircularProgressIndicator()); + } + + if (profilesAsync.hasError || + officesAsync.hasError || + assignmentsAsync.hasError || + messagesAsync.hasError) { + final error = + profilesAsync.error ?? + officesAsync.error ?? + assignmentsAsync.error ?? + messagesAsync.error ?? + 'Unknown error'; + return Center(child: Text('Failed to load data: $error')); + } + + final profiles = profilesAsync.valueOrNull ?? []; + final offices = officesAsync.valueOrNull ?? []; + final assignments = assignmentsAsync.valueOrNull ?? []; + final messages = messagesAsync.valueOrNull ?? []; + + _prefetchStatuses(profiles); + + final lastActiveByUser = {}; + for (final message in messages) { + final senderId = message.senderId; + if (senderId == null) continue; + final current = lastActiveByUser[senderId]; + if (current == null || message.createdAt.isAfter(current)) { + lastActiveByUser[senderId] = message.createdAt; + } + } + + return Padding( + padding: const EdgeInsets.symmetric(vertical: 16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Text( + 'User Management', + style: Theme.of( + context, + ).textTheme.titleLarge?.copyWith(fontWeight: FontWeight.w700), + ), + const SizedBox(height: 16), + Expanded( + child: _buildUserTable( + context, + profiles, + offices, + assignments, + lastActiveByUser, + ), + ), + ], + ), + ); + } + + Widget _buildUserTable( + BuildContext context, + List profiles, + List offices, + List assignments, + Map lastActiveByUser, + ) { + if (profiles.isEmpty) { + return const Center(child: Text('No users found.')); + } + final officeNameById = { + for (final office in offices) office.id: office.name, + }; + + final officeCountByUser = {}; + for (final assignment in assignments) { + officeCountByUser.update( + assignment.userId, + (value) => value + 1, + ifAbsent: () => 1, + ); + } + + return Material( + color: Theme.of(context).colorScheme.surface, + child: SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: ConstrainedBox( + constraints: const BoxConstraints(minWidth: 720), + child: SingleChildScrollView( + child: DataTable( + headingRowHeight: 46, + dataRowMinHeight: 48, + dataRowMaxHeight: 64, + columnSpacing: 24, + horizontalMargin: 16, + dividerThickness: 1, + headingRowColor: MaterialStateProperty.resolveWith( + (states) => Theme.of(context).colorScheme.surfaceVariant, + ), + columns: const [ + DataColumn(label: Text('User')), + DataColumn(label: Text('Email')), + DataColumn(label: Text('Role')), + DataColumn(label: Text('Offices')), + DataColumn(label: Text('Status')), + DataColumn(label: Text('Last active')), + ], + rows: profiles.asMap().entries.map((entry) { + final index = entry.key; + final profile = entry.value; + final label = profile.fullName.isEmpty + ? profile.id + : profile.fullName; + final status = _statusCache[profile.id]; + final hasError = _statusErrors.contains(profile.id); + final isLoading = _statusLoading.contains(profile.id); + final email = hasError + ? 'Unavailable' + : (status?.email ?? (isLoading ? 'Loading...' : 'N/A')); + final statusLabel = hasError + ? 'Unavailable' + : (status == null + ? (isLoading ? 'Loading...' : 'Unknown') + : (status.isLocked ? 'Locked' : 'Active')); + final officeCount = officeCountByUser[profile.id] ?? 0; + final officeLabel = officeCount == 0 ? 'None' : '$officeCount'; + final officeNames = assignments + .where((assignment) => assignment.userId == profile.id) + .map( + (assignment) => + officeNameById[assignment.officeId] ?? + assignment.officeId, + ) + .toList(); + final officesText = officeNames.isEmpty + ? 'No offices' + : officeNames.join(', '); + final lastActive = _formatLastActive( + lastActiveByUser[profile.id]?.toLocal(), + ); + + return DataRow.byIndex( + index: index, + onSelectChanged: (selected) { + if (selected != true) return; + _showUserDialog(context, profile, offices, assignments); + }, + color: MaterialStateProperty.resolveWith((states) { + if (states.contains(MaterialState.selected)) { + return Theme.of( + context, + ).colorScheme.surfaceTint.withOpacity(0.12); + } + if (index.isEven) { + return Theme.of( + context, + ).colorScheme.surface.withOpacity(0.6); + } + return Theme.of(context).colorScheme.surface; + }), + cells: [ + DataCell(Text(label)), + DataCell(Text(email)), + DataCell(Text(profile.role)), + DataCell( + Tooltip(message: officesText, child: Text(officeLabel)), + ), + DataCell(Text(statusLabel)), + DataCell(Text(lastActive)), + ], + ); + }).toList(), + ), + ), + ), + ), + ); + } + + void _ensureStatusLoaded(String userId) { + if (_statusCache.containsKey(userId) || _statusLoading.contains(userId)) { + return; + } + _statusLoading.add(userId); + _statusErrors.remove(userId); + ref + .read(adminUserControllerProvider) + .fetchStatus(userId) + .then((status) { + if (!mounted) return; + setState(() { + _statusCache[userId] = status; + _statusLoading.remove(userId); + }); + }) + .catchError((_) { + if (!mounted) return; + setState(() { + _statusLoading.remove(userId); + _statusErrors.add(userId); + }); + }); + } + + void _prefetchStatuses(List profiles) { + final ids = profiles.map((profile) => profile.id).toSet(); + final missing = ids.difference(_prefetchedUserIds); + if (missing.isEmpty) return; + _prefetchedUserIds = ids; + WidgetsBinding.instance.addPostFrameCallback((_) { + if (!mounted) return; + for (final userId in missing) { + _ensureStatusLoaded(userId); + } + }); + } + + Future _showUserDialog( + BuildContext context, + Profile profile, + List offices, + List assignments, + ) async { + await _selectUser(profile); + final currentOfficeIds = assignments + .where((assignment) => assignment.userId == profile.id) + .map((assignment) => assignment.officeId) + .toSet(); + + if (!context.mounted) return; + await showDialog( + context: context, + builder: (dialogContext) { + return StatefulBuilder( + builder: (context, setDialogState) { + return AlertDialog( + title: const Text('Update user'), + content: ConstrainedBox( + constraints: const BoxConstraints(maxWidth: 520), + child: SingleChildScrollView( + child: _buildUserForm( + context, + profile, + offices, + currentOfficeIds, + setDialogState, + ), + ), + ), + actions: [ + TextButton( + onPressed: () => Navigator.of(dialogContext).pop(), + child: const Text('Close'), + ), + ], + ); + }, + ); + }, + ); + } + + Widget _buildUserForm( + BuildContext context, + Profile profile, + List offices, + Set currentOfficeIds, + StateSetter setDialogState, + ) { + return Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TextFormField( + controller: _fullNameController, + decoration: const InputDecoration(labelText: 'Full name'), + ), + const SizedBox(height: 12), + DropdownButtonFormField( + key: ValueKey('role_${_selectedUserId ?? 'none'}'), + initialValue: _selectedRole, + items: _roles + .map((role) => DropdownMenuItem(value: role, child: Text(role))) + .toList(), + onChanged: (value) => setDialogState(() => _selectedRole = value), + decoration: const InputDecoration(labelText: 'Role'), + ), + const SizedBox(height: 12), + _buildStatusRow(profile), + const SizedBox(height: 16), + Text('Offices', style: Theme.of(context).textTheme.titleSmall), + const SizedBox(height: 8), + if (offices.isEmpty) const Text('No offices available.'), + if (offices.isNotEmpty) + Column( + children: offices + .map( + (office) => CheckboxListTile( + value: _selectedOfficeIds.contains(office.id), + onChanged: _isSaving + ? null + : (selected) { + setDialogState(() { + if (selected == true) { + _selectedOfficeIds.add(office.id); + } else { + _selectedOfficeIds.remove(office.id); + } + }); + }, + title: Text(office.name), + controlAffinity: ListTileControlAffinity.leading, + contentPadding: EdgeInsets.zero, + ), + ) + .toList(), + ), + const SizedBox(height: 16), + Row( + children: [ + Expanded( + child: FilledButton( + onPressed: _isSaving + ? null + : () async { + final saved = await _saveChanges( + context, + profile, + currentOfficeIds, + setDialogState, + ); + if (saved && context.mounted) { + Navigator.of(context).pop(); + } + }, + child: _isSaving + ? const SizedBox( + height: 18, + width: 18, + child: CircularProgressIndicator(strokeWidth: 2), + ) + : const Text('Save changes'), + ), + ), + ], + ), + ], + ); + } + + Widget _buildStatusRow(Profile profile) { + final email = _selectedStatus?.email; + final isLocked = _selectedStatus?.isLocked ?? false; + final lockLabel = isLocked ? 'Unlock' : 'Lock'; + + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Email: ${email ?? 'Loading...'}', + style: Theme.of(context).textTheme.bodySmall, + ), + const SizedBox(height: 8), + Row( + children: [ + OutlinedButton.icon( + onPressed: _isStatusLoading + ? null + : () => _showPasswordResetDialog(profile.id), + icon: const Icon(Icons.password), + label: const Text('Reset password'), + ), + const SizedBox(width: 12), + OutlinedButton.icon( + onPressed: _isStatusLoading + ? null + : () => _toggleLock(profile.id, !isLocked), + icon: Icon(isLocked ? Icons.lock_open : Icons.lock), + label: Text(lockLabel), + ), + ], + ), + ], + ); + } + + Future _selectUser(Profile profile) async { + setState(() { + _selectedUserId = profile.id; + _selectedRole = profile.role; + _fullNameController.text = profile.fullName; + _selectedStatus = null; + _isStatusLoading = true; + }); + + final assignments = ref.read(userOfficesProvider).valueOrNull ?? []; + final officeIds = assignments + .where((assignment) => assignment.userId == profile.id) + .map((assignment) => assignment.officeId) + .toSet(); + setState(() => _selectedOfficeIds = officeIds); + + try { + final status = await ref + .read(adminUserControllerProvider) + .fetchStatus(profile.id); + if (mounted) { + setState(() { + _selectedStatus = status; + _statusCache[profile.id] = status; + }); + } + } catch (_) { + if (mounted) { + setState( + () => + _selectedStatus = AdminUserStatus(email: null, bannedUntil: null), + ); + } + } finally { + if (mounted) { + setState(() => _isStatusLoading = false); + } + } + } + + Future _saveChanges( + BuildContext context, + Profile profile, + Set currentOfficeIds, + StateSetter setDialogState, + ) async { + final role = _selectedRole ?? profile.role; + final fullName = _fullNameController.text.trim(); + if (fullName.isEmpty) { + ScaffoldMessenger.of( + context, + ).showSnackBar(const SnackBar(content: Text('Full name is required.'))); + return false; + } + + if (_selectedOfficeIds.isEmpty) { + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar(content: Text('Select at least one office.')), + ); + return false; + } + + setDialogState(() => _isSaving = true); + try { + await ref + .read(adminUserControllerProvider) + .updateProfile(userId: profile.id, fullName: fullName, role: role); + + final toAdd = _selectedOfficeIds.difference(currentOfficeIds); + final toRemove = currentOfficeIds.difference(_selectedOfficeIds); + final controller = ref.read(userOfficesControllerProvider); + + for (final officeId in toAdd) { + await controller.assignUserOffice( + userId: profile.id, + officeId: officeId, + ); + } + + for (final officeId in toRemove) { + await controller.removeUserOffice( + userId: profile.id, + officeId: officeId, + ); + } + + ref.invalidate(profilesProvider); + ref.invalidate(userOfficesProvider); + + if (!context.mounted) return true; + ScaffoldMessenger.of( + context, + ).showSnackBar(const SnackBar(content: Text('User updated.'))); + return true; + } catch (error) { + if (!context.mounted) return false; + ScaffoldMessenger.of( + context, + ).showSnackBar(SnackBar(content: Text('Update failed: $error'))); + return false; + } finally { + setDialogState(() => _isSaving = false); + } + } + + Future _showPasswordResetDialog(String userId) async { + final controller = TextEditingController(); + final formKey = GlobalKey(); + + await showDialog( + context: context, + builder: (dialogContext) { + return AlertDialog( + title: const Text('Set temporary password'), + content: Form( + key: formKey, + child: TextFormField( + controller: controller, + decoration: const InputDecoration(labelText: 'New password'), + obscureText: true, + validator: (value) { + if (value == null || value.trim().length < 8) { + return 'Use at least 8 characters.'; + } + return null; + }, + ), + ), + actions: [ + TextButton( + onPressed: () => Navigator.of(dialogContext).pop(), + child: const Text('Cancel'), + ), + FilledButton( + onPressed: () async { + if (!formKey.currentState!.validate()) return; + try { + await ref + .read(adminUserControllerProvider) + .setPassword( + userId: userId, + password: controller.text.trim(), + ); + if (!dialogContext.mounted) return; + Navigator.of(dialogContext).pop(); + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar(content: Text('Password updated.')), + ); + } catch (error) { + if (!mounted) return; + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text('Reset failed: $error')), + ); + } + }, + child: const Text('Update password'), + ), + ], + ); + }, + ); + } + + Future _toggleLock(String userId, bool locked) async { + setState(() => _isStatusLoading = true); + try { + await ref + .read(adminUserControllerProvider) + .setLock(userId: userId, locked: locked); + final status = await ref + .read(adminUserControllerProvider) + .fetchStatus(userId); + if (!mounted) return; + setState(() => _selectedStatus = status); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(locked ? 'User locked.' : 'User unlocked.')), + ); + } catch (error) { + if (!mounted) return; + ScaffoldMessenger.of( + context, + ).showSnackBar(SnackBar(content: Text('Lock update failed: $error'))); + } finally { + if (mounted) { + setState(() => _isStatusLoading = false); + } + } + } + + String _formatLastActive(DateTime? value) { + if (value == null) return 'N/A'; + final now = DateTime.now(); + final diff = now.difference(value); + if (diff.inMinutes < 1) return 'Just now'; + if (diff.inHours < 1) return '${diff.inMinutes}m ago'; + if (diff.inDays < 1) return '${diff.inHours}h ago'; + if (diff.inDays < 7) return '${diff.inDays}d ago'; + final month = value.month.toString().padLeft(2, '0'); + final day = value.day.toString().padLeft(2, '0'); + return '${value.year}-$month-$day'; + } +} diff --git a/lib/screens/auth/login_screen.dart b/lib/screens/auth/login_screen.dart new file mode 100644 index 00000000..462e1ab3 --- /dev/null +++ b/lib/screens/auth/login_screen.dart @@ -0,0 +1,179 @@ +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:font_awesome_flutter/font_awesome_flutter.dart'; +import 'package:go_router/go_router.dart'; + +import '../../providers/auth_provider.dart'; +import '../../widgets/responsive_body.dart'; + +class LoginScreen extends ConsumerStatefulWidget { + const LoginScreen({super.key}); + + @override + ConsumerState createState() => _LoginScreenState(); +} + +class _LoginScreenState extends ConsumerState { + final _formKey = GlobalKey(); + final _emailController = TextEditingController(); + final _passwordController = TextEditingController(); + + bool _isLoading = false; + + @override + void dispose() { + _emailController.dispose(); + _passwordController.dispose(); + super.dispose(); + } + + Future _handleEmailSignIn() async { + if (!_formKey.currentState!.validate()) return; + setState(() => _isLoading = true); + + final auth = ref.read(authControllerProvider); + try { + final response = await auth.signInWithPassword( + email: _emailController.text.trim(), + password: _passwordController.text, + ); + if (response.session != null && mounted) { + context.go('/tickets'); + } else if (mounted) { + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar(content: Text('Check your email to confirm sign-in.')), + ); + } + } on Exception catch (error) { + if (mounted) { + ScaffoldMessenger.of( + context, + ).showSnackBar(SnackBar(content: Text('Sign in failed: $error'))); + } + } finally { + if (mounted) { + setState(() => _isLoading = false); + } + } + } + + Future _handleOAuthSignIn({required bool google}) async { + setState(() => _isLoading = true); + final auth = ref.read(authControllerProvider); + final redirectTo = kIsWeb ? Uri.base.origin : null; + + try { + if (google) { + await auth.signInWithGoogle(redirectTo: redirectTo); + } else { + await auth.signInWithMeta(redirectTo: redirectTo); + } + } on Exception catch (error) { + if (mounted) { + ScaffoldMessenger.of( + context, + ).showSnackBar(SnackBar(content: Text('OAuth failed: $error'))); + } + } finally { + if (mounted) { + setState(() => _isLoading = false); + } + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar(title: const Text('Sign In')), + body: ResponsiveBody( + maxWidth: 480, + padding: const EdgeInsets.symmetric(vertical: 24), + child: Form( + key: _formKey, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Center( + child: Column( + children: [ + Image.asset('assets/tasq_ico.png', height: 72, width: 72), + const SizedBox(height: 12), + Text( + 'TasQ', + style: Theme.of(context).textTheme.headlineSmall, + ), + ], + ), + ), + const SizedBox(height: 24), + TextFormField( + controller: _emailController, + decoration: const InputDecoration(labelText: 'Email'), + keyboardType: TextInputType.emailAddress, + textInputAction: TextInputAction.next, + validator: (value) { + if (value == null || value.trim().isEmpty) { + return 'Email is required.'; + } + return null; + }, + ), + const SizedBox(height: 12), + TextFormField( + controller: _passwordController, + decoration: const InputDecoration(labelText: 'Password'), + obscureText: true, + textInputAction: TextInputAction.done, + onFieldSubmitted: (_) { + if (!_isLoading) { + _handleEmailSignIn(); + } + }, + validator: (value) { + if (value == null || value.isEmpty) { + return 'Password is required.'; + } + return null; + }, + ), + const SizedBox(height: 24), + FilledButton( + onPressed: _isLoading ? null : _handleEmailSignIn, + child: _isLoading + ? const SizedBox( + height: 18, + width: 18, + child: CircularProgressIndicator(strokeWidth: 2), + ) + : const Text('Sign In'), + ), + const SizedBox(height: 12), + OutlinedButton.icon( + onPressed: _isLoading + ? null + : () => _handleOAuthSignIn(google: true), + icon: const FaIcon(FontAwesomeIcons.google, size: 18), + label: const Text('Continue with Google'), + ), + const SizedBox(height: 8), + OutlinedButton.icon( + onPressed: _isLoading + ? null + : () => _handleOAuthSignIn(google: false), + icon: const FaIcon(FontAwesomeIcons.facebook, size: 18), + label: const Text('Continue with Meta'), + ), + const SizedBox(height: 16), + TextButton( + onPressed: _isLoading ? null : () => context.go('/signup'), + child: const Text('Create account'), + ), + ], + ), + ), + ), + ); + } +} diff --git a/lib/screens/auth/signup_screen.dart b/lib/screens/auth/signup_screen.dart new file mode 100644 index 00000000..b1469362 --- /dev/null +++ b/lib/screens/auth/signup_screen.dart @@ -0,0 +1,275 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:go_router/go_router.dart'; + +import '../../providers/auth_provider.dart'; +import '../../providers/tickets_provider.dart'; +import '../../widgets/responsive_body.dart'; + +class SignUpScreen extends ConsumerStatefulWidget { + const SignUpScreen({super.key}); + + @override + ConsumerState createState() => _SignUpScreenState(); +} + +class _SignUpScreenState extends ConsumerState { + final _formKey = GlobalKey(); + final _fullNameController = TextEditingController(); + final _emailController = TextEditingController(); + final _passwordController = TextEditingController(); + final _confirmPasswordController = TextEditingController(); + + final Set _selectedOfficeIds = {}; + double _passwordStrength = 0.0; + String _passwordStrengthLabel = 'Very weak'; + Color _passwordStrengthColor = Colors.red; + + bool _isLoading = false; + + @override + void initState() { + super.initState(); + _passwordController.addListener(_updatePasswordStrength); + } + + @override + void dispose() { + _passwordController.removeListener(_updatePasswordStrength); + _fullNameController.dispose(); + _emailController.dispose(); + _passwordController.dispose(); + _confirmPasswordController.dispose(); + super.dispose(); + } + + Future _handleSignUp() async { + if (!_formKey.currentState!.validate()) return; + if (_selectedOfficeIds.isEmpty) { + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar(content: Text('Select at least one office.')), + ); + return; + } + setState(() => _isLoading = true); + + final auth = ref.read(authControllerProvider); + try { + await auth.signUp( + email: _emailController.text.trim(), + password: _passwordController.text, + fullName: _fullNameController.text.trim(), + officeIds: _selectedOfficeIds.toList(), + ); + if (mounted) { + context.go('/login'); + } + } on Exception catch (error) { + if (mounted) { + ScaffoldMessenger.of( + context, + ).showSnackBar(SnackBar(content: Text('Sign up failed: $error'))); + } + } finally { + if (mounted) { + setState(() => _isLoading = false); + } + } + } + + @override + Widget build(BuildContext context) { + final officesAsync = ref.watch(officesOnceProvider); + return Scaffold( + appBar: AppBar(title: const Text('Create Account')), + body: ResponsiveBody( + maxWidth: 480, + padding: const EdgeInsets.symmetric(vertical: 24), + child: Form( + key: _formKey, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Center( + child: Column( + children: [ + Image.asset('assets/tasq_ico.png', height: 72, width: 72), + const SizedBox(height: 12), + Text( + 'TasQ', + style: Theme.of(context).textTheme.headlineSmall, + ), + ], + ), + ), + const SizedBox(height: 24), + TextFormField( + controller: _fullNameController, + decoration: const InputDecoration(labelText: 'Full name'), + textInputAction: TextInputAction.next, + validator: (value) { + if (value == null || value.trim().isEmpty) { + return 'Full name is required.'; + } + return null; + }, + ), + const SizedBox(height: 12), + TextFormField( + controller: _emailController, + decoration: const InputDecoration(labelText: 'Email'), + keyboardType: TextInputType.emailAddress, + textInputAction: TextInputAction.next, + validator: (value) { + if (value == null || value.trim().isEmpty) { + return 'Email is required.'; + } + return null; + }, + ), + const SizedBox(height: 12), + TextFormField( + controller: _passwordController, + decoration: const InputDecoration(labelText: 'Password'), + obscureText: true, + textInputAction: TextInputAction.next, + validator: (value) { + if (value == null || value.isEmpty) { + return 'Password is required.'; + } + if (value.length < 6) { + return 'Use at least 6 characters.'; + } + return null; + }, + ), + const SizedBox(height: 8), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Password strength: $_passwordStrengthLabel', + style: Theme.of(context).textTheme.labelMedium, + ), + const SizedBox(height: 6), + LinearProgressIndicator( + value: _passwordStrength, + minHeight: 8, + borderRadius: BorderRadius.circular(8), + color: _passwordStrengthColor, + backgroundColor: Theme.of( + context, + ).colorScheme.surfaceContainerHighest, + ), + ], + ), + const SizedBox(height: 12), + TextFormField( + controller: _confirmPasswordController, + decoration: const InputDecoration( + labelText: 'Confirm password', + ), + obscureText: true, + textInputAction: TextInputAction.done, + onFieldSubmitted: (_) { + if (!_isLoading) { + _handleSignUp(); + } + }, + validator: (value) { + if (value == null || value.isEmpty) { + return 'Confirm your password.'; + } + if (value != _passwordController.text) { + return 'Passwords do not match.'; + } + return null; + }, + ), + const SizedBox(height: 16), + Text('Offices', style: Theme.of(context).textTheme.titleSmall), + const SizedBox(height: 8), + officesAsync.when( + data: (offices) { + if (offices.isEmpty) { + return const Text('No offices available.'); + } + return Column( + children: offices + .map( + (office) => CheckboxListTile( + value: _selectedOfficeIds.contains(office.id), + onChanged: _isLoading + ? null + : (selected) { + setState(() { + if (selected == true) { + _selectedOfficeIds.add(office.id); + } else { + _selectedOfficeIds.remove(office.id); + } + }); + }, + title: Text(office.name), + controlAffinity: ListTileControlAffinity.leading, + contentPadding: EdgeInsets.zero, + ), + ) + .toList(), + ); + }, + loading: () => const LinearProgressIndicator(), + error: (error, _) => Text('Failed to load offices: $error'), + ), + const SizedBox(height: 24), + FilledButton( + onPressed: _isLoading ? null : _handleSignUp, + child: _isLoading + ? const SizedBox( + height: 18, + width: 18, + child: CircularProgressIndicator(strokeWidth: 2), + ) + : const Text('Create Account'), + ), + const SizedBox(height: 12), + TextButton( + onPressed: _isLoading ? null : () => context.go('/login'), + child: const Text('Back to sign in'), + ), + ], + ), + ), + ), + ); + } + + void _updatePasswordStrength() { + final text = _passwordController.text; + var score = 0; + if (text.length >= 8) score++; + if (text.length >= 12) score++; + if (RegExp(r'[A-Z]').hasMatch(text)) score++; + if (RegExp(r'[a-z]').hasMatch(text)) score++; + if (RegExp(r'\d').hasMatch(text)) score++; + if (RegExp(r'[!@#$%^&*(),.?":{}|<>\[\]\\/+=;_-]').hasMatch(text)) { + score++; + } + + final normalized = (score / 6).clamp(0.0, 1.0); + final (label, color) = switch (normalized) { + <= 0.2 => ('Very weak', Colors.red), + <= 0.4 => ('Weak', Colors.deepOrange), + <= 0.6 => ('Fair', Colors.orange), + <= 0.8 => ('Strong', Colors.green), + _ => ('Excellent', Colors.teal), + }; + + setState(() { + _passwordStrength = normalized; + _passwordStrengthLabel = label; + _passwordStrengthColor = color; + }); + } +} diff --git a/lib/screens/dashboard/dashboard_screen.dart b/lib/screens/dashboard/dashboard_screen.dart new file mode 100644 index 00000000..ad7cc021 --- /dev/null +++ b/lib/screens/dashboard/dashboard_screen.dart @@ -0,0 +1,637 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; + +import '../../models/profile.dart'; +import '../../models/task.dart'; +import '../../models/task_assignment.dart'; +import '../../models/ticket.dart'; +import '../../models/ticket_message.dart'; +import '../../providers/profile_provider.dart'; +import '../../providers/tasks_provider.dart'; +import '../../providers/tickets_provider.dart'; +import '../../widgets/responsive_body.dart'; + +class DashboardMetrics { + DashboardMetrics({ + required this.newTicketsToday, + required this.closedToday, + required this.openTickets, + required this.avgResponse, + required this.avgTriage, + required this.longestResponse, + required this.tasksCreatedToday, + required this.tasksCompletedToday, + required this.openTasks, + required this.staffRows, + }); + + final int newTicketsToday; + final int closedToday; + final int openTickets; + + final Duration? avgResponse; + final Duration? avgTriage; + final Duration? longestResponse; + + final int tasksCreatedToday; + final int tasksCompletedToday; + final int openTasks; + + final List staffRows; +} + +class StaffRowMetrics { + StaffRowMetrics({ + required this.userId, + required this.name, + required this.status, + required this.ticketsRespondedToday, + required this.tasksClosedToday, + }); + + final String userId; + final String name; + final String status; + final int ticketsRespondedToday; + final int tasksClosedToday; +} + +final dashboardMetricsProvider = Provider>((ref) { + final ticketsAsync = ref.watch(ticketsProvider); + final tasksAsync = ref.watch(tasksProvider); + final profilesAsync = ref.watch(profilesProvider); + final assignmentsAsync = ref.watch(taskAssignmentsProvider); + final messagesAsync = ref.watch(ticketMessagesAllProvider); + + final asyncValues = [ + ticketsAsync, + tasksAsync, + profilesAsync, + assignmentsAsync, + messagesAsync, + ]; + + if (asyncValues.any((value) => value.hasError)) { + final errorValue = asyncValues.firstWhere((value) => value.hasError); + final error = errorValue.error ?? 'Failed to load dashboard'; + final stack = errorValue.stackTrace ?? StackTrace.current; + return AsyncError(error, stack); + } + + if (asyncValues.any((value) => value.isLoading)) { + return const AsyncLoading(); + } + + final tickets = ticketsAsync.valueOrNull ?? const []; + final tasks = tasksAsync.valueOrNull ?? const []; + final profiles = profilesAsync.valueOrNull ?? const []; + final assignments = assignmentsAsync.valueOrNull ?? const []; + final messages = messagesAsync.valueOrNull ?? const []; + + final now = DateTime.now(); + final startOfDay = DateTime(now.year, now.month, now.day); + + final staffProfiles = profiles + .where((profile) => profile.role == 'it_staff') + .toList(); + final staffIds = profiles + .where( + (profile) => + profile.role == 'admin' || + profile.role == 'dispatcher' || + profile.role == 'it_staff', + ) + .map((profile) => profile.id) + .toSet(); + + bool isToday(DateTime value) => !value.isBefore(startOfDay); + + final firstStaffMessageByTicket = {}; + final lastStaffMessageByUser = {}; + final respondedTicketsByUser = >{}; + for (final message in messages) { + final ticketId = message.ticketId; + final senderId = message.senderId; + if (ticketId != null && senderId != null && staffIds.contains(senderId)) { + final current = firstStaffMessageByTicket[ticketId]; + if (current == null || message.createdAt.isBefore(current)) { + firstStaffMessageByTicket[ticketId] = message.createdAt; + } + final last = lastStaffMessageByUser[senderId]; + if (last == null || message.createdAt.isAfter(last)) { + lastStaffMessageByUser[senderId] = message.createdAt; + } + if (isToday(message.createdAt)) { + respondedTicketsByUser + .putIfAbsent(senderId, () => {}) + .add(ticketId); + } + } + } + + DateTime? respondedAtForTicket(Ticket ticket) { + final staffMessageAt = firstStaffMessageByTicket[ticket.id]; + if (staffMessageAt != null) { + return staffMessageAt; + } + if (ticket.promotedAt != null) { + return ticket.promotedAt; + } + return null; + } + + Duration? responseDuration(Ticket ticket) { + final respondedAt = respondedAtForTicket(ticket); + if (respondedAt == null) { + return null; + } + final duration = respondedAt.difference(ticket.createdAt); + return duration.isNegative ? Duration.zero : duration; + } + + Duration? triageDuration(Ticket ticket) { + final respondedAt = respondedAtForTicket(ticket); + if (respondedAt == null) { + return null; + } + final triageEnd = _earliestDate(ticket.promotedAt, ticket.closedAt); + if (triageEnd == null) { + return null; + } + final duration = triageEnd.difference(respondedAt); + return duration.isNegative ? Duration.zero : duration; + } + + final ticketsToday = tickets.where((ticket) => isToday(ticket.createdAt)); + final closedToday = tickets.where( + (ticket) => ticket.closedAt != null && isToday(ticket.closedAt!), + ); + final openTickets = tickets.where((ticket) => ticket.status != 'closed'); + + final responseDurationsToday = ticketsToday + .map(responseDuration) + .whereType() + .toList(); + final triageDurationsToday = ticketsToday + .map(triageDuration) + .whereType() + .toList(); + + final avgResponse = _averageDuration(responseDurationsToday); + final avgTriage = _averageDuration(triageDurationsToday); + final longestResponse = responseDurationsToday.isEmpty + ? null + : responseDurationsToday.reduce( + (a, b) => a.inSeconds >= b.inSeconds ? a : b, + ); + + final tasksCreatedToday = tasks.where((task) => isToday(task.createdAt)); + final tasksCompletedToday = tasks.where( + (task) => task.completedAt != null && isToday(task.completedAt!), + ); + final openTasks = tasks.where((task) => task.status != 'completed'); + + final taskById = {for (final task in tasks) task.id: task}; + final staffOnTask = {}; + for (final assignment in assignments) { + final task = taskById[assignment.taskId]; + if (task == null) { + continue; + } + if (task.status == 'in_progress') { + staffOnTask.add(assignment.userId); + } + } + + final tasksClosedByUser = >{}; + for (final assignment in assignments) { + final task = taskById[assignment.taskId]; + if (task == null || task.completedAt == null) { + continue; + } + if (!isToday(task.completedAt!)) { + continue; + } + tasksClosedByUser + .putIfAbsent(assignment.userId, () => {}) + .add(task.id); + } + + const triageWindow = Duration(minutes: 1); + final triageCutoff = now.subtract(triageWindow); + + final staffRows = staffProfiles.map((staff) { + final lastMessage = lastStaffMessageByUser[staff.id]; + final ticketsResponded = respondedTicketsByUser[staff.id]?.length ?? 0; + final tasksClosed = tasksClosedByUser[staff.id]?.length ?? 0; + final onTask = staffOnTask.contains(staff.id); + final inTriage = lastMessage != null && lastMessage.isAfter(triageCutoff); + final status = onTask + ? 'On task' + : inTriage + ? 'In triage' + : 'Vacant'; + + return StaffRowMetrics( + userId: staff.id, + name: staff.fullName.isNotEmpty ? staff.fullName : staff.id, + status: status, + ticketsRespondedToday: ticketsResponded, + tasksClosedToday: tasksClosed, + ); + }).toList(); + + return AsyncData( + DashboardMetrics( + newTicketsToday: ticketsToday.length, + closedToday: closedToday.length, + openTickets: openTickets.length, + avgResponse: avgResponse, + avgTriage: avgTriage, + longestResponse: longestResponse, + tasksCreatedToday: tasksCreatedToday.length, + tasksCompletedToday: tasksCompletedToday.length, + openTasks: openTasks.length, + staffRows: staffRows, + ), + ); +}); + +class DashboardScreen extends StatelessWidget { + const DashboardScreen({super.key}); + + @override + Widget build(BuildContext context) { + return ResponsiveBody( + child: LayoutBuilder( + builder: (context, constraints) { + final isWide = constraints.maxWidth >= 980; + final metricsColumn = Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.only(top: 16, bottom: 8), + child: Align( + alignment: Alignment.center, + child: Text( + 'Dashboard', + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.titleLarge?.copyWith( + fontWeight: FontWeight.w700, + ), + ), + ), + ), + const _DashboardStatusBanner(), + _sectionTitle(context, 'Core Daily KPIs'), + _cardGrid(context, [ + _MetricCard( + title: 'New tickets today', + valueBuilder: (metrics) => metrics.newTicketsToday.toString(), + ), + _MetricCard( + title: 'Closed today', + valueBuilder: (metrics) => metrics.closedToday.toString(), + ), + _MetricCard( + title: 'Open tickets', + valueBuilder: (metrics) => metrics.openTickets.toString(), + ), + ]), + const SizedBox(height: 20), + _sectionTitle(context, 'TAT / Response'), + _cardGrid(context, [ + _MetricCard( + title: 'Avg response', + valueBuilder: (metrics) => + _formatDuration(metrics.avgResponse), + ), + _MetricCard( + title: 'Avg triage', + valueBuilder: (metrics) => _formatDuration(metrics.avgTriage), + ), + _MetricCard( + title: 'Longest response', + valueBuilder: (metrics) => + _formatDuration(metrics.longestResponse), + ), + ]), + const SizedBox(height: 20), + _sectionTitle(context, 'Task Flow'), + _cardGrid(context, [ + _MetricCard( + title: 'Tasks created', + valueBuilder: (metrics) => + metrics.tasksCreatedToday.toString(), + ), + _MetricCard( + title: 'Tasks completed', + valueBuilder: (metrics) => + metrics.tasksCompletedToday.toString(), + ), + _MetricCard( + title: 'Open tasks', + valueBuilder: (metrics) => metrics.openTasks.toString(), + ), + ]), + ], + ); + + final staffColumn = Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const SizedBox(height: 16), + _sectionTitle(context, 'IT Staff Pulse'), + const _StaffTable(), + ], + ); + + if (isWide) { + return Center( + child: ConstrainedBox( + constraints: BoxConstraints(minHeight: constraints.maxHeight), + child: Row( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + ConstrainedBox( + constraints: BoxConstraints( + maxWidth: constraints.maxWidth * 0.6, + ), + child: metricsColumn, + ), + const SizedBox(width: 20), + ConstrainedBox( + constraints: BoxConstraints( + maxWidth: constraints.maxWidth * 0.35, + ), + child: staffColumn, + ), + ], + ), + ), + ); + } + + return SingleChildScrollView( + padding: const EdgeInsets.only(bottom: 24), + child: Center( + child: ConstrainedBox( + constraints: BoxConstraints(minHeight: constraints.maxHeight), + child: Column( + mainAxisSize: MainAxisSize.min, + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + metricsColumn, + const SizedBox(height: 12), + staffColumn, + ], + ), + ), + ), + ); + }, + ), + ); + } + + Widget _sectionTitle(BuildContext context, String title) { + return Padding( + padding: const EdgeInsets.only(bottom: 12), + child: Text( + title, + style: Theme.of( + context, + ).textTheme.titleMedium?.copyWith(fontWeight: FontWeight.w700), + ), + ); + } + + Widget _cardGrid(BuildContext context, List cards) { + return LayoutBuilder( + builder: (context, constraints) { + final width = constraints.maxWidth; + final columns = width >= 900 + ? 3 + : width >= 620 + ? 2 + : 1; + final spacing = 12.0; + final cardWidth = (width - (columns - 1) * spacing) / columns; + return Wrap( + alignment: WrapAlignment.center, + runAlignment: WrapAlignment.center, + spacing: spacing, + runSpacing: spacing, + children: cards + .map((card) => SizedBox(width: cardWidth, child: card)) + .toList(), + ); + }, + ); + } +} + +class _DashboardStatusBanner extends ConsumerWidget { + const _DashboardStatusBanner(); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final metricsAsync = ref.watch(dashboardMetricsProvider); + return metricsAsync.when( + data: (_) => const SizedBox.shrink(), + loading: () => const Padding( + padding: EdgeInsets.only(bottom: 12), + child: LinearProgressIndicator(minHeight: 2), + ), + error: (error, _) => Padding( + padding: const EdgeInsets.only(bottom: 12), + child: Text( + 'Dashboard data error: $error', + style: Theme.of(context).textTheme.bodySmall?.copyWith( + color: Theme.of(context).colorScheme.error, + ), + ), + ), + ); + } +} + +class _MetricCard extends ConsumerWidget { + const _MetricCard({required this.title, required this.valueBuilder}); + + final String title; + final String Function(DashboardMetrics metrics) valueBuilder; + + @override + Widget build(BuildContext context, WidgetRef ref) { + final metricsAsync = ref.watch(dashboardMetricsProvider); + final value = metricsAsync.when( + data: (metrics) => valueBuilder(metrics), + loading: () => '—', + error: (error, _) => 'Error', + ); + + return Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.surface, + borderRadius: BorderRadius.circular(16), + border: Border.all(color: Theme.of(context).colorScheme.outlineVariant), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + title, + style: Theme.of( + context, + ).textTheme.labelLarge?.copyWith(fontWeight: FontWeight.w600), + ), + const SizedBox(height: 10), + Text( + value, + style: Theme.of( + context, + ).textTheme.headlineSmall?.copyWith(fontWeight: FontWeight.w700), + ), + ], + ), + ); + } +} + +class _StaffTable extends StatelessWidget { + const _StaffTable(); + + @override + Widget build(BuildContext context) { + return Container( + padding: const EdgeInsets.all(16), + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.surface, + borderRadius: BorderRadius.circular(16), + border: Border.all(color: Theme.of(context).colorScheme.outlineVariant), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: const [ + _StaffTableHeader(), + SizedBox(height: 8), + _StaffTableBody(), + ], + ), + ); + } +} + +class _StaffTableHeader extends StatelessWidget { + const _StaffTableHeader(); + + @override + Widget build(BuildContext context) { + final style = Theme.of( + context, + ).textTheme.labelMedium?.copyWith(fontWeight: FontWeight.w700); + return Row( + children: [ + Expanded(flex: 3, child: Text('IT Staff', style: style)), + Expanded(flex: 2, child: Text('Status', style: style)), + Expanded(flex: 2, child: Text('Tickets', style: style)), + Expanded(flex: 2, child: Text('Tasks', style: style)), + ], + ); + } +} + +class _StaffTableBody extends ConsumerWidget { + const _StaffTableBody(); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final metricsAsync = ref.watch(dashboardMetricsProvider); + return metricsAsync.when( + data: (metrics) { + if (metrics.staffRows.isEmpty) { + return Text( + 'No IT staff available.', + style: Theme.of(context).textTheme.bodySmall, + ); + } + return Column( + children: metrics.staffRows + .map((row) => _StaffRow(row: row)) + .toList(), + ); + }, + loading: () => const Text('Loading staff...'), + error: (error, _) => Text('Failed to load staff: $error'), + ); + } +} + +class _StaffRow extends StatelessWidget { + const _StaffRow({required this.row}); + + final StaffRowMetrics row; + + @override + Widget build(BuildContext context) { + final valueStyle = Theme.of(context).textTheme.bodySmall; + return Padding( + padding: const EdgeInsets.symmetric(vertical: 6), + child: Row( + children: [ + Expanded(flex: 3, child: Text(row.name, style: valueStyle)), + Expanded(flex: 2, child: Text(row.status, style: valueStyle)), + Expanded( + flex: 2, + child: Text( + row.ticketsRespondedToday.toString(), + style: valueStyle, + ), + ), + Expanded( + flex: 2, + child: Text(row.tasksClosedToday.toString(), style: valueStyle), + ), + ], + ), + ); + } +} + +Duration? _averageDuration(List durations) { + if (durations.isEmpty) { + return null; + } + final totalSeconds = durations + .map((duration) => duration.inSeconds) + .reduce((a, b) => a + b); + return Duration(seconds: (totalSeconds / durations.length).round()); +} + +DateTime? _earliestDate(DateTime? first, DateTime? second) { + if (first == null) return second; + if (second == null) return first; + return first.isBefore(second) ? first : second; +} + +String _formatDuration(Duration? duration) { + if (duration == null) { + return 'Pending'; + } + if (duration.inSeconds < 60) { + return 'Less than a minute'; + } + final hours = duration.inHours; + final minutes = duration.inMinutes.remainder(60); + if (hours > 0) { + return '${hours}h ${minutes}m'; + } + return '${minutes}m'; +} diff --git a/lib/screens/notifications/notifications_screen.dart b/lib/screens/notifications/notifications_screen.dart new file mode 100644 index 00000000..31568890 --- /dev/null +++ b/lib/screens/notifications/notifications_screen.dart @@ -0,0 +1,147 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:go_router/go_router.dart'; + +import '../../providers/notifications_provider.dart'; +import '../../providers/profile_provider.dart'; +import '../../providers/tasks_provider.dart'; +import '../../providers/tickets_provider.dart'; +import '../../widgets/responsive_body.dart'; + +class NotificationsScreen extends ConsumerWidget { + const NotificationsScreen({super.key}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final notificationsAsync = ref.watch(notificationsProvider); + final profilesAsync = ref.watch(profilesProvider); + final ticketsAsync = ref.watch(ticketsProvider); + final tasksAsync = ref.watch(tasksProvider); + + final profileById = { + for (final profile in profilesAsync.valueOrNull ?? []) + profile.id: profile, + }; + final ticketById = { + for (final ticket in ticketsAsync.valueOrNull ?? []) ticket.id: ticket, + }; + final taskById = { + for (final task in tasksAsync.valueOrNull ?? []) task.id: task, + }; + + return ResponsiveBody( + child: notificationsAsync.when( + data: (items) { + if (items.isEmpty) { + return const Center(child: Text('No notifications yet.')); + } + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Padding( + padding: const EdgeInsets.only(top: 16, bottom: 8), + child: Text( + 'Notifications', + style: Theme.of( + context, + ).textTheme.titleLarge?.copyWith(fontWeight: FontWeight.w700), + ), + ), + Expanded( + child: ListView.separated( + padding: const EdgeInsets.only(bottom: 24), + itemCount: items.length, + separatorBuilder: (context, index) => + const SizedBox(height: 12), + itemBuilder: (context, index) { + final item = items[index]; + final actorName = item.actorId == null + ? 'System' + : (profileById[item.actorId]?.fullName ?? + item.actorId!); + final ticketSubject = item.ticketId == null + ? 'Ticket' + : (ticketById[item.ticketId]?.subject ?? + item.ticketId!); + final taskTitle = item.taskId == null + ? 'Task' + : (taskById[item.taskId]?.title ?? item.taskId!); + final subtitle = item.taskId != null + ? taskTitle + : ticketSubject; + + final title = _notificationTitle(item.type, actorName); + final icon = _notificationIcon(item.type); + + return ListTile( + leading: Icon(icon), + title: Text(title), + subtitle: Text(subtitle), + trailing: item.isUnread + ? const Icon( + Icons.circle, + size: 10, + color: Colors.red, + ) + : null, + onTap: () async { + final ticketId = item.ticketId; + final taskId = item.taskId; + if (ticketId != null) { + await ref + .read(notificationsControllerProvider) + .markReadForTicket(ticketId); + } else if (taskId != null) { + await ref + .read(notificationsControllerProvider) + .markReadForTask(taskId); + } else if (item.isUnread) { + await ref + .read(notificationsControllerProvider) + .markRead(item.id); + } + if (!context.mounted) return; + if (taskId != null) { + context.go('/tasks/$taskId'); + } else if (ticketId != null) { + context.go('/tickets/$ticketId'); + } + }, + ); + }, + ), + ), + ], + ); + }, + loading: () => const Center(child: CircularProgressIndicator()), + error: (error, _) => + Center(child: Text('Failed to load notifications: $error')), + ), + ); + } + + String _notificationTitle(String type, String actorName) { + switch (type) { + case 'assignment': + return '$actorName assigned you'; + case 'created': + return '$actorName created a new item'; + case 'mention': + default: + return '$actorName mentioned you'; + } + } + + IconData _notificationIcon(String type) { + switch (type) { + case 'assignment': + return Icons.assignment_ind_outlined; + case 'created': + return Icons.campaign_outlined; + case 'mention': + default: + return Icons.alternate_email; + } + } +} diff --git a/lib/screens/shared/under_development_screen.dart b/lib/screens/shared/under_development_screen.dart new file mode 100644 index 00000000..c897cbc9 --- /dev/null +++ b/lib/screens/shared/under_development_screen.dart @@ -0,0 +1,84 @@ +import 'package:flutter/material.dart'; + +import '../../widgets/responsive_body.dart'; + +class UnderDevelopmentScreen extends StatelessWidget { + const UnderDevelopmentScreen({ + super.key, + required this.title, + required this.subtitle, + required this.icon, + }); + + final String title; + final String subtitle; + final IconData icon; + + @override + Widget build(BuildContext context) { + return ResponsiveBody( + maxWidth: 720, + padding: const EdgeInsets.symmetric(vertical: 32), + child: Center( + child: Card( + child: Padding( + padding: const EdgeInsets.all(32), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + width: 72, + height: 72, + decoration: BoxDecoration( + color: Theme.of( + context, + ).colorScheme.primaryContainer.withValues(alpha: 0.7), + borderRadius: BorderRadius.circular(20), + ), + child: Icon( + icon, + size: 36, + color: Theme.of(context).colorScheme.primary, + ), + ), + const SizedBox(height: 20), + Text( + title, + style: Theme.of(context).textTheme.headlineSmall?.copyWith( + fontWeight: FontWeight.w700, + ), + textAlign: TextAlign.center, + ), + const SizedBox(height: 8), + Text( + subtitle, + style: Theme.of(context).textTheme.bodyMedium?.copyWith( + color: Theme.of(context).colorScheme.onSurfaceVariant, + ), + textAlign: TextAlign.center, + ), + const SizedBox(height: 20), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 16, + vertical: 8, + ), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(999), + color: Theme.of( + context, + ).colorScheme.surfaceContainerHighest, + ), + child: Text( + 'Under development', + style: Theme.of(context).textTheme.labelLarge, + ), + ), + ], + ), + ), + ), + ), + ); + } +} diff --git a/lib/screens/tasks/task_detail_screen.dart b/lib/screens/tasks/task_detail_screen.dart new file mode 100644 index 00000000..bac414ee --- /dev/null +++ b/lib/screens/tasks/task_detail_screen.dart @@ -0,0 +1,822 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; + +import '../../models/profile.dart'; +import '../../models/task.dart'; +import '../../models/task_assignment.dart'; +import '../../models/ticket.dart'; +import '../../models/ticket_message.dart'; +import '../../providers/notifications_provider.dart'; +import '../../providers/profile_provider.dart'; +import '../../providers/tasks_provider.dart'; +import '../../providers/tickets_provider.dart'; +import '../../providers/typing_provider.dart'; +import '../../widgets/responsive_body.dart'; +import '../../widgets/task_assignment_section.dart'; +import '../../widgets/typing_dots.dart'; + +class TaskDetailScreen extends ConsumerStatefulWidget { + const TaskDetailScreen({super.key, required this.taskId}); + + final String taskId; + + @override + ConsumerState createState() => _TaskDetailScreenState(); +} + +class _TaskDetailScreenState extends ConsumerState { + final _messageController = TextEditingController(); + static const List _statusOptions = [ + 'queued', + 'in_progress', + 'completed', + ]; + String? _mentionQuery; + int? _mentionStart; + List _mentionResults = []; + + @override + void initState() { + super.initState(); + Future.microtask( + () => ref + .read(notificationsControllerProvider) + .markReadForTask(widget.taskId), + ); + } + + @override + void dispose() { + _messageController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final tasksAsync = ref.watch(tasksProvider); + final ticketsAsync = ref.watch(ticketsProvider); + final officesAsync = ref.watch(officesProvider); + final profileAsync = ref.watch(currentProfileProvider); + final assignmentsAsync = ref.watch(taskAssignmentsProvider); + final taskMessagesAsync = ref.watch(taskMessagesProvider(widget.taskId)); + final profilesAsync = ref.watch(profilesProvider); + + final task = _findTask(tasksAsync, widget.taskId); + if (task == null) { + return const ResponsiveBody( + child: Center(child: Text('Task not found.')), + ); + } + + final ticketId = task.ticketId; + final typingChannelId = task.id; + final ticket = ticketId == null + ? null + : _findTicket(ticketsAsync, ticketId); + final officeById = { + for (final office in officesAsync.valueOrNull ?? []) office.id: office, + }; + final officeId = ticket?.officeId ?? task.officeId; + final officeName = officeId == null + ? 'Unassigned office' + : (officeById[officeId]?.name ?? officeId); + final description = ticket?.description ?? task.description; + + final canAssign = profileAsync.maybeWhen( + data: (profile) => profile != null && _canAssignStaff(profile.role), + orElse: () => false, + ); + final showAssign = canAssign && task.status != 'completed'; + final assignments = assignmentsAsync.valueOrNull ?? []; + final canUpdateStatus = _canUpdateStatus( + profileAsync.valueOrNull, + assignments, + task.id, + ); + final typingState = ref.watch(typingIndicatorProvider(typingChannelId)); + final canSendMessages = task.status != 'completed'; + + final messagesAsync = _mergeMessages( + taskMessagesAsync, + ticketId == null ? null : ref.watch(ticketMessagesProvider(ticketId)), + ); + + return ResponsiveBody( + child: Column( + children: [ + Padding( + padding: const EdgeInsets.only(top: 16, bottom: 8), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Align( + alignment: Alignment.center, + child: Text( + task.title.isNotEmpty ? task.title : 'Task ${task.id}', + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.titleLarge?.copyWith( + fontWeight: FontWeight.w700, + ), + ), + ), + const SizedBox(height: 6), + Align( + alignment: Alignment.center, + child: Text( + _createdByLabel(profilesAsync, task, ticket), + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.bodySmall, + ), + ), + const SizedBox(height: 8), + Wrap( + spacing: 12, + runSpacing: 8, + crossAxisAlignment: WrapCrossAlignment.center, + children: [ + _buildStatusChip(context, task, canUpdateStatus), + Text('Office: $officeName'), + ], + ), + if (description.isNotEmpty) ...[ + const SizedBox(height: 12), + Text(description), + ], + const SizedBox(height: 12), + _buildTatSection(task), + const SizedBox(height: 16), + TaskAssignmentSection(taskId: task.id, canAssign: showAssign), + ], + ), + ), + const Divider(height: 1), + Expanded( + child: messagesAsync.when( + data: (messages) => _buildMessages( + context, + messages, + profilesAsync.valueOrNull ?? [], + ), + loading: () => const Center(child: CircularProgressIndicator()), + error: (error, _) => + Center(child: Text('Failed to load messages: $error')), + ), + ), + SafeArea( + top: false, + child: Padding( + padding: const EdgeInsets.fromLTRB(0, 8, 0, 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (typingState.userIds.isNotEmpty) + Padding( + padding: const EdgeInsets.only(bottom: 6), + child: Container( + padding: const EdgeInsets.symmetric( + horizontal: 10, + vertical: 6, + ), + decoration: BoxDecoration( + color: Theme.of( + context, + ).colorScheme.surfaceContainerHighest, + borderRadius: BorderRadius.circular(16), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + _typingLabel(typingState.userIds, profilesAsync), + style: Theme.of(context).textTheme.labelSmall, + ), + const SizedBox(width: 8), + TypingDots( + size: 8, + color: Theme.of(context).colorScheme.primary, + ), + ], + ), + ), + ), + if (_mentionQuery != null) + Padding( + padding: const EdgeInsets.only(bottom: 8), + child: _buildMentionList(profilesAsync), + ), + if (!canSendMessages) + Padding( + padding: const EdgeInsets.only(bottom: 8), + child: Text( + 'Messaging is disabled for completed tasks.', + style: Theme.of(context).textTheme.labelMedium, + ), + ), + Row( + children: [ + Expanded( + child: TextField( + controller: _messageController, + decoration: const InputDecoration( + hintText: 'Message...', + ), + textInputAction: TextInputAction.send, + enabled: canSendMessages, + onChanged: (_) => _handleComposerChanged( + profilesAsync.valueOrNull ?? [], + ref.read(currentUserIdProvider), + canSendMessages, + typingChannelId, + ), + onSubmitted: (_) => _handleSendMessage( + task, + profilesAsync.valueOrNull ?? [], + ref.read(currentUserIdProvider), + canSendMessages, + typingChannelId, + ), + ), + ), + const SizedBox(width: 12), + IconButton( + tooltip: 'Send', + onPressed: canSendMessages + ? () => _handleSendMessage( + task, + profilesAsync.valueOrNull ?? [], + ref.read(currentUserIdProvider), + canSendMessages, + typingChannelId, + ) + : null, + icon: const Icon(Icons.send), + ), + ], + ), + ], + ), + ), + ), + ], + ), + ); + } + + String _createdByLabel( + AsyncValue> profilesAsync, + Task task, + Ticket? ticket, + ) { + final creatorId = task.creatorId ?? ticket?.creatorId; + if (creatorId == null || creatorId.isEmpty) { + return 'Created by: Unknown'; + } + final profile = profilesAsync.valueOrNull + ?.where((item) => item.id == creatorId) + .firstOrNull; + final name = profile?.fullName.isNotEmpty == true + ? profile!.fullName + : creatorId; + return 'Created by: $name'; + } + + Widget _buildMessages( + BuildContext context, + List messages, + List profiles, + ) { + if (messages.isEmpty) { + return const Center(child: Text('No messages yet.')); + } + final profileById = {for (final profile in profiles) profile.id: profile}; + final currentUserId = ref.read(currentUserIdProvider); + + return ListView.builder( + reverse: true, + padding: const EdgeInsets.fromLTRB(0, 16, 0, 72), + itemCount: messages.length, + itemBuilder: (context, index) { + final message = messages[index]; + final isMe = currentUserId != null && message.senderId == currentUserId; + final senderName = message.senderId == null + ? 'System' + : profileById[message.senderId]?.fullName ?? message.senderId!; + final bubbleColor = isMe + ? Theme.of(context).colorScheme.primaryContainer + : Theme.of(context).colorScheme.surfaceContainerHighest; + final textColor = isMe + ? Theme.of(context).colorScheme.onPrimaryContainer + : Theme.of(context).colorScheme.onSurface; + + return Align( + alignment: isMe ? Alignment.centerRight : Alignment.centerLeft, + child: Column( + crossAxisAlignment: isMe + ? CrossAxisAlignment.end + : CrossAxisAlignment.start, + children: [ + if (!isMe) + Padding( + padding: const EdgeInsets.only(bottom: 4), + child: Text( + senderName, + style: Theme.of(context).textTheme.labelSmall, + ), + ), + Container( + margin: const EdgeInsets.only(bottom: 12), + padding: const EdgeInsets.all(12), + constraints: const BoxConstraints(maxWidth: 520), + decoration: BoxDecoration( + color: bubbleColor, + borderRadius: BorderRadius.only( + topLeft: const Radius.circular(16), + topRight: const Radius.circular(16), + bottomLeft: Radius.circular(isMe ? 16 : 4), + bottomRight: Radius.circular(isMe ? 4 : 16), + ), + ), + child: _buildMentionText(message.content, textColor, profiles), + ), + ], + ), + ); + }, + ); + } + + Widget _buildTatSection(Task task) { + final animateQueue = task.status == 'queued'; + final animateExecution = task.startedAt != null && task.completedAt == null; + + if (!animateQueue && !animateExecution) { + return _buildTatContent(task, DateTime.now()); + } + + return StreamBuilder( + stream: Stream.periodic(const Duration(seconds: 1), (tick) => tick), + builder: (context, snapshot) { + return _buildTatContent(task, DateTime.now()); + }, + ); + } + + Widget _buildTatContent(Task task, DateTime now) { + final queueDuration = task.status == 'queued' + ? now.difference(task.createdAt) + : _safeDuration(task.startedAt?.difference(task.createdAt)); + final executionDuration = task.status == 'queued' + ? null + : task.startedAt == null + ? null + : task.completedAt == null + ? now.difference(task.startedAt!) + : task.completedAt!.difference(task.startedAt!); + + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text('Queue duration: ${_formatDuration(queueDuration)}'), + const SizedBox(height: 8), + Text('Task execution time: ${_formatDuration(executionDuration)}'), + ], + ); + } + + Duration? _safeDuration(Duration? duration) { + if (duration == null) { + return null; + } + return duration.isNegative ? Duration.zero : duration; + } + + String _formatDuration(Duration? duration) { + if (duration == null) { + return 'Pending'; + } + if (duration.inSeconds < 60) { + return 'Less than a minute'; + } + final hours = duration.inHours; + final minutes = duration.inMinutes.remainder(60); + if (hours > 0) { + return '${hours}h ${minutes}m'; + } + return '${minutes}m'; + } + + Widget _buildMentionText( + String text, + Color baseColor, + List profiles, + ) { + final mentionColor = Theme.of(context).colorScheme.primary; + final spans = _mentionSpans(text, baseColor, mentionColor, profiles); + return RichText( + text: TextSpan( + children: spans, + style: TextStyle(color: baseColor), + ), + ); + } + + List _mentionSpans( + String text, + Color baseColor, + Color mentionColor, + List profiles, + ) { + final mentionLabels = profiles + .map( + (profile) => profile.fullName.isEmpty ? profile.id : profile.fullName, + ) + .where((label) => label.isNotEmpty) + .map(_escapeRegExp) + .toList(); + final pattern = mentionLabels.isEmpty + ? r'@\S+' + : '@(?:${mentionLabels.join('|')})'; + final matches = RegExp(pattern, caseSensitive: false).allMatches(text); + if (matches.isEmpty) { + return [ + TextSpan( + text: text, + style: TextStyle(color: baseColor), + ), + ]; + } + + final spans = []; + var lastIndex = 0; + for (final match in matches) { + if (match.start > lastIndex) { + spans.add( + TextSpan( + text: text.substring(lastIndex, match.start), + style: TextStyle(color: baseColor), + ), + ); + } + spans.add( + TextSpan( + text: text.substring(match.start, match.end), + style: TextStyle(color: mentionColor, fontWeight: FontWeight.w700), + ), + ); + lastIndex = match.end; + } + if (lastIndex < text.length) { + spans.add( + TextSpan( + text: text.substring(lastIndex), + style: TextStyle(color: baseColor), + ), + ); + } + return spans; + } + + String _escapeRegExp(String value) { + return value.replaceAllMapped( + RegExp(r'[\\^$.*+?()[\]{}|]'), + (match) => '\\${match[0]}', + ); + } + + AsyncValue> _mergeMessages( + AsyncValue> taskMessages, + AsyncValue>? ticketMessages, + ) { + if (ticketMessages == null) { + return taskMessages; + } + return taskMessages.when( + data: (taskData) => ticketMessages.when( + data: (ticketData) { + final byId = { + for (final message in taskData) message.id: message, + for (final message in ticketData) message.id: message, + }; + final merged = byId.values.toList() + ..sort((a, b) => b.createdAt.compareTo(a.createdAt)); + return AsyncValue.data(merged); + }, + loading: () => const AsyncLoading>(), + error: (error, stackTrace) => + AsyncError>(error, stackTrace), + ), + loading: () => const AsyncLoading>(), + error: (error, stackTrace) => + AsyncError>(error, stackTrace), + ); + } + + Future _handleSendMessage( + Task task, + List profiles, + String? currentUserId, + bool canSendMessages, + String typingChannelId, + ) async { + if (!canSendMessages) return; + final content = _messageController.text.trim(); + if (content.isEmpty) { + return; + } + ref.read(typingIndicatorProvider(typingChannelId).notifier).stopTyping(); + final message = await ref + .read(ticketsControllerProvider) + .sendTaskMessage( + taskId: task.id, + ticketId: task.ticketId, + content: content, + ); + final mentionUserIds = _extractMentionedUserIds( + content, + profiles, + currentUserId, + ); + if (mentionUserIds.isNotEmpty && currentUserId != null) { + await ref + .read(notificationsControllerProvider) + .createMentionNotifications( + userIds: mentionUserIds, + actorId: currentUserId, + ticketId: task.ticketId, + taskId: task.id, + messageId: message.id, + ); + } + ref.invalidate(taskMessagesProvider(task.id)); + if (task.ticketId != null) { + ref.invalidate(ticketMessagesProvider(task.ticketId!)); + } + if (mounted) { + _messageController.clear(); + _clearMentions(); + } + } + + void _handleComposerChanged( + List profiles, + String? currentUserId, + bool canSendMessages, + String typingChannelId, + ) { + if (!canSendMessages) { + ref.read(typingIndicatorProvider(typingChannelId).notifier).stopTyping(); + _clearMentions(); + return; + } + ref.read(typingIndicatorProvider(typingChannelId).notifier).userTyping(); + final text = _messageController.text; + final cursor = _messageController.selection.baseOffset; + if (cursor < 0) { + _clearMentions(); + return; + } + final textBeforeCursor = text.substring(0, cursor); + final atIndex = textBeforeCursor.lastIndexOf('@'); + if (atIndex == -1) { + _clearMentions(); + return; + } + if (atIndex > 0 && !_isWhitespace(textBeforeCursor[atIndex - 1])) { + _clearMentions(); + return; + } + final query = textBeforeCursor.substring(atIndex + 1); + if (query.contains(RegExp(r'\s'))) { + _clearMentions(); + return; + } + final normalizedQuery = query.toLowerCase(); + final candidates = profiles.where((profile) { + if (profile.id == currentUserId) { + return false; + } + final label = profile.fullName.isEmpty ? profile.id : profile.fullName; + return label.toLowerCase().contains(normalizedQuery); + }).toList(); + setState(() { + _mentionQuery = query; + _mentionStart = atIndex; + _mentionResults = candidates.take(6).toList(); + }); + } + + void _clearMentions() { + if (_mentionQuery == null && _mentionResults.isEmpty) { + return; + } + setState(() { + _mentionQuery = null; + _mentionStart = null; + _mentionResults = []; + }); + } + + bool _isWhitespace(String char) { + return char.trim().isEmpty; + } + + List _extractMentionedUserIds( + String content, + List profiles, + String? currentUserId, + ) { + final lower = content.toLowerCase(); + final mentioned = {}; + for (final profile in profiles) { + if (profile.id == currentUserId) continue; + final label = profile.fullName.isEmpty ? profile.id : profile.fullName; + if (label.isEmpty) continue; + final token = '@${label.toLowerCase()}'; + if (lower.contains(token)) { + mentioned.add(profile.id); + } + } + return mentioned.toList(); + } + + Widget _buildMentionList(AsyncValue> profilesAsync) { + if (_mentionResults.isEmpty) { + return const SizedBox.shrink(); + } + + return Container( + constraints: const BoxConstraints(maxHeight: 200), + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.surfaceContainerHighest, + borderRadius: BorderRadius.circular(12), + ), + child: ListView.separated( + shrinkWrap: true, + padding: const EdgeInsets.symmetric(vertical: 8), + itemCount: _mentionResults.length, + separatorBuilder: (context, index) => const SizedBox(height: 4), + itemBuilder: (context, index) { + final profile = _mentionResults[index]; + final label = profile.fullName.isEmpty + ? profile.id + : profile.fullName; + return ListTile( + dense: true, + title: Text(label), + onTap: () => _insertMention(profile), + ); + }, + ), + ); + } + + void _insertMention(Profile profile) { + final start = _mentionStart; + if (start == null) { + _clearMentions(); + return; + } + final text = _messageController.text; + final cursor = _messageController.selection.baseOffset; + final end = cursor < 0 ? text.length : cursor; + final label = profile.fullName.isEmpty ? profile.id : profile.fullName; + final mentionText = '@$label '; + final updated = text.replaceRange(start, end, mentionText); + final newCursor = start + mentionText.length; + _messageController.text = updated; + _messageController.selection = TextSelection.collapsed(offset: newCursor); + _clearMentions(); + } + + String _typingLabel( + Set userIds, + AsyncValue> profilesAsync, + ) { + final profileById = { + for (final profile in profilesAsync.valueOrNull ?? []) + profile.id: profile, + }; + final names = userIds + .map((id) => profileById[id]?.fullName ?? id) + .where((name) => name.isNotEmpty) + .toList(); + if (names.isEmpty) { + return 'Someone is typing...'; + } + if (names.length == 1) { + return '${names.first} is typing...'; + } + if (names.length == 2) { + return '${names[0]} and ${names[1]} are typing...'; + } + return '${names[0]}, ${names[1]} and others are typing...'; + } + + Task? _findTask(AsyncValue> tasksAsync, String taskId) { + return tasksAsync.maybeWhen( + data: (tasks) => tasks.where((task) => task.id == taskId).firstOrNull, + orElse: () => null, + ); + } + + Ticket? _findTicket(AsyncValue> ticketsAsync, String ticketId) { + return ticketsAsync.maybeWhen( + data: (tickets) => + tickets.where((ticket) => ticket.id == ticketId).firstOrNull, + orElse: () => null, + ); + } + + bool _canAssignStaff(String role) { + return role == 'admin' || role == 'dispatcher' || role == 'it_staff'; + } + + Widget _buildStatusChip( + BuildContext context, + Task task, + bool canUpdateStatus, + ) { + final chip = Chip( + label: Text(task.status.toUpperCase()), + backgroundColor: _statusColor(context, task.status), + labelStyle: TextStyle( + color: _statusTextColor(context, task.status), + fontWeight: FontWeight.w600, + ), + ); + + if (!canUpdateStatus) { + return chip; + } + + return PopupMenuButton( + onSelected: (value) async { + await ref + .read(tasksControllerProvider) + .updateTaskStatus(taskId: task.id, status: value); + ref.invalidate(tasksProvider); + }, + itemBuilder: (context) => _statusOptions + .map( + (status) => PopupMenuItem( + value: status, + child: Text(_statusMenuLabel(status)), + ), + ) + .toList(), + child: chip, + ); + } + + String _statusMenuLabel(String status) { + return switch (status) { + 'queued' => 'Queued', + 'in_progress' => 'In progress', + 'completed' => 'Completed', + _ => status, + }; + } + + Color _statusColor(BuildContext context, String status) { + return switch (status) { + 'queued' => Colors.blueGrey.shade200, + 'in_progress' => Colors.blue.shade300, + 'completed' => Colors.green.shade300, + _ => Theme.of(context).colorScheme.surfaceContainerHighest, + }; + } + + Color _statusTextColor(BuildContext context, String status) { + return switch (status) { + 'queued' => Colors.blueGrey.shade900, + 'in_progress' => Colors.blue.shade900, + 'completed' => Colors.green.shade900, + _ => Theme.of(context).colorScheme.onSurfaceVariant, + }; + } + + bool _canUpdateStatus( + Profile? profile, + List assignments, + String taskId, + ) { + if (profile == null) { + return false; + } + final isGlobal = + profile.role == 'admin' || + profile.role == 'dispatcher' || + profile.role == 'it_staff'; + if (isGlobal) { + return true; + } + return assignments.any( + (assignment) => + assignment.taskId == taskId && assignment.userId == profile.id, + ); + } +} + +extension _FirstOrNull on Iterable { + T? get firstOrNull => isEmpty ? null : first; +} diff --git a/lib/screens/tasks/tasks_list_screen.dart b/lib/screens/tasks/tasks_list_screen.dart new file mode 100644 index 00000000..45b360e7 --- /dev/null +++ b/lib/screens/tasks/tasks_list_screen.dart @@ -0,0 +1,319 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:go_router/go_router.dart'; + +import '../../models/notification_item.dart'; +import '../../models/task.dart'; +import '../../providers/notifications_provider.dart'; +import '../../providers/profile_provider.dart'; +import '../../providers/tasks_provider.dart'; +import '../../providers/tickets_provider.dart'; +import '../../providers/typing_provider.dart'; +import '../../widgets/responsive_body.dart'; +import '../../widgets/typing_dots.dart'; + +class TasksListScreen extends ConsumerWidget { + const TasksListScreen({super.key}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final tasksAsync = ref.watch(tasksProvider); + final ticketsAsync = ref.watch(ticketsProvider); + final officesAsync = ref.watch(officesProvider); + final profileAsync = ref.watch(currentProfileProvider); + final notificationsAsync = ref.watch(notificationsProvider); + + final canCreate = profileAsync.maybeWhen( + data: (profile) => + profile != null && + (profile.role == 'admin' || + profile.role == 'dispatcher' || + profile.role == 'it_staff'), + orElse: () => false, + ); + + final ticketById = { + for (final ticket in ticketsAsync.valueOrNull ?? []) ticket.id: ticket, + }; + final officeById = { + for (final office in officesAsync.valueOrNull ?? []) office.id: office, + }; + + return Scaffold( + body: ResponsiveBody( + child: tasksAsync.when( + data: (tasks) { + if (tasks.isEmpty) { + return const Center(child: Text('No tasks yet.')); + } + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Padding( + padding: const EdgeInsets.only(top: 16, bottom: 8), + child: Align( + alignment: Alignment.center, + child: Text( + 'Tasks', + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.titleLarge?.copyWith( + fontWeight: FontWeight.w700, + ), + ), + ), + ), + Expanded( + child: ListView.separated( + padding: const EdgeInsets.only(bottom: 24), + itemCount: tasks.length, + separatorBuilder: (context, index) => + const SizedBox(height: 12), + itemBuilder: (context, index) { + final task = tasks[index]; + final ticketId = task.ticketId; + final ticket = ticketId == null + ? null + : ticketById[ticketId]; + final officeId = ticket?.officeId ?? task.officeId; + final officeName = officeId == null + ? 'Unassigned office' + : (officeById[officeId]?.name ?? officeId); + final subtitle = _buildSubtitle(officeName, task.status); + final hasMention = _hasTaskMention( + notificationsAsync, + task, + ); + final typingChannelId = task.id; + final typingState = ref.watch( + typingIndicatorProvider(typingChannelId), + ); + final showTyping = typingState.userIds.isNotEmpty; + + return ListTile( + leading: _buildQueueBadge(context, task), + title: Text( + task.title.isNotEmpty + ? task.title + : (ticket?.subject ?? 'Task ${task.id}'), + ), + subtitle: Text(subtitle), + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + _buildStatusChip(context, task.status), + if (showTyping) ...[ + const SizedBox(width: 6), + TypingDots( + size: 6, + color: Theme.of(context).colorScheme.primary, + ), + ], + if (hasMention) + const Padding( + padding: EdgeInsets.only(left: 8), + child: Icon( + Icons.circle, + size: 10, + color: Colors.red, + ), + ), + ], + ), + onTap: () => context.go('/tasks/${task.id}'), + ); + }, + ), + ), + ], + ); + }, + loading: () => const Center(child: CircularProgressIndicator()), + error: (error, _) => + Center(child: Text('Failed to load tasks: $error')), + ), + ), + floatingActionButton: canCreate + ? FloatingActionButton.extended( + onPressed: () => _showCreateTaskDialog(context, ref), + icon: const Icon(Icons.add), + label: const Text('New Task'), + ) + : null, + ); + } + + Future _showCreateTaskDialog( + BuildContext context, + WidgetRef ref, + ) async { + final titleController = TextEditingController(); + final descriptionController = TextEditingController(); + String? selectedOfficeId; + + await showDialog( + context: context, + builder: (dialogContext) { + return StatefulBuilder( + builder: (context, setState) { + final officesAsync = ref.watch(officesProvider); + return AlertDialog( + title: const Text('Create Task'), + content: SizedBox( + width: 360, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + TextField( + controller: titleController, + decoration: const InputDecoration( + labelText: 'Task title', + ), + ), + const SizedBox(height: 12), + TextField( + controller: descriptionController, + decoration: const InputDecoration( + labelText: 'Description', + ), + maxLines: 3, + ), + const SizedBox(height: 12), + officesAsync.when( + data: (offices) { + if (offices.isEmpty) { + return const Text('No offices available.'); + } + selectedOfficeId ??= offices.first.id; + return DropdownButtonFormField( + initialValue: selectedOfficeId, + decoration: const InputDecoration( + labelText: 'Office', + ), + items: offices + .map( + (office) => DropdownMenuItem( + value: office.id, + child: Text(office.name), + ), + ) + .toList(), + onChanged: (value) => + setState(() => selectedOfficeId = value), + ); + }, + loading: () => const Align( + alignment: Alignment.centerLeft, + child: CircularProgressIndicator(), + ), + error: (error, _) => + Text('Failed to load offices: $error'), + ), + ], + ), + ), + actions: [ + TextButton( + onPressed: () => Navigator.of(dialogContext).pop(), + child: const Text('Cancel'), + ), + FilledButton( + onPressed: () async { + final title = titleController.text.trim(); + final description = descriptionController.text.trim(); + final officeId = selectedOfficeId; + if (title.isEmpty || officeId == null) { + return; + } + await ref + .read(tasksControllerProvider) + .createTask( + title: title, + description: description, + officeId: officeId, + ); + if (context.mounted) { + Navigator.of(dialogContext).pop(); + } + }, + child: const Text('Create'), + ), + ], + ); + }, + ); + }, + ); + } + + bool _hasTaskMention( + AsyncValue> notificationsAsync, + Task task, + ) { + return notificationsAsync.maybeWhen( + data: (items) => items.any( + (item) => + item.isUnread && + (item.taskId == task.id || item.ticketId == task.ticketId), + ), + orElse: () => false, + ); + } + + Widget _buildQueueBadge(BuildContext context, Task task) { + final queueOrder = task.queueOrder; + final isQueued = task.status == 'queued'; + if (!isQueued || queueOrder == null) { + return const Icon(Icons.fact_check_outlined); + } + return Container( + width: 40, + height: 40, + alignment: Alignment.center, + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.primaryContainer, + borderRadius: BorderRadius.circular(12), + ), + child: Text( + '#$queueOrder', + style: Theme.of(context).textTheme.labelMedium?.copyWith( + fontWeight: FontWeight.w700, + color: Theme.of(context).colorScheme.onPrimaryContainer, + ), + ), + ); + } + + String _buildSubtitle(String officeName, String status) { + final statusLabel = status.toUpperCase(); + return '$officeName · $statusLabel'; + } + + Widget _buildStatusChip(BuildContext context, String status) { + return Chip( + label: Text(status.toUpperCase()), + backgroundColor: _statusColor(context, status), + labelStyle: TextStyle( + color: _statusTextColor(context, status), + fontWeight: FontWeight.w600, + ), + ); + } + + Color _statusColor(BuildContext context, String status) { + return switch (status) { + 'queued' => Colors.blueGrey.shade200, + 'in_progress' => Colors.blue.shade300, + 'completed' => Colors.green.shade300, + _ => Theme.of(context).colorScheme.surfaceContainerHighest, + }; + } + + Color _statusTextColor(BuildContext context, String status) { + return switch (status) { + 'queued' => Colors.blueGrey.shade900, + 'in_progress' => Colors.blue.shade900, + 'completed' => Colors.green.shade900, + _ => Theme.of(context).colorScheme.onSurfaceVariant, + }; + } +} diff --git a/lib/screens/tickets/ticket_detail_screen.dart b/lib/screens/tickets/ticket_detail_screen.dart new file mode 100644 index 00000000..8356d628 --- /dev/null +++ b/lib/screens/tickets/ticket_detail_screen.dart @@ -0,0 +1,859 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:go_router/go_router.dart'; +import 'package:supabase_flutter/supabase_flutter.dart'; + +import '../../models/office.dart'; +import '../../models/profile.dart'; +import '../../models/task.dart'; +import '../../models/ticket.dart'; +import '../../models/ticket_message.dart'; +import '../../providers/notifications_provider.dart'; +import '../../providers/profile_provider.dart'; +import '../../providers/tasks_provider.dart'; +import '../../providers/tickets_provider.dart'; +import '../../providers/typing_provider.dart'; +import '../../widgets/responsive_body.dart'; +import '../../widgets/task_assignment_section.dart'; +import '../../widgets/typing_dots.dart'; + +class TicketDetailScreen extends ConsumerStatefulWidget { + const TicketDetailScreen({super.key, required this.ticketId}); + + final String ticketId; + + @override + ConsumerState createState() => _TicketDetailScreenState(); +} + +class _TicketDetailScreenState extends ConsumerState { + final _messageController = TextEditingController(); + static const List _statusOptions = ['pending', 'promoted', 'closed']; + String? _mentionQuery; + int? _mentionStart; + List _mentionResults = []; + + @override + void initState() { + super.initState(); + Future.microtask( + () => ref + .read(notificationsControllerProvider) + .markReadForTicket(widget.ticketId), + ); + } + + @override + void dispose() { + _messageController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + final ticket = _findTicket(ref, widget.ticketId); + final messagesAsync = ref.watch(ticketMessagesProvider(widget.ticketId)); + final profilesAsync = ref.watch(profilesProvider); + final officesAsync = ref.watch(officesProvider); + final currentProfileAsync = ref.watch(currentProfileProvider); + final tasksAsync = ref.watch(tasksProvider); + final typingState = ref.watch(typingIndicatorProvider(widget.ticketId)); + final canPromote = currentProfileAsync.maybeWhen( + data: (profile) => profile != null && _canPromote(profile.role), + orElse: () => false, + ); + final canSendMessages = ticket != null && ticket.status != 'closed'; + final canAssign = currentProfileAsync.maybeWhen( + data: (profile) => profile != null && _canAssignStaff(profile.role), + orElse: () => false, + ); + final showAssign = canAssign && ticket?.status != 'closed'; + final taskForTicket = ticket == null + ? null + : _findTaskForTicket(tasksAsync, ticket.id); + final hasStaffMessage = _hasStaffMessage( + messagesAsync.valueOrNull ?? const [], + profilesAsync.valueOrNull ?? const [], + ); + final effectiveRespondedAt = ticket?.promotedAt != null && !hasStaffMessage + ? ticket!.promotedAt + : ticket?.respondedAt; + + return ResponsiveBody( + child: Column( + children: [ + if (ticket != null) + Padding( + padding: const EdgeInsets.symmetric(vertical: 16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Align( + alignment: Alignment.center, + child: Text( + ticket.subject, + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.titleLarge?.copyWith( + fontWeight: FontWeight.w700, + ), + ), + ), + const SizedBox(height: 6), + Align( + alignment: Alignment.center, + child: Text( + _filedByLabel(profilesAsync, ticket), + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.bodySmall, + ), + ), + const SizedBox(height: 8), + Wrap( + spacing: 12, + runSpacing: 8, + crossAxisAlignment: WrapCrossAlignment.center, + children: [ + _buildStatusChip(context, ref, ticket, canPromote), + Text('Office: ${_officeLabel(officesAsync, ticket)}'), + ], + ), + const SizedBox(height: 12), + Text(ticket.description), + const SizedBox(height: 12), + _buildTatRow(context, ticket, effectiveRespondedAt), + if (taskForTicket != null) ...[ + const SizedBox(height: 16), + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: TaskAssignmentSection( + taskId: taskForTicket.id, + canAssign: showAssign, + ), + ), + const SizedBox(width: 8), + IconButton( + tooltip: 'Open task', + onPressed: () => + context.go('/tasks/${taskForTicket.id}'), + icon: const Icon(Icons.open_in_new), + ), + ], + ), + ], + ], + ), + ), + const Divider(height: 1), + Expanded( + child: messagesAsync.when( + data: (messages) { + if (messages.isEmpty) { + return const Center(child: Text('No messages yet.')); + } + final profileById = { + for (final profile in profilesAsync.valueOrNull ?? []) + profile.id: profile, + }; + return ListView.builder( + reverse: true, + padding: const EdgeInsets.fromLTRB(0, 16, 0, 72), + itemCount: messages.length, + itemBuilder: (context, index) { + final message = messages[index]; + final currentUserId = + Supabase.instance.client.auth.currentUser?.id; + final isMe = + currentUserId != null && + message.senderId == currentUserId; + final senderName = message.senderId == null + ? 'System' + : profileById[message.senderId]?.fullName ?? + message.senderId!; + final bubbleColor = isMe + ? Theme.of(context).colorScheme.primaryContainer + : Theme.of(context).colorScheme.surfaceContainerHighest; + final textColor = isMe + ? Theme.of(context).colorScheme.onPrimaryContainer + : Theme.of(context).colorScheme.onSurface; + + return Align( + alignment: isMe + ? Alignment.centerRight + : Alignment.centerLeft, + child: Column( + crossAxisAlignment: isMe + ? CrossAxisAlignment.end + : CrossAxisAlignment.start, + children: [ + if (!isMe) + Padding( + padding: const EdgeInsets.only(bottom: 4), + child: Text( + senderName, + style: Theme.of(context).textTheme.labelSmall, + ), + ), + Container( + margin: const EdgeInsets.only(bottom: 12), + padding: const EdgeInsets.all(12), + constraints: const BoxConstraints(maxWidth: 520), + decoration: BoxDecoration( + color: bubbleColor, + borderRadius: BorderRadius.only( + topLeft: const Radius.circular(16), + topRight: const Radius.circular(16), + bottomLeft: Radius.circular(isMe ? 16 : 4), + bottomRight: Radius.circular(isMe ? 4 : 16), + ), + ), + child: _buildMentionText( + message.content, + textColor, + profilesAsync.valueOrNull ?? [], + ), + ), + ], + ), + ); + }, + ); + }, + loading: () => const Center(child: CircularProgressIndicator()), + error: (error, _) => + Center(child: Text('Failed to load messages: $error')), + ), + ), + SafeArea( + top: false, + child: Padding( + padding: const EdgeInsets.fromLTRB(0, 8, 0, 12), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (typingState.userIds.isNotEmpty) + Padding( + padding: const EdgeInsets.only(bottom: 6), + child: Container( + padding: const EdgeInsets.symmetric( + horizontal: 10, + vertical: 6, + ), + decoration: BoxDecoration( + color: Theme.of( + context, + ).colorScheme.surfaceContainerHighest, + borderRadius: BorderRadius.circular(16), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + _typingLabel(typingState.userIds, profilesAsync), + style: Theme.of(context).textTheme.labelSmall, + ), + const SizedBox(width: 8), + TypingDots( + size: 8, + color: Theme.of(context).colorScheme.primary, + ), + ], + ), + ), + ), + if (_mentionQuery != null) + Padding( + padding: const EdgeInsets.only(bottom: 8), + child: _buildMentionList(profilesAsync), + ), + if (!canSendMessages) + Padding( + padding: const EdgeInsets.only(bottom: 8), + child: Text( + 'Messaging is disabled for closed tickets.', + style: Theme.of(context).textTheme.labelMedium, + ), + ), + Row( + children: [ + Expanded( + child: TextField( + controller: _messageController, + decoration: const InputDecoration( + hintText: 'Message...', + ), + enabled: canSendMessages, + textInputAction: TextInputAction.send, + onChanged: canSendMessages + ? (_) => _handleComposerChanged( + profilesAsync.valueOrNull ?? [], + Supabase.instance.client.auth.currentUser?.id, + canSendMessages, + ) + : null, + onSubmitted: canSendMessages + ? (_) => _handleSendMessage( + ref, + profilesAsync.valueOrNull ?? [], + Supabase.instance.client.auth.currentUser?.id, + canSendMessages, + ) + : null, + ), + ), + const SizedBox(width: 12), + IconButton( + tooltip: 'Send', + onPressed: canSendMessages + ? () => _handleSendMessage( + ref, + profilesAsync.valueOrNull ?? [], + Supabase.instance.client.auth.currentUser?.id, + canSendMessages, + ) + : null, + icon: const Icon(Icons.send), + ), + ], + ), + ], + ), + ), + ), + ], + ), + ); + } + + String _filedByLabel(AsyncValue> profilesAsync, Ticket ticket) { + final creatorId = ticket.creatorId; + if (creatorId == null || creatorId.isEmpty) { + return 'Filed by: Unknown'; + } + final profile = profilesAsync.valueOrNull + ?.where((item) => item.id == creatorId) + .firstOrNull; + final name = profile?.fullName.isNotEmpty == true + ? profile!.fullName + : creatorId; + return 'Filed by: $name'; + } + + Ticket? _findTicket(WidgetRef ref, String ticketId) { + final ticketsAsync = ref.watch(ticketsProvider); + return ticketsAsync.maybeWhen( + data: (tickets) => + tickets.where((ticket) => ticket.id == ticketId).firstOrNull, + orElse: () => null, + ); + } + + bool _hasStaffMessage(List messages, List profiles) { + if (messages.isEmpty || profiles.isEmpty) { + return false; + } + final staffIds = profiles + .where( + (profile) => + profile.role == 'admin' || + profile.role == 'dispatcher' || + profile.role == 'it_staff', + ) + .map((profile) => profile.id) + .toSet(); + if (staffIds.isEmpty) { + return false; + } + return messages.any( + (message) => + message.senderId != null && staffIds.contains(message.senderId!), + ); + } + + Task? _findTaskForTicket(AsyncValue> tasksAsync, String ticketId) { + return tasksAsync.maybeWhen( + data: (tasks) => + tasks.where((task) => task.ticketId == ticketId).firstOrNull, + orElse: () => null, + ); + } + + Future _handleSendMessage( + WidgetRef ref, + List profiles, + String? currentUserId, + bool canSendMessages, + ) async { + if (!canSendMessages) return; + final content = _messageController.text.trim(); + if (content.isEmpty) return; + ref.read(typingIndicatorProvider(widget.ticketId).notifier).stopTyping(); + final message = await ref + .read(ticketsControllerProvider) + .sendTicketMessage(ticketId: widget.ticketId, content: content); + final mentionUserIds = _extractMentionedUserIds( + content, + profiles, + currentUserId, + ); + if (mentionUserIds.isNotEmpty && currentUserId != null) { + await ref + .read(notificationsControllerProvider) + .createMentionNotifications( + userIds: mentionUserIds, + actorId: currentUserId, + ticketId: widget.ticketId, + messageId: message.id, + ); + } + ref.invalidate(ticketMessagesProvider(widget.ticketId)); + if (mounted) { + _messageController.clear(); + _clearMentions(); + } + } + + List _extractMentionedUserIds( + String content, + List profiles, + String? currentUserId, + ) { + final lower = content.toLowerCase(); + final mentioned = {}; + for (final profile in profiles) { + if (profile.id == currentUserId) continue; + final label = profile.fullName.isEmpty ? profile.id : profile.fullName; + if (label.isEmpty) continue; + final token = '@${label.toLowerCase()}'; + if (lower.contains(token)) { + mentioned.add(profile.id); + } + } + return mentioned.toList(); + } + + void _handleComposerChanged( + List profiles, + String? currentUserId, + bool canSendMessages, + ) { + if (!canSendMessages) { + ref.read(typingIndicatorProvider(widget.ticketId).notifier).stopTyping(); + _clearMentions(); + return; + } + ref.read(typingIndicatorProvider(widget.ticketId).notifier).userTyping(); + final text = _messageController.text; + final cursor = _messageController.selection.baseOffset; + if (cursor < 0) { + _clearMentions(); + return; + } + final textBeforeCursor = text.substring(0, cursor); + final atIndex = textBeforeCursor.lastIndexOf('@'); + if (atIndex == -1) { + _clearMentions(); + return; + } + if (atIndex > 0 && !_isWhitespace(textBeforeCursor[atIndex - 1])) { + _clearMentions(); + return; + } + final query = textBeforeCursor.substring(atIndex + 1); + if (query.contains(RegExp(r'\s'))) { + _clearMentions(); + return; + } + final normalizedQuery = query.toLowerCase(); + final candidates = profiles.where((profile) { + if (profile.id == currentUserId) { + return false; + } + final label = profile.fullName.isEmpty ? profile.id : profile.fullName; + return label.toLowerCase().contains(normalizedQuery); + }).toList(); + setState(() { + _mentionQuery = query; + _mentionStart = atIndex; + _mentionResults = candidates.take(6).toList(); + }); + } + + void _clearMentions() { + if (_mentionQuery == null && _mentionResults.isEmpty) { + return; + } + setState(() { + _mentionQuery = null; + _mentionStart = null; + _mentionResults = []; + }); + } + + bool _isWhitespace(String char) { + return char.trim().isEmpty; + } + + String _typingLabel( + Set userIds, + AsyncValue> profilesAsync, + ) { + final profileById = { + for (final profile in profilesAsync.valueOrNull ?? []) + profile.id: profile, + }; + final names = userIds + .map((id) => profileById[id]?.fullName ?? id) + .where((name) => name.isNotEmpty) + .toList(); + if (names.isEmpty) { + return 'Someone is typing...'; + } + if (names.length == 1) { + return '${names.first} is typing...'; + } + if (names.length == 2) { + return '${names[0]} and ${names[1]} are typing...'; + } + return '${names[0]}, ${names[1]} and others are typing...'; + } + + Widget _buildMentionList(AsyncValue> profilesAsync) { + if (_mentionResults.isEmpty) { + return const SizedBox.shrink(); + } + + return Container( + constraints: const BoxConstraints(maxHeight: 200), + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.surfaceContainerHighest, + borderRadius: BorderRadius.circular(12), + ), + child: ListView.separated( + shrinkWrap: true, + padding: const EdgeInsets.symmetric(vertical: 8), + itemCount: _mentionResults.length, + separatorBuilder: (context, index) => const SizedBox(height: 4), + itemBuilder: (context, index) { + final profile = _mentionResults[index]; + final label = profile.fullName.isEmpty + ? profile.id + : profile.fullName; + return ListTile( + dense: true, + title: Text(label), + onTap: () => _insertMention(profile), + ); + }, + ), + ); + } + + void _insertMention(Profile profile) { + final start = _mentionStart; + if (start == null) { + _clearMentions(); + return; + } + final text = _messageController.text; + final cursor = _messageController.selection.baseOffset; + final end = cursor < 0 ? text.length : cursor; + final label = profile.fullName.isEmpty ? profile.id : profile.fullName; + final mentionText = '@$label '; + final updated = text.replaceRange(start, end, mentionText); + final newCursor = start + mentionText.length; + _messageController.text = updated; + _messageController.selection = TextSelection.collapsed(offset: newCursor); + _clearMentions(); + } + + Widget _buildTatRow( + BuildContext context, + Ticket ticket, + DateTime? respondedAtOverride, + ) { + final respondedAt = respondedAtOverride ?? ticket.respondedAt; + final responseDuration = respondedAt?.difference(ticket.createdAt); + final triageEnd = _earliestDate(ticket.promotedAt, ticket.closedAt); + final triageStart = respondedAt; + final triageDuration = triageStart == null || triageEnd == null + ? null + : triageEnd.difference(triageStart); + + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Response time: ${responseDuration == null ? 'Pending' : _formatDuration(responseDuration)}', + ), + const SizedBox(height: 8), + Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Expanded( + child: Text( + 'Triage duration: ${triageDuration == null ? 'Pending' : _formatDuration(triageDuration)}', + ), + ), + IconButton( + tooltip: 'View timeline', + onPressed: () => _showTimelineDialog(context, ticket), + icon: const Icon(Icons.access_time), + ), + ], + ), + ], + ); + } + + Widget _buildMentionText( + String text, + Color baseColor, + List profiles, + ) { + final mentionColor = Theme.of(context).colorScheme.primary; + final spans = _mentionSpans(text, baseColor, mentionColor, profiles); + return RichText( + text: TextSpan( + children: spans, + style: TextStyle(color: baseColor), + ), + ); + } + + List _mentionSpans( + String text, + Color baseColor, + Color mentionColor, + List profiles, + ) { + final mentionLabels = profiles + .map( + (profile) => profile.fullName.isEmpty ? profile.id : profile.fullName, + ) + .where((label) => label.isNotEmpty) + .map(_escapeRegExp) + .toList(); + final pattern = mentionLabels.isEmpty + ? r'@\S+' + : '@(?:${mentionLabels.join('|')})'; + final matches = RegExp(pattern, caseSensitive: false).allMatches(text); + if (matches.isEmpty) { + return [ + TextSpan( + text: text, + style: TextStyle(color: baseColor), + ), + ]; + } + + final spans = []; + var lastIndex = 0; + for (final match in matches) { + if (match.start > lastIndex) { + spans.add( + TextSpan( + text: text.substring(lastIndex, match.start), + style: TextStyle(color: baseColor), + ), + ); + } + spans.add( + TextSpan( + text: text.substring(match.start, match.end), + style: TextStyle(color: mentionColor, fontWeight: FontWeight.w700), + ), + ); + lastIndex = match.end; + } + if (lastIndex < text.length) { + spans.add( + TextSpan( + text: text.substring(lastIndex), + style: TextStyle(color: baseColor), + ), + ); + } + return spans; + } + + String _escapeRegExp(String value) { + return value.replaceAllMapped( + RegExp(r'[\\^$.*+?()[\]{}|]'), + (match) => '\\${match[0]}', + ); + } + + DateTime? _earliestDate(DateTime? first, DateTime? second) { + if (first == null) return second; + if (second == null) return first; + return first.isBefore(second) ? first : second; + } + + String _officeLabel(AsyncValue> officesAsync, Ticket ticket) { + final offices = officesAsync.valueOrNull ?? []; + final office = offices + .where((item) => item.id == ticket.officeId) + .firstOrNull; + return office?.name ?? ticket.officeId; + } + + String _formatDate(DateTime value) { + final local = value.toLocal(); + final monthNames = [ + 'Jan', + 'Feb', + 'Mar', + 'Apr', + 'May', + 'Jun', + 'Jul', + 'Aug', + 'Sep', + 'Oct', + 'Nov', + 'Dec', + ]; + final month = monthNames[local.month - 1]; + final day = local.day.toString().padLeft(2, '0'); + final year = local.year.toString(); + final hour24 = local.hour; + final hour12 = hour24 % 12 == 0 ? 12 : hour24 % 12; + final minute = local.minute.toString().padLeft(2, '0'); + final ampm = hour24 >= 12 ? 'PM' : 'AM'; + return '$month $day, $year $hour12:$minute $ampm'; + } + + Future _showTimelineDialog(BuildContext context, Ticket ticket) async { + await showDialog( + context: context, + builder: (dialogContext) { + return AlertDialog( + title: const Text('Ticket Timeline'), + content: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _timelineRow('Created', ticket.createdAt), + _timelineRow('Responded', ticket.respondedAt), + _timelineRow('Promoted', ticket.promotedAt), + _timelineRow('Closed', ticket.closedAt), + ], + ), + actions: [ + TextButton( + onPressed: () => Navigator.of(dialogContext).pop(), + child: const Text('Close'), + ), + ], + ); + }, + ); + } + + Widget _timelineRow(String label, DateTime? value) { + return Padding( + padding: const EdgeInsets.only(bottom: 8), + child: Text('$label: ${value == null ? '—' : _formatDate(value)}'), + ); + } + + String _formatDuration(Duration duration) { + if (duration.inSeconds < 60) { + return 'Less than a minute'; + } + final hours = duration.inHours; + final minutes = duration.inMinutes.remainder(60); + if (hours > 0) { + return '${hours}h ${minutes}m'; + } + return '${minutes}m'; + } + + Widget _buildStatusChip( + BuildContext context, + WidgetRef ref, + Ticket ticket, + bool canPromote, + ) { + final isLocked = ticket.status == 'promoted' || ticket.status == 'closed'; + final chip = Chip( + label: Text(_statusLabel(ticket.status)), + backgroundColor: _statusColor(context, ticket.status), + labelStyle: TextStyle( + color: _statusTextColor(context, ticket.status), + fontWeight: FontWeight.w600, + ), + ); + + if (isLocked) { + return chip; + } + + final availableStatuses = canPromote + ? _statusOptions + : _statusOptions.where((status) => status != 'promoted').toList(); + + return PopupMenuButton( + onSelected: (value) async { + await ref + .read(ticketsControllerProvider) + .updateTicketStatus(ticketId: ticket.id, status: value); + ref.invalidate(ticketsProvider); + }, + itemBuilder: (context) => availableStatuses + .map( + (status) => PopupMenuItem( + value: status, + child: Text(_statusMenuLabel(status)), + ), + ) + .toList(), + child: chip, + ); + } + + String _statusLabel(String status) { + return status.toUpperCase(); + } + + String _statusMenuLabel(String status) { + return switch (status) { + 'pending' => 'Pending', + 'promoted' => 'Promote to Task', + 'closed' => 'Close', + _ => status, + }; + } + + bool _canPromote(String role) { + return role == 'admin' || role == 'dispatcher' || role == 'it_staff'; + } + + bool _canAssignStaff(String role) { + return role == 'admin' || role == 'dispatcher' || role == 'it_staff'; + } + + Color _statusColor(BuildContext context, String status) { + return switch (status) { + 'pending' => Colors.amber.shade300, + 'promoted' => Colors.blue.shade300, + 'closed' => Colors.green.shade300, + _ => Theme.of(context).colorScheme.surfaceContainerHighest, + }; + } + + Color _statusTextColor(BuildContext context, String status) { + return switch (status) { + 'pending' => Colors.brown.shade900, + 'promoted' => Colors.blue.shade900, + 'closed' => Colors.green.shade900, + _ => Theme.of(context).colorScheme.onSurfaceVariant, + }; + } +} + +extension _FirstOrNull on Iterable { + T? get firstOrNull => isEmpty ? null : first; +} diff --git a/lib/screens/tickets/tickets_list_screen.dart b/lib/screens/tickets/tickets_list_screen.dart new file mode 100644 index 00000000..e07dd7b1 --- /dev/null +++ b/lib/screens/tickets/tickets_list_screen.dart @@ -0,0 +1,268 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:go_router/go_router.dart'; + +import '../../models/office.dart'; +import '../../models/notification_item.dart'; +import '../../providers/notifications_provider.dart'; +import '../../providers/tickets_provider.dart'; +import '../../providers/typing_provider.dart'; +import '../../widgets/responsive_body.dart'; +import '../../widgets/typing_dots.dart'; + +class TicketsListScreen extends ConsumerWidget { + const TicketsListScreen({super.key}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final ticketsAsync = ref.watch(ticketsProvider); + final officesAsync = ref.watch(officesProvider); + final notificationsAsync = ref.watch(notificationsProvider); + + return Scaffold( + body: ResponsiveBody( + child: ticketsAsync.when( + data: (tickets) { + if (tickets.isEmpty) { + return const Center(child: Text('No tickets yet.')); + } + final officeById = { + for (final office in officesAsync.valueOrNull ?? []) + office.id: office, + }; + final unreadByTicketId = _unreadByTicketId(notificationsAsync); + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + Padding( + padding: const EdgeInsets.only(top: 16, bottom: 8), + child: Align( + alignment: Alignment.center, + child: Text( + 'Tickets', + textAlign: TextAlign.center, + style: Theme.of(context).textTheme.titleLarge?.copyWith( + fontWeight: FontWeight.w700, + ), + ), + ), + ), + Expanded( + child: ListView.separated( + padding: const EdgeInsets.only(bottom: 24), + itemCount: tickets.length, + separatorBuilder: (context, index) => + const SizedBox(height: 12), + itemBuilder: (context, index) { + final ticket = tickets[index]; + final officeName = + officeById[ticket.officeId]?.name ?? ticket.officeId; + final hasMention = unreadByTicketId[ticket.id] == true; + final typingState = ref.watch( + typingIndicatorProvider(ticket.id), + ); + final showTyping = typingState.userIds.isNotEmpty; + return ListTile( + leading: const Icon(Icons.confirmation_number_outlined), + title: Text(ticket.subject), + subtitle: Text(officeName), + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + _buildStatusChip(context, ticket.status), + if (showTyping) ...[ + const SizedBox(width: 6), + TypingDots( + size: 6, + color: Theme.of(context).colorScheme.primary, + ), + ], + if (hasMention) + const Padding( + padding: EdgeInsets.only(left: 8), + child: Icon( + Icons.circle, + size: 10, + color: Colors.red, + ), + ), + ], + ), + onTap: () => context.go('/tickets/${ticket.id}'), + ); + }, + ), + ), + ], + ); + }, + loading: () => const Center(child: CircularProgressIndicator()), + error: (error, _) => + Center(child: Text('Failed to load tickets: $error')), + ), + ), + floatingActionButton: FloatingActionButton.extended( + onPressed: () => _showCreateTicketDialog(context, ref), + icon: const Icon(Icons.add), + label: const Text('New Ticket'), + ), + ); + } + + Future _showCreateTicketDialog( + BuildContext context, + WidgetRef ref, + ) async { + final subjectController = TextEditingController(); + final descriptionController = TextEditingController(); + Office? selectedOffice; + + await showDialog( + context: context, + builder: (dialogContext) { + return StatefulBuilder( + builder: (context, setState) { + return AlertDialog( + title: const Text('Create Ticket'), + content: Consumer( + builder: (context, ref, child) { + final officesAsync = ref.watch(officesProvider); + return SizedBox( + width: 360, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + TextField( + controller: subjectController, + decoration: const InputDecoration( + labelText: 'Subject', + ), + ), + const SizedBox(height: 12), + TextField( + controller: descriptionController, + decoration: const InputDecoration( + labelText: 'Description', + ), + maxLines: 3, + ), + const SizedBox(height: 12), + officesAsync.when( + data: (offices) { + if (offices.isEmpty) { + return const Text('No offices assigned.'); + } + selectedOffice ??= offices.first; + return DropdownButtonFormField( + key: ValueKey(selectedOffice?.id), + initialValue: selectedOffice, + items: offices + .map( + (office) => DropdownMenuItem( + value: office, + child: Text(office.name), + ), + ) + .toList(), + onChanged: (value) => + setState(() => selectedOffice = value), + decoration: const InputDecoration( + labelText: 'Office', + ), + ); + }, + loading: () => const LinearProgressIndicator(), + error: (error, _) => + Text('Failed to load offices: $error'), + ), + ], + ), + ); + }, + ), + actions: [ + TextButton( + onPressed: () => Navigator.of(dialogContext).pop(), + child: const Text('Cancel'), + ), + FilledButton( + onPressed: () async { + final subject = subjectController.text.trim(); + final description = descriptionController.text.trim(); + if (subject.isEmpty || + description.isEmpty || + selectedOffice == null) { + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar(content: Text('Fill out all fields.')), + ); + return; + } + await ref + .read(ticketsControllerProvider) + .createTicket( + subject: subject, + description: description, + officeId: selectedOffice!.id, + ); + ref.invalidate(ticketsProvider); + if (context.mounted) { + Navigator.of(dialogContext).pop(); + } + }, + child: const Text('Create'), + ), + ], + ); + }, + ); + }, + ); + } + + Map _unreadByTicketId( + AsyncValue> notificationsAsync, + ) { + return notificationsAsync.maybeWhen( + data: (items) { + final map = {}; + for (final item in items) { + if (item.ticketId == null) continue; + if (item.isUnread) { + map[item.ticketId!] = true; + } + } + return map; + }, + orElse: () => {}, + ); + } + + Widget _buildStatusChip(BuildContext context, String status) { + return Chip( + label: Text(status.toUpperCase()), + backgroundColor: _statusColor(context, status), + labelStyle: TextStyle( + color: _statusTextColor(context, status), + fontWeight: FontWeight.w600, + ), + ); + } + + Color _statusColor(BuildContext context, String status) { + return switch (status) { + 'pending' => Colors.amber.shade300, + 'promoted' => Colors.blue.shade300, + 'closed' => Colors.green.shade300, + _ => Theme.of(context).colorScheme.surfaceContainerHighest, + }; + } + + Color _statusTextColor(BuildContext context, String status) { + return switch (status) { + 'pending' => Colors.brown.shade900, + 'promoted' => Colors.blue.shade900, + 'closed' => Colors.green.shade900, + _ => Theme.of(context).colorScheme.onSurfaceVariant, + }; + } +} diff --git a/lib/theme/app_theme.dart b/lib/theme/app_theme.dart new file mode 100644 index 00000000..33fc206a --- /dev/null +++ b/lib/theme/app_theme.dart @@ -0,0 +1,188 @@ +import 'package:flutter/material.dart'; +import 'package:google_fonts/google_fonts.dart'; + +class AppTheme { + static ThemeData light() { + final base = ThemeData( + colorScheme: ColorScheme.fromSeed( + seedColor: const Color(0xFF0C4A6E), + brightness: Brightness.light, + ), + useMaterial3: true, + ); + + final textTheme = GoogleFonts.spaceGroteskTextTheme(base.textTheme); + + return base.copyWith( + textTheme: textTheme, + scaffoldBackgroundColor: const Color(0xFFF6F8FA), + appBarTheme: AppBarTheme( + backgroundColor: base.colorScheme.surface, + foregroundColor: base.colorScheme.onSurface, + elevation: 0, + centerTitle: false, + titleTextStyle: textTheme.titleLarge?.copyWith( + fontWeight: FontWeight.w700, + letterSpacing: 0.2, + ), + ), + cardTheme: CardThemeData( + color: base.colorScheme.surface, + elevation: 0.6, + margin: EdgeInsets.zero, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16), + side: BorderSide(color: base.colorScheme.outlineVariant), + ), + ), + dividerTheme: DividerThemeData( + color: base.colorScheme.outlineVariant, + thickness: 1, + ), + inputDecorationTheme: InputDecorationTheme( + filled: true, + fillColor: base.colorScheme.surface, + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + borderSide: BorderSide(color: base.colorScheme.outlineVariant), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + borderSide: BorderSide(color: base.colorScheme.outlineVariant), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + borderSide: BorderSide(color: base.colorScheme.primary, width: 1.5), + ), + ), + filledButtonTheme: FilledButtonThemeData( + style: FilledButton.styleFrom( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 14), + ), + ), + outlinedButtonTheme: OutlinedButtonThemeData( + style: OutlinedButton.styleFrom( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + side: BorderSide(color: base.colorScheme.outline), + padding: const EdgeInsets.symmetric(horizontal: 18, vertical: 12), + ), + ), + navigationRailTheme: NavigationRailThemeData( + backgroundColor: base.colorScheme.surface, + selectedIconTheme: IconThemeData(color: base.colorScheme.primary), + selectedLabelTextStyle: textTheme.labelLarge?.copyWith( + fontWeight: FontWeight.w600, + ), + unselectedIconTheme: IconThemeData(color: base.colorScheme.onSurface), + ), + navigationBarTheme: NavigationBarThemeData( + backgroundColor: base.colorScheme.surface, + indicatorColor: base.colorScheme.primaryContainer, + labelTextStyle: WidgetStateProperty.all( + textTheme.labelMedium?.copyWith(fontWeight: FontWeight.w600), + ), + ), + listTileTheme: ListTileThemeData( + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), + tileColor: base.colorScheme.surface, + ), + ); + } + + static ThemeData dark() { + final base = ThemeData( + colorScheme: ColorScheme.fromSeed( + seedColor: const Color(0xFF38BDF8), + brightness: Brightness.dark, + ), + useMaterial3: true, + ); + + final textTheme = GoogleFonts.spaceGroteskTextTheme(base.textTheme); + + return base.copyWith( + textTheme: textTheme, + scaffoldBackgroundColor: const Color(0xFF0B111A), + appBarTheme: AppBarTheme( + backgroundColor: base.colorScheme.surface, + foregroundColor: base.colorScheme.onSurface, + elevation: 0, + centerTitle: false, + titleTextStyle: textTheme.titleLarge?.copyWith( + fontWeight: FontWeight.w700, + letterSpacing: 0.2, + ), + ), + cardTheme: CardThemeData( + color: const Color(0xFF121A24), + elevation: 0, + margin: EdgeInsets.zero, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(16), + side: BorderSide(color: base.colorScheme.outlineVariant), + ), + ), + dividerTheme: DividerThemeData( + color: base.colorScheme.outlineVariant, + thickness: 1, + ), + inputDecorationTheme: InputDecorationTheme( + filled: true, + fillColor: const Color(0xFF121A24), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + borderSide: BorderSide(color: base.colorScheme.outlineVariant), + ), + enabledBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + borderSide: BorderSide(color: base.colorScheme.outlineVariant), + ), + focusedBorder: OutlineInputBorder( + borderRadius: BorderRadius.circular(12), + borderSide: BorderSide(color: base.colorScheme.primary, width: 1.5), + ), + ), + filledButtonTheme: FilledButtonThemeData( + style: FilledButton.styleFrom( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 14), + ), + ), + outlinedButtonTheme: OutlinedButtonThemeData( + style: OutlinedButton.styleFrom( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(12), + ), + side: BorderSide(color: base.colorScheme.outline), + padding: const EdgeInsets.symmetric(horizontal: 18, vertical: 12), + ), + ), + navigationRailTheme: NavigationRailThemeData( + backgroundColor: base.colorScheme.surface, + selectedIconTheme: IconThemeData(color: base.colorScheme.primary), + selectedLabelTextStyle: textTheme.labelLarge?.copyWith( + fontWeight: FontWeight.w600, + ), + unselectedIconTheme: IconThemeData(color: base.colorScheme.onSurface), + ), + navigationBarTheme: NavigationBarThemeData( + backgroundColor: base.colorScheme.surface, + indicatorColor: base.colorScheme.primaryContainer, + labelTextStyle: WidgetStateProperty.all( + textTheme.labelMedium?.copyWith(fontWeight: FontWeight.w600), + ), + ), + listTileTheme: ListTileThemeData( + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), + tileColor: const Color(0xFF121A24), + ), + ); + } +} diff --git a/lib/widgets/app_shell.dart b/lib/widgets/app_shell.dart new file mode 100644 index 00000000..8bd440f4 --- /dev/null +++ b/lib/widgets/app_shell.dart @@ -0,0 +1,470 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:go_router/go_router.dart'; + +import '../providers/auth_provider.dart'; +import '../providers/notifications_provider.dart'; +import '../providers/profile_provider.dart'; + +class AppScaffold extends ConsumerWidget { + const AppScaffold({super.key, required this.child}); + + final Widget child; + + @override + Widget build(BuildContext context, WidgetRef ref) { + final profileAsync = ref.watch(currentProfileProvider); + final role = profileAsync.maybeWhen( + data: (profile) => profile?.role ?? 'standard', + orElse: () => 'standard', + ); + final displayName = profileAsync.maybeWhen( + data: (profile) { + final name = profile?.fullName.trim() ?? ''; + return name.isNotEmpty ? name : 'User'; + }, + orElse: () => 'User', + ); + + final isStandard = role == 'standard'; + final location = GoRouterState.of(context).uri.toString(); + final sections = _buildSections(role); + + final width = MediaQuery.of(context).size.width; + final showRail = !isStandard && width >= 860; + final isExtended = !isStandard && width >= 1120; + final showDrawer = !isStandard && !showRail; + + return Scaffold( + appBar: AppBar( + title: Row( + children: [ + const Icon(Icons.memory), + const SizedBox(width: 8), + Text('TasQ'), + ], + ), + actions: [ + if (isStandard) + PopupMenuButton( + tooltip: 'Account', + onSelected: (value) { + if (value == 0) { + ref.read(authControllerProvider).signOut(); + } + }, + itemBuilder: (context) => const [ + PopupMenuItem(value: 0, child: Text('Sign out')), + ], + child: Padding( + padding: const EdgeInsets.symmetric(horizontal: 12), + child: Row( + children: [ + const Icon(Icons.account_circle), + const SizedBox(width: 8), + Text(displayName), + const SizedBox(width: 4), + const Icon(Icons.expand_more), + ], + ), + ), + ) + else + IconButton( + tooltip: 'Sign out', + onPressed: () => ref.read(authControllerProvider).signOut(), + icon: const Icon(Icons.logout), + ), + const _NotificationBell(), + ], + ), + drawer: showDrawer + ? Drawer( + child: AppSideNav( + sections: sections, + location: location, + extended: true, + displayName: displayName, + onLogout: () => ref.read(authControllerProvider).signOut(), + ), + ) + : null, + bottomNavigationBar: isStandard + ? AppBottomNav(location: location, items: _standardNavItems()) + : null, + body: Row( + children: [ + if (showRail) + AppSideNav( + sections: sections, + location: location, + extended: isExtended, + displayName: displayName, + onLogout: () => ref.read(authControllerProvider).signOut(), + ), + Expanded(child: _ShellBackground(child: child)), + ], + ), + ); + } +} + +class AppSideNav extends StatelessWidget { + const AppSideNav({ + super.key, + required this.sections, + required this.location, + required this.extended, + required this.displayName, + required this.onLogout, + }); + + final List sections; + final String location; + final bool extended; + final String displayName; + final VoidCallback onLogout; + + @override + Widget build(BuildContext context) { + final width = extended ? 240.0 : 72.0; + return Container( + width: width, + decoration: BoxDecoration( + color: Theme.of(context).colorScheme.surface, + border: Border( + right: BorderSide( + color: Theme.of(context).colorScheme.outlineVariant, + ), + ), + ), + child: ListView( + padding: const EdgeInsets.symmetric(vertical: 12), + children: [ + Padding( + padding: EdgeInsets.symmetric( + horizontal: extended ? 16 : 12, + vertical: 8, + ), + child: Row( + children: [ + Image.asset( + 'assets/tasq_ico.png', + width: 28, + height: 28, + fit: BoxFit.contain, + ), + if (extended) ...[ + const SizedBox(width: 12), + Expanded( + child: Text( + displayName, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: Theme.of(context).textTheme.titleSmall?.copyWith( + fontWeight: FontWeight.w600, + ), + ), + ), + ], + ], + ), + ), + const SizedBox(height: 4), + for (final section in sections) ...[ + if (section.label != null && extended) + Padding( + padding: const EdgeInsets.fromLTRB(16, 12, 16, 8), + child: Text( + section.label!, + style: Theme.of(context).textTheme.labelMedium?.copyWith( + color: Theme.of(context).colorScheme.onSurfaceVariant, + letterSpacing: 0.4, + ), + ), + ), + for (final item in section.items) + _NavTile( + item: item, + selected: _isSelected(location, item.route), + extended: extended, + onLogout: onLogout, + ), + ], + ], + ), + ); + } +} + +class AppBottomNav extends StatelessWidget { + const AppBottomNav({super.key, required this.location, required this.items}); + + final String location; + final List items; + + @override + Widget build(BuildContext context) { + final index = _currentIndex(location, items); + return NavigationBar( + selectedIndex: index, + onDestinationSelected: (value) { + final target = items[value].route; + if (target.isNotEmpty) { + context.go(target); + } + }, + destinations: [ + for (final item in items) + NavigationDestination( + icon: Icon(item.icon), + selectedIcon: Icon(item.selectedIcon ?? item.icon), + label: item.label, + ), + ], + ); + } +} + +class _NavTile extends StatelessWidget { + const _NavTile({ + required this.item, + required this.selected, + required this.extended, + required this.onLogout, + }); + + final NavItem item; + final bool selected; + final bool extended; + final VoidCallback onLogout; + + @override + Widget build(BuildContext context) { + final colorScheme = Theme.of(context).colorScheme; + final iconColor = selected ? colorScheme.primary : colorScheme.onSurface; + final background = selected + ? colorScheme.primaryContainer.withValues(alpha: 0.6) + : Colors.transparent; + + final content = Container( + margin: const EdgeInsets.symmetric(horizontal: 8, vertical: 4), + decoration: BoxDecoration( + color: background, + borderRadius: BorderRadius.circular(12), + ), + child: ListTile( + leading: Icon(item.icon, color: iconColor), + title: extended ? Text(item.label) : null, + onTap: () => item.onTap(context, onLogout: onLogout), + dense: true, + visualDensity: VisualDensity.compact, + ), + ); + + if (extended) { + return content; + } + + return Tooltip(message: item.label, child: content); + } +} + +class _NotificationBell extends ConsumerWidget { + const _NotificationBell(); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final unreadCount = ref.watch(unreadNotificationsCountProvider); + return IconButton( + tooltip: 'Notifications', + onPressed: () => context.go('/notifications'), + icon: Stack( + clipBehavior: Clip.none, + children: [ + const Icon(Icons.notifications), + if (unreadCount > 0) + const Positioned( + right: -2, + top: -2, + child: Icon(Icons.circle, size: 10, color: Colors.red), + ), + ], + ), + ); + } +} + +class _ShellBackground extends StatelessWidget { + const _ShellBackground({required this.child}); + + final Widget child; + + @override + Widget build(BuildContext context) { + return Container( + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + Theme.of(context).colorScheme.surface, + Theme.of(context).colorScheme.surfaceContainerLowest, + ], + ), + ), + child: child, + ); + } +} + +class NavItem { + NavItem({ + required this.label, + required this.route, + required this.icon, + this.selectedIcon, + this.isLogout = false, + }); + + final String label; + final String route; + final IconData icon; + final IconData? selectedIcon; + final bool isLogout; + + void onTap(BuildContext context, {VoidCallback? onLogout}) { + if (isLogout) { + onLogout?.call(); + return; + } + if (route.isNotEmpty) { + context.go(route); + } + } +} + +class NavSection { + NavSection({this.label, required this.items}); + + final String? label; + final List items; +} + +List _buildSections(String role) { + final mainItems = [ + NavItem( + label: 'Dashboard', + route: '/dashboard', + icon: Icons.grid_view, + selectedIcon: Icons.grid_view_rounded, + ), + NavItem( + label: 'Tickets', + route: '/tickets', + icon: Icons.support_agent_outlined, + selectedIcon: Icons.support_agent, + ), + NavItem( + label: 'Tasks', + route: '/tasks', + icon: Icons.task_outlined, + selectedIcon: Icons.task, + ), + NavItem( + label: 'Events', + route: '/events', + icon: Icons.event_outlined, + selectedIcon: Icons.event, + ), + NavItem( + label: 'Announcement', + route: '/announcements', + icon: Icons.campaign_outlined, + selectedIcon: Icons.campaign, + ), + NavItem( + label: 'Workforce', + route: '/workforce', + icon: Icons.groups_outlined, + selectedIcon: Icons.groups, + ), + NavItem( + label: 'Reports', + route: '/reports', + icon: Icons.analytics_outlined, + selectedIcon: Icons.analytics, + ), + ]; + + if (role == 'admin') { + return [ + NavSection(label: 'Operations', items: mainItems), + NavSection( + label: 'Settings', + items: [ + NavItem( + label: 'User Management', + route: '/settings/users', + icon: Icons.admin_panel_settings_outlined, + selectedIcon: Icons.admin_panel_settings, + ), + NavItem( + label: 'Office Management', + route: '/settings/offices', + icon: Icons.apartment_outlined, + selectedIcon: Icons.apartment, + ), + NavItem( + label: 'Logout', + route: '', + icon: Icons.logout, + isLogout: true, + ), + ], + ), + ]; + } + + return [NavSection(label: 'Operations', items: mainItems)]; +} + +List _standardNavItems() { + return [ + NavItem( + label: 'Dashboard', + route: '/dashboard', + icon: Icons.grid_view, + selectedIcon: Icons.grid_view_rounded, + ), + NavItem( + label: 'Tickets', + route: '/tickets', + icon: Icons.support_agent_outlined, + selectedIcon: Icons.support_agent, + ), + NavItem( + label: 'Tasks', + route: '/tasks', + icon: Icons.task_outlined, + selectedIcon: Icons.task, + ), + NavItem( + label: 'Events', + route: '/events', + icon: Icons.event_outlined, + selectedIcon: Icons.event, + ), + ]; +} + +bool _isSelected(String location, String route) { + if (route.isEmpty) return false; + if (location == route) return true; + return location.startsWith('$route/'); +} + +int _currentIndex(String location, List items) { + final index = items.indexWhere((item) => _isSelected(location, item.route)); + return index == -1 ? 0 : index; +} diff --git a/lib/widgets/responsive_body.dart b/lib/widgets/responsive_body.dart new file mode 100644 index 00000000..247894db --- /dev/null +++ b/lib/widgets/responsive_body.dart @@ -0,0 +1,46 @@ +import 'package:flutter/widgets.dart'; + +class ResponsiveBody extends StatelessWidget { + const ResponsiveBody({ + super.key, + required this.child, + this.maxWidth = 960, + this.padding = EdgeInsets.zero, + }); + + final Widget child; + final double maxWidth; + final EdgeInsetsGeometry padding; + + @override + Widget build(BuildContext context) { + return LayoutBuilder( + builder: (context, constraints) { + final width = constraints.maxWidth; + final horizontalPadding = switch (width) { + >= 1200 => 96.0, + >= 900 => 64.0, + >= 600 => 32.0, + _ => 16.0, + }; + + return Padding( + padding: padding.add( + EdgeInsets.symmetric(horizontal: horizontalPadding), + ), + child: Align( + alignment: Alignment.topCenter, + child: ConstrainedBox( + constraints: BoxConstraints(maxWidth: maxWidth), + child: SizedBox( + width: double.infinity, + height: constraints.maxHeight, + child: child, + ), + ), + ), + ); + }, + ); + } +} diff --git a/lib/widgets/task_assignment_section.dart b/lib/widgets/task_assignment_section.dart new file mode 100644 index 00000000..cfe4c604 --- /dev/null +++ b/lib/widgets/task_assignment_section.dart @@ -0,0 +1,233 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; + +import '../models/profile.dart'; +import '../providers/profile_provider.dart'; +import '../providers/tasks_provider.dart'; + +class TaskAssignmentSection extends ConsumerWidget { + const TaskAssignmentSection({ + super.key, + required this.taskId, + required this.canAssign, + }); + + final String taskId; + final bool canAssign; + + @override + Widget build(BuildContext context, WidgetRef ref) { + final profilesAsync = ref.watch(profilesProvider); + final tasksAsync = ref.watch(tasksProvider); + final assignmentsAsync = ref.watch(taskAssignmentsProvider); + + final profiles = profilesAsync.valueOrNull ?? []; + final tasks = tasksAsync.valueOrNull ?? []; + final taskTicketId = tasks + .where((task) => task.id == taskId) + .map((task) => task.ticketId) + .firstOrNull; + final assignments = assignmentsAsync.valueOrNull ?? []; + + final itStaff = + profiles.where((profile) => profile.role == 'it_staff').toList() + ..sort((a, b) => a.fullName.compareTo(b.fullName)); + + final assignedForTask = assignments + .where((assignment) => assignment.taskId == taskId) + .toList(); + final assignedIds = assignedForTask.map((a) => a.userId).toSet(); + + final activeTaskIds = tasks + .where( + (task) => task.status == 'queued' || task.status == 'in_progress', + ) + .map((task) => task.id) + .toSet(); + + final activeAssignmentsByUser = >{}; + for (final assignment in assignments) { + if (!activeTaskIds.contains(assignment.taskId)) { + continue; + } + activeAssignmentsByUser + .putIfAbsent(assignment.userId, () => {}) + .add(assignment.taskId); + } + + bool isVacant(String userId) { + final active = activeAssignmentsByUser[userId]; + if (active == null || active.isEmpty) { + return true; + } + return active.length == 1 && active.contains(taskId); + } + + final eligibleStaff = itStaff + .where( + (profile) => isVacant(profile.id) || assignedIds.contains(profile.id), + ) + .toList(); + + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Text( + 'Assigned IT Staff', + style: Theme.of( + context, + ).textTheme.titleMedium?.copyWith(fontWeight: FontWeight.w700), + ), + const Spacer(), + if (canAssign) + TextButton.icon( + onPressed: () => _showAssignmentDialog( + context, + ref, + eligibleStaff, + assignedIds, + taskTicketId, + ), + icon: const Icon(Icons.group_add), + label: const Text('Assign'), + ), + ], + ), + const SizedBox(height: 8), + if (assignedForTask.isEmpty) + Text( + 'No IT staff assigned.', + style: Theme.of(context).textTheme.bodyMedium, + ) + else + Wrap( + spacing: 8, + runSpacing: 6, + children: assignedForTask.map((assignment) { + final profile = profiles + .where((item) => item.id == assignment.userId) + .firstOrNull; + final label = profile?.fullName.isNotEmpty == true + ? profile!.fullName + : assignment.userId; + return InputChip( + label: Text(label), + onDeleted: canAssign + ? () => ref + .read(taskAssignmentsControllerProvider) + .removeAssignment( + taskId: taskId, + userId: assignment.userId, + ) + : null, + ); + }).toList(), + ), + ], + ); + } + + Future _showAssignmentDialog( + BuildContext context, + WidgetRef ref, + List eligibleStaff, + Set assignedIds, + String? taskTicketId, + ) async { + if (eligibleStaff.isEmpty && assignedIds.isEmpty) { + await showDialog( + context: context, + builder: (dialogContext) { + return AlertDialog( + title: const Text('Assign IT Staff'), + content: const Text('No vacant IT staff available.'), + actions: [ + TextButton( + onPressed: () => Navigator.of(dialogContext).pop(), + child: const Text('Close'), + ), + ], + ); + }, + ); + return; + } + + final selection = assignedIds.toSet(); + await showDialog( + context: context, + builder: (dialogContext) { + return StatefulBuilder( + builder: (context, setState) { + return AlertDialog( + title: const Text('Assign IT Staff'), + contentPadding: const EdgeInsets.fromLTRB(24, 20, 24, 12), + content: SizedBox( + width: 360, + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 12), + child: ListView.builder( + shrinkWrap: true, + itemCount: eligibleStaff.length, + itemBuilder: (context, index) { + final staff = eligibleStaff[index]; + final name = staff.fullName.isNotEmpty + ? staff.fullName + : staff.id; + final selected = selection.contains(staff.id); + return CheckboxListTile( + value: selected, + title: Text(name), + contentPadding: const EdgeInsets.symmetric( + horizontal: 12, + vertical: 2, + ), + onChanged: (value) { + setState(() { + if (value == true) { + selection.add(staff.id); + } else { + selection.remove(staff.id); + } + }); + }, + ); + }, + ), + ), + ), + actions: [ + TextButton( + onPressed: () => Navigator.of(dialogContext).pop(), + child: const Text('Cancel'), + ), + FilledButton( + onPressed: () async { + await ref + .read(taskAssignmentsControllerProvider) + .replaceAssignments( + taskId: taskId, + ticketId: taskTicketId, + newUserIds: selection.toList(), + currentUserIds: assignedIds.toList(), + ); + if (context.mounted) { + Navigator.of(dialogContext).pop(); + } + }, + child: const Text('Save'), + ), + ], + ); + }, + ); + }, + ); + } +} + +extension _FirstOrNull on Iterable { + T? get firstOrNull => isEmpty ? null : first; +} diff --git a/lib/widgets/typing_dots.dart b/lib/widgets/typing_dots.dart new file mode 100644 index 00000000..2b222054 --- /dev/null +++ b/lib/widgets/typing_dots.dart @@ -0,0 +1,72 @@ +import 'package:flutter/material.dart'; + +class TypingDots extends StatefulWidget { + const TypingDots({super.key, this.size = 6, this.color, this.spacing = 4}); + + final double size; + final double spacing; + final Color? color; + + @override + State createState() => _TypingDotsState(); +} + +class _TypingDotsState extends State + with SingleTickerProviderStateMixin { + late final AnimationController _controller; + + @override + void initState() { + super.initState(); + _controller = AnimationController( + vsync: this, + duration: const Duration(milliseconds: 1200), + )..repeat(); + } + + @override + void dispose() { + _controller.dispose(); + super.dispose(); + } + + double _opacity(double t, double offset) { + final phase = (t + offset) % 1.0; + final distance = (phase - 0.5).abs(); + final ramp = 1.0 - (distance / 0.5); + return 0.3 + 0.7 * ramp.clamp(0.0, 1.0); + } + + @override + Widget build(BuildContext context) { + final color = + widget.color ?? Theme.of(context).colorScheme.onSurfaceVariant; + return AnimatedBuilder( + animation: _controller, + builder: (context, child) { + final t = _controller.value; + return Row( + mainAxisSize: MainAxisSize.min, + children: [ + _dot(color, _opacity(t, 0.0)), + SizedBox(width: widget.spacing), + _dot(color, _opacity(t, 0.2)), + SizedBox(width: widget.spacing), + _dot(color, _opacity(t, 0.4)), + ], + ); + }, + ); + } + + Widget _dot(Color color, double opacity) { + return Opacity( + opacity: opacity, + child: Container( + width: widget.size, + height: widget.size, + decoration: BoxDecoration(color: color, shape: BoxShape.circle), + ), + ); + } +} diff --git a/linux/.gitignore b/linux/.gitignore new file mode 100644 index 00000000..d3896c98 --- /dev/null +++ b/linux/.gitignore @@ -0,0 +1 @@ +flutter/ephemeral diff --git a/linux/CMakeLists.txt b/linux/CMakeLists.txt new file mode 100644 index 00000000..0917f5d3 --- /dev/null +++ b/linux/CMakeLists.txt @@ -0,0 +1,128 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.13) +project(runner LANGUAGES CXX) + +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "tasq") +# The unique GTK application identifier for this application. See: +# https://wiki.gnome.org/HowDoI/ChooseApplicationID +set(APPLICATION_ID "com.example.tasq") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(SET CMP0063 NEW) + +# Load bundled libraries from the lib/ directory relative to the binary. +set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") + +# Root filesystem for cross-building. +if(FLUTTER_TARGET_PLATFORM_SYSROOT) + set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT}) + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +endif() + +# Define build configuration options. +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") +endif() + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_14) + target_compile_options(${TARGET} PRIVATE -Wall -Werror) + target_compile_options(${TARGET} PRIVATE "$<$>:-O3>") + target_compile_definitions(${TARGET} PRIVATE "$<$>:NDEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) + +# Application build; see runner/CMakeLists.txt. +add_subdirectory("runner") + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) + +# Only the install-generated bundle's copy of the executable will launch +# correctly, since the resources must in the right relative locations. To avoid +# people trying to run the unbundled copy, put it in a subdirectory instead of +# the default top-level location. +set_target_properties(${BINARY_NAME} + PROPERTIES + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" +) + + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# By default, "installing" just makes a relocatable bundle in the build +# directory. +set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +# Start with a clean build bundle directory every time. +install(CODE " + file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\") + " COMPONENT Runtime) + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) + install(FILES "${bundled_library}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endforeach(bundled_library) + +# Copy the native assets provided by the build.dart from all packages. +set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/linux/") +install(DIRECTORY "${NATIVE_ASSETS_DIR}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") + install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() diff --git a/linux/flutter/CMakeLists.txt b/linux/flutter/CMakeLists.txt new file mode 100644 index 00000000..d5bd0164 --- /dev/null +++ b/linux/flutter/CMakeLists.txt @@ -0,0 +1,88 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.10) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. + +# Serves the same purpose as list(TRANSFORM ... PREPEND ...), +# which isn't available in 3.10. +function(list_prepend LIST_NAME PREFIX) + set(NEW_LIST "") + foreach(element ${${LIST_NAME}}) + list(APPEND NEW_LIST "${PREFIX}${element}") + endforeach(element) + set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE) +endfunction() + +# === Flutter Library === +# System-level dependencies. +find_package(PkgConfig REQUIRED) +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) +pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0) +pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) + +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "fl_basic_message_channel.h" + "fl_binary_codec.h" + "fl_binary_messenger.h" + "fl_dart_project.h" + "fl_engine.h" + "fl_json_message_codec.h" + "fl_json_method_codec.h" + "fl_message_codec.h" + "fl_method_call.h" + "fl_method_channel.h" + "fl_method_codec.h" + "fl_method_response.h" + "fl_plugin_registrar.h" + "fl_plugin_registry.h" + "fl_standard_message_codec.h" + "fl_standard_method_codec.h" + "fl_string_codec.h" + "fl_value.h" + "fl_view.h" + "flutter_linux.h" +) +list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}") +target_link_libraries(flutter INTERFACE + PkgConfig::GTK + PkgConfig::GLIB + PkgConfig::GIO +) +add_dependencies(flutter flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CMAKE_CURRENT_BINARY_DIR}/_phony_ + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh" + ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE} + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} +) diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc new file mode 100644 index 00000000..fb283e0d --- /dev/null +++ b/linux/flutter/generated_plugin_registrant.cc @@ -0,0 +1,23 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + +#include +#include +#include + +void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) audioplayers_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "AudioplayersLinuxPlugin"); + audioplayers_linux_plugin_register_with_registrar(audioplayers_linux_registrar); + g_autoptr(FlPluginRegistrar) gtk_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "GtkPlugin"); + gtk_plugin_register_with_registrar(gtk_registrar); + g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); + url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); +} diff --git a/linux/flutter/generated_plugin_registrant.h b/linux/flutter/generated_plugin_registrant.h new file mode 100644 index 00000000..e0f0a47b --- /dev/null +++ b/linux/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void fl_register_plugins(FlPluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake new file mode 100644 index 00000000..e88480f7 --- /dev/null +++ b/linux/flutter/generated_plugins.cmake @@ -0,0 +1,26 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST + audioplayers_linux + gtk + url_launcher_linux +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/linux/runner/CMakeLists.txt b/linux/runner/CMakeLists.txt new file mode 100644 index 00000000..e97dabc7 --- /dev/null +++ b/linux/runner/CMakeLists.txt @@ -0,0 +1,26 @@ +cmake_minimum_required(VERSION 3.13) +project(runner LANGUAGES CXX) + +# Define the application target. To change its name, change BINARY_NAME in the +# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer +# work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} + "main.cc" + "my_application.cc" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add preprocessor definitions for the application ID. +add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") + +# Add dependency libraries. Add any application-specific dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter) +target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) + +target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") diff --git a/linux/runner/main.cc b/linux/runner/main.cc new file mode 100644 index 00000000..e7c5c543 --- /dev/null +++ b/linux/runner/main.cc @@ -0,0 +1,6 @@ +#include "my_application.h" + +int main(int argc, char** argv) { + g_autoptr(MyApplication) app = my_application_new(); + return g_application_run(G_APPLICATION(app), argc, argv); +} diff --git a/linux/runner/my_application.cc b/linux/runner/my_application.cc new file mode 100644 index 00000000..cf73461c --- /dev/null +++ b/linux/runner/my_application.cc @@ -0,0 +1,148 @@ +#include "my_application.h" + +#include +#ifdef GDK_WINDOWING_X11 +#include +#endif + +#include "flutter/generated_plugin_registrant.h" + +struct _MyApplication { + GtkApplication parent_instance; + char** dart_entrypoint_arguments; +}; + +G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) + +// Called when first Flutter frame received. +static void first_frame_cb(MyApplication* self, FlView* view) { + gtk_widget_show(gtk_widget_get_toplevel(GTK_WIDGET(view))); +} + +// Implements GApplication::activate. +static void my_application_activate(GApplication* application) { + MyApplication* self = MY_APPLICATION(application); + GtkWindow* window = + GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); + + // Use a header bar when running in GNOME as this is the common style used + // by applications and is the setup most users will be using (e.g. Ubuntu + // desktop). + // If running on X and not using GNOME then just use a traditional title bar + // in case the window manager does more exotic layout, e.g. tiling. + // If running on Wayland assume the header bar will work (may need changing + // if future cases occur). + gboolean use_header_bar = TRUE; +#ifdef GDK_WINDOWING_X11 + GdkScreen* screen = gtk_window_get_screen(window); + if (GDK_IS_X11_SCREEN(screen)) { + const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen); + if (g_strcmp0(wm_name, "GNOME Shell") != 0) { + use_header_bar = FALSE; + } + } +#endif + if (use_header_bar) { + GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new()); + gtk_widget_show(GTK_WIDGET(header_bar)); + gtk_header_bar_set_title(header_bar, "tasq"); + gtk_header_bar_set_show_close_button(header_bar, TRUE); + gtk_window_set_titlebar(window, GTK_WIDGET(header_bar)); + } else { + gtk_window_set_title(window, "tasq"); + } + + gtk_window_set_default_size(window, 1280, 720); + + g_autoptr(FlDartProject) project = fl_dart_project_new(); + fl_dart_project_set_dart_entrypoint_arguments( + project, self->dart_entrypoint_arguments); + + FlView* view = fl_view_new(project); + GdkRGBA background_color; + // Background defaults to black, override it here if necessary, e.g. #00000000 + // for transparent. + gdk_rgba_parse(&background_color, "#000000"); + fl_view_set_background_color(view, &background_color); + gtk_widget_show(GTK_WIDGET(view)); + gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + + // Show the window when Flutter renders. + // Requires the view to be realized so we can start rendering. + g_signal_connect_swapped(view, "first-frame", G_CALLBACK(first_frame_cb), + self); + gtk_widget_realize(GTK_WIDGET(view)); + + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); + + gtk_widget_grab_focus(GTK_WIDGET(view)); +} + +// Implements GApplication::local_command_line. +static gboolean my_application_local_command_line(GApplication* application, + gchar*** arguments, + int* exit_status) { + MyApplication* self = MY_APPLICATION(application); + // Strip out the first argument as it is the binary name. + self->dart_entrypoint_arguments = g_strdupv(*arguments + 1); + + g_autoptr(GError) error = nullptr; + if (!g_application_register(application, nullptr, &error)) { + g_warning("Failed to register: %s", error->message); + *exit_status = 1; + return TRUE; + } + + g_application_activate(application); + *exit_status = 0; + + return TRUE; +} + +// Implements GApplication::startup. +static void my_application_startup(GApplication* application) { + // MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application startup. + + G_APPLICATION_CLASS(my_application_parent_class)->startup(application); +} + +// Implements GApplication::shutdown. +static void my_application_shutdown(GApplication* application) { + // MyApplication* self = MY_APPLICATION(object); + + // Perform any actions required at application shutdown. + + G_APPLICATION_CLASS(my_application_parent_class)->shutdown(application); +} + +// Implements GObject::dispose. +static void my_application_dispose(GObject* object) { + MyApplication* self = MY_APPLICATION(object); + g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev); + G_OBJECT_CLASS(my_application_parent_class)->dispose(object); +} + +static void my_application_class_init(MyApplicationClass* klass) { + G_APPLICATION_CLASS(klass)->activate = my_application_activate; + G_APPLICATION_CLASS(klass)->local_command_line = + my_application_local_command_line; + G_APPLICATION_CLASS(klass)->startup = my_application_startup; + G_APPLICATION_CLASS(klass)->shutdown = my_application_shutdown; + G_OBJECT_CLASS(klass)->dispose = my_application_dispose; +} + +static void my_application_init(MyApplication* self) {} + +MyApplication* my_application_new() { + // Set the program name to the application ID, which helps various systems + // like GTK and desktop environments map this running application to its + // corresponding .desktop file. This ensures better integration by allowing + // the application to be recognized beyond its binary name. + g_set_prgname(APPLICATION_ID); + + return MY_APPLICATION(g_object_new(my_application_get_type(), + "application-id", APPLICATION_ID, "flags", + G_APPLICATION_NON_UNIQUE, nullptr)); +} diff --git a/linux/runner/my_application.h b/linux/runner/my_application.h new file mode 100644 index 00000000..db16367a --- /dev/null +++ b/linux/runner/my_application.h @@ -0,0 +1,21 @@ +#ifndef FLUTTER_MY_APPLICATION_H_ +#define FLUTTER_MY_APPLICATION_H_ + +#include + +G_DECLARE_FINAL_TYPE(MyApplication, + my_application, + MY, + APPLICATION, + GtkApplication) + +/** + * my_application_new: + * + * Creates a new Flutter-based application. + * + * Returns: a new #MyApplication. + */ +MyApplication* my_application_new(); + +#endif // FLUTTER_MY_APPLICATION_H_ diff --git a/macos/.gitignore b/macos/.gitignore new file mode 100644 index 00000000..746adbb6 --- /dev/null +++ b/macos/.gitignore @@ -0,0 +1,7 @@ +# Flutter-related +**/Flutter/ephemeral/ +**/Pods/ + +# Xcode-related +**/dgph +**/xcuserdata/ diff --git a/macos/Flutter/Flutter-Debug.xcconfig b/macos/Flutter/Flutter-Debug.xcconfig new file mode 100644 index 00000000..c2efd0b6 --- /dev/null +++ b/macos/Flutter/Flutter-Debug.xcconfig @@ -0,0 +1 @@ +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/macos/Flutter/Flutter-Release.xcconfig b/macos/Flutter/Flutter-Release.xcconfig new file mode 100644 index 00000000..c2efd0b6 --- /dev/null +++ b/macos/Flutter/Flutter-Release.xcconfig @@ -0,0 +1 @@ +#include "ephemeral/Flutter-Generated.xcconfig" diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 00000000..d282e3e5 --- /dev/null +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,18 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + +import app_links +import audioplayers_darwin +import shared_preferences_foundation +import url_launcher_macos + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) + AudioplayersDarwinPlugin.register(with: registry.registrar(forPlugin: "AudioplayersDarwinPlugin")) + SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) + UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) +} diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 00000000..10fa8bca --- /dev/null +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,705 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXAggregateTarget section */ + 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = { + isa = PBXAggregateTarget; + buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */; + buildPhases = ( + 33CC111E2044C6BF0003C045 /* ShellScript */, + ); + dependencies = ( + ); + name = "Flutter Assemble"; + productName = FLX; + }; +/* End PBXAggregateTarget section */ + +/* Begin PBXBuildFile section */ + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C80D7294CF71000263BE5 /* RunnerTests.swift */; }; + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; }; + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; }; + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC10EC2044A3C60003C045; + remoteInfo = Runner; + }; + 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 33CC10E52044A3C60003C045 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 33CC111A2044C6BA0003C045; + remoteInfo = FLX; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 33CC110E2044A8840003C045 /* Bundle Framework */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Bundle Framework"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = ""; }; + 33CC10ED2044A3C60003C045 /* tasq.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "tasq.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = ""; }; + 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = ""; }; + 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = ""; }; + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = ""; }; + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = ""; }; + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = ""; }; + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = ""; }; + 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; + 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; + 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 331C80D2294CF70F00263BE5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EA2044A3C60003C045 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C80D6294CF71000263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C80D7294CF71000263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 33BA886A226E78AF003329D5 /* Configs */ = { + isa = PBXGroup; + children = ( + 33E5194F232828860026EE4D /* AppInfo.xcconfig */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */, + ); + path = Configs; + sourceTree = ""; + }; + 33CC10E42044A3C60003C045 = { + isa = PBXGroup; + children = ( + 33FAB671232836740065AC1E /* Runner */, + 33CEB47122A05771004F2AC0 /* Flutter */, + 331C80D6294CF71000263BE5 /* RunnerTests */, + 33CC10EE2044A3C60003C045 /* Products */, + D73912EC22F37F3D000D13A0 /* Frameworks */, + ); + sourceTree = ""; + }; + 33CC10EE2044A3C60003C045 /* Products */ = { + isa = PBXGroup; + children = ( + 33CC10ED2044A3C60003C045 /* tasq.app */, + 331C80D5294CF71000263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 33CC11242044D66E0003C045 /* Resources */ = { + isa = PBXGroup; + children = ( + 33CC10F22044A3C60003C045 /* Assets.xcassets */, + 33CC10F42044A3C60003C045 /* MainMenu.xib */, + 33CC10F72044A3C60003C045 /* Info.plist */, + ); + name = Resources; + path = ..; + sourceTree = ""; + }; + 33CEB47122A05771004F2AC0 /* Flutter */ = { + isa = PBXGroup; + children = ( + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */, + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */, + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */, + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */, + ); + path = Flutter; + sourceTree = ""; + }; + 33FAB671232836740065AC1E /* Runner */ = { + isa = PBXGroup; + children = ( + 33CC10F02044A3C60003C045 /* AppDelegate.swift */, + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */, + 33E51913231747F40026EE4D /* DebugProfile.entitlements */, + 33E51914231749380026EE4D /* Release.entitlements */, + 33CC11242044D66E0003C045 /* Resources */, + 33BA886A226E78AF003329D5 /* Configs */, + ); + path = Runner; + sourceTree = ""; + }; + D73912EC22F37F3D000D13A0 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C80D4294CF70F00263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 331C80D1294CF70F00263BE5 /* Sources */, + 331C80D2294CF70F00263BE5 /* Frameworks */, + 331C80D3294CF70F00263BE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 331C80DA294CF71000263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C80D5294CF71000263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 33CC10EC2044A3C60003C045 /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 33CC10E92044A3C60003C045 /* Sources */, + 33CC10EA2044A3C60003C045 /* Frameworks */, + 33CC10EB2044A3C60003C045 /* Resources */, + 33CC110E2044A8840003C045 /* Bundle Framework */, + 3399D490228B24CF009A79C7 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + 33CC11202044C79F0003C045 /* PBXTargetDependency */, + ); + name = Runner; + productName = Runner; + productReference = 33CC10ED2044A3C60003C045 /* tasq.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 33CC10E52044A3C60003C045 /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastSwiftUpdateCheck = 0920; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C80D4294CF70F00263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 33CC10EC2044A3C60003C045; + }; + 33CC10EC2044A3C60003C045 = { + CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 1100; + ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.Sandbox = { + enabled = 1; + }; + }; + }; + 33CC111A2044C6BA0003C045 = { + CreatedOnToolsVersion = 9.2; + ProvisioningStyle = Manual; + }; + }; + }; + buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 33CC10E42044A3C60003C045; + productRefGroup = 33CC10EE2044A3C60003C045 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 33CC10EC2044A3C60003C045 /* Runner */, + 331C80D4294CF70F00263BE5 /* RunnerTests */, + 33CC111A2044C6BA0003C045 /* Flutter Assemble */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C80D3294CF70F00263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10EB2044A3C60003C045 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */, + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3399D490228B24CF009A79C7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n"; + }; + 33CC111E2044C6BF0003C045 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + Flutter/ephemeral/FlutterInputs.xcfilelist, + ); + inputPaths = ( + Flutter/ephemeral/tripwire, + ); + outputFileListPaths = ( + Flutter/ephemeral/FlutterOutputs.xcfilelist, + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C80D1294CF70F00263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C80D8294CF71000263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 33CC10E92044A3C60003C045 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */, + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */, + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C80DA294CF71000263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC10EC2044A3C60003C045 /* Runner */; + targetProxy = 331C80D9294CF71000263BE5 /* PBXContainerItemProxy */; + }; + 33CC11202044C79F0003C045 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */; + targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 33CC10F42044A3C60003C045 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 33CC10F52044A3C60003C045 /* Base */, + ); + name = MainMenu.xib; + path = Runner; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 331C80DB294CF71000263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.tasq.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/tasq.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/tasq"; + }; + name = Debug; + }; + 331C80DC294CF71000263BE5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.tasq.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/tasq.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/tasq"; + }; + name = Release; + }; + 331C80DD294CF71000263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.tasq.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/tasq.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/tasq"; + }; + name = Profile; + }; + 338D0CE9231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.15; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Profile; + }; + 338D0CEA231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Profile; + }; + 338D0CEB231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Profile; + }; + 33CC10F92044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.15; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 33CC10FA2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "-"; + COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.15; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + }; + name = Release; + }; + 33CC10FC2044A3C60003C045 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; + 33CC10FD2044A3C60003C045 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 33CC111C2044C6BA0003C045 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 33CC111D2044C6BA0003C045 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C80DB294CF71000263BE5 /* Debug */, + 331C80DC294CF71000263BE5 /* Release */, + 331C80DD294CF71000263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10F92044A3C60003C045 /* Debug */, + 33CC10FA2044A3C60003C045 /* Release */, + 338D0CE9231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC10FC2044A3C60003C045 /* Debug */, + 33CC10FD2044A3C60003C045 /* Release */, + 338D0CEA231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 33CC111C2044C6BA0003C045 /* Debug */, + 33CC111D2044C6BA0003C045 /* Release */, + 338D0CEB231458BD00FA5F75 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 33CC10E52044A3C60003C045 /* Project object */; +} diff --git a/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/macos/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 00000000..63e35358 --- /dev/null +++ b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/macos/Runner.xcworkspace/contents.xcworkspacedata b/macos/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000..1d526a16 --- /dev/null +++ b/macos/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000..18d98100 --- /dev/null +++ b/macos/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/macos/Runner/AppDelegate.swift b/macos/Runner/AppDelegate.swift new file mode 100644 index 00000000..b3c17614 --- /dev/null +++ b/macos/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import Cocoa +import FlutterMacOS + +@main +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } + + override func applicationSupportsSecureRestorableState(_ app: NSApplication) -> Bool { + return true + } +} diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000..a2ec33f1 --- /dev/null +++ b/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_16.png", + "scale" : "1x" + }, + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "2x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "1x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_64.png", + "scale" : "2x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_128.png", + "scale" : "1x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "2x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "1x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "2x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "1x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_1024.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png new file mode 100644 index 0000000000000000000000000000000000000000..82b6f9d9a33e198f5747104729e1fcef999772a5 GIT binary patch literal 102994 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ⅅ8MglG&ER{i5lN315cO?EdHNLrg? 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 z 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 Pe7HEdAEg|=c=LY&YVNkY literal 0 HcmV?d00001 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png new file mode 100644 index 0000000000000000000000000000000000000000..13b35eba55c6dabc3aac36f33d859266c18fa0d0 GIT binary patch literal 5680 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 literal 0 HcmV?d00001 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png new file mode 100644 index 0000000000000000000000000000000000000000..0a3f5fa40fb3d1e0710331a48de5d256da3f275d GIT binary patch literal 520 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 literal 0 HcmV?d00001 diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png new file mode 100644 index 0000000000000000000000000000000000000000..2f1632cfddf3d9dade342351e627a0a75609fb46 GIT binary patch literal 2218 zcmV;b2vzrqP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAuE6iGxuRCodHTWf3-RTMruyW6Fu zQYeUM04eX6D5c0FCjKKPrco1(K`<0SL=crI{PC3-^hZU0kQie$gh-5!7z6SH6Q0J% zqot*`H1q{R5fHFYS}dje@;kG=v$L0(yY0?wY2%*c?A&{2?!D*x?m71{of2gv!$5|C z3>qG_BW}7K_yUcT3A5C6QD<+{aq?x;MAUyAiJn#Jv8_zZtQ{P zTRzbL3U9!qVuZzS$xKU10KiW~Bgdcv1-!uAhQxf3a7q+dU6lj?yoO4Lq4TUN4}h{N z*fIM=SS8|C2$(T>w$`t@3Tka!(r!7W`x z-isCVgQD^mG-MJ;XtJuK3V{Vy72GQ83KRWsHU?e*wrhKk=ApIYeDqLi;JI1e zuvv}5^Dc=k7F7?nm3nIw$NVmU-+R>> zyqOR$-2SDpJ}Pt;^RkJytDVXNTsu|mI1`~G7yw`EJR?VkGfNdqK9^^8P`JdtTV&tX4CNcV4 z&N06nZa??Fw1AgQOUSE2AmPE@WO(Fvo`%m`cDgiv(fAeRA%3AGXUbsGw{7Q`cY;1BI#ac3iN$$Hw z0LT0;xc%=q)me?Y*$xI@GRAw?+}>=9D+KTk??-HJ4=A>`V&vKFS75@MKdSF1JTq{S zc1!^8?YA|t+uKigaq!sT;Z!&0F2=k7F0PIU;F$leJLaw2UI6FL^w}OG&!;+b%ya1c z1n+6-inU<0VM-Y_s5iTElq)ThyF?StVcebpGI znw#+zLx2@ah{$_2jn+@}(zJZ{+}_N9BM;z)0yr|gF-4=Iyu@hI*Lk=-A8f#bAzc9f z`Kd6K--x@t04swJVC3JK1cHY-Hq+=|PN-VO;?^_C#;coU6TDP7Bt`;{JTG;!+jj(` zw5cLQ-(Cz-Tlb`A^w7|R56Ce;Wmr0)$KWOUZ6ai0PhzPeHwdl0H(etP zUV`va_i0s-4#DkNM8lUlqI7>YQLf)(lz9Q3Uw`)nc(z3{m5ZE77Ul$V%m)E}3&8L0 z-XaU|eB~Is08eORPk;=<>!1w)Kf}FOVS2l&9~A+@R#koFJ$Czd%Y(ENTV&A~U(IPI z;UY+gf+&6ioZ=roly<0Yst8ck>(M=S?B-ys3mLdM&)ex!hbt+ol|T6CTS+Sc0jv(& z7ijdvFwBq;0a{%3GGwkDKTeG`b+lyj0jjS1OMkYnepCdoosNY`*zmBIo*981BU%%U z@~$z0V`OVtIbEx5pa|Tct|Lg#ZQf5OYMUMRD>Wdxm5SAqV2}3!ceE-M2 z@O~lQ0OiKQp}o9I;?uxCgYVV?FH|?Riri*U$Zi_`V2eiA>l zdSm6;SEm6#T+SpcE8Ro_f2AwxzI z44hfe^WE3!h@W3RDyA_H440cpmYkv*)6m1XazTqw%=E5Xv7^@^^T7Q2wxr+Z2kVYr + + + + + + + + + + + + + + + + + + + + + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/macos/Runner/Configs/AppInfo.xcconfig b/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 00000000..b0b394e4 --- /dev/null +++ b/macos/Runner/Configs/AppInfo.xcconfig @@ -0,0 +1,14 @@ +// Application-level settings for the Runner target. +// +// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the +// future. If not, the values below would default to using the project name when this becomes a +// 'flutter create' template. + +// The application's name. By default this is also the title of the Flutter window. +PRODUCT_NAME = tasq + +// The application's bundle identifier +PRODUCT_BUNDLE_IDENTIFIER = com.example.tasq + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright © 2026 com.example. All rights reserved. diff --git a/macos/Runner/Configs/Debug.xcconfig b/macos/Runner/Configs/Debug.xcconfig new file mode 100644 index 00000000..36b0fd94 --- /dev/null +++ b/macos/Runner/Configs/Debug.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Debug.xcconfig" +#include "Warnings.xcconfig" diff --git a/macos/Runner/Configs/Release.xcconfig b/macos/Runner/Configs/Release.xcconfig new file mode 100644 index 00000000..dff4f495 --- /dev/null +++ b/macos/Runner/Configs/Release.xcconfig @@ -0,0 +1,2 @@ +#include "../../Flutter/Flutter-Release.xcconfig" +#include "Warnings.xcconfig" diff --git a/macos/Runner/Configs/Warnings.xcconfig b/macos/Runner/Configs/Warnings.xcconfig new file mode 100644 index 00000000..42bcbf47 --- /dev/null +++ b/macos/Runner/Configs/Warnings.xcconfig @@ -0,0 +1,13 @@ +WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings +GCC_WARN_UNDECLARED_SELECTOR = YES +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES +CLANG_WARN_PRAGMA_PACK = YES +CLANG_WARN_STRICT_PROTOTYPES = YES +CLANG_WARN_COMMA = YES +GCC_WARN_STRICT_SELECTOR_MATCH = YES +CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES +GCC_WARN_SHADOW = YES +CLANG_WARN_UNREACHABLE_CODE = YES diff --git a/macos/Runner/DebugProfile.entitlements b/macos/Runner/DebugProfile.entitlements new file mode 100644 index 00000000..dddb8a30 --- /dev/null +++ b/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.cs.allow-jit + + com.apple.security.network.server + + + diff --git a/macos/Runner/Info.plist b/macos/Runner/Info.plist new file mode 100644 index 00000000..4789daa6 --- /dev/null +++ b/macos/Runner/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIconFile + + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSMinimumSystemVersion + $(MACOSX_DEPLOYMENT_TARGET) + NSHumanReadableCopyright + $(PRODUCT_COPYRIGHT) + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/macos/Runner/MainFlutterWindow.swift b/macos/Runner/MainFlutterWindow.swift new file mode 100644 index 00000000..3cc05eb2 --- /dev/null +++ b/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +import Cocoa +import FlutterMacOS + +class MainFlutterWindow: NSWindow { + override func awakeFromNib() { + let flutterViewController = FlutterViewController() + let windowFrame = self.frame + self.contentViewController = flutterViewController + self.setFrame(windowFrame, display: true) + + RegisterGeneratedPlugins(registry: flutterViewController) + + super.awakeFromNib() + } +} diff --git a/macos/Runner/Release.entitlements b/macos/Runner/Release.entitlements new file mode 100644 index 00000000..852fa1a4 --- /dev/null +++ b/macos/Runner/Release.entitlements @@ -0,0 +1,8 @@ + + + + + com.apple.security.app-sandbox + + + diff --git a/macos/RunnerTests/RunnerTests.swift b/macos/RunnerTests/RunnerTests.swift new file mode 100644 index 00000000..61f3bd1f --- /dev/null +++ b/macos/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Cocoa +import FlutterMacOS +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/pubspec.lock b/pubspec.lock new file mode 100644 index 00000000..aa4fa3e7 --- /dev/null +++ b/pubspec.lock @@ -0,0 +1,930 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + adaptive_number: + dependency: transitive + description: + name: adaptive_number + sha256: "3a567544e9b5c9c803006f51140ad544aedc79604fd4f3f2c1380003f97c1d77" + url: "https://pub.dev" + source: hosted + version: "1.0.0" + app_links: + dependency: transitive + description: + name: app_links + sha256: "5f88447519add627fe1cbcab4fd1da3d4fed15b9baf29f28b22535c95ecee3e8" + url: "https://pub.dev" + source: hosted + version: "6.4.1" + app_links_linux: + dependency: transitive + description: + name: app_links_linux + sha256: f5f7173a78609f3dfd4c2ff2c95bd559ab43c80a87dc6a095921d96c05688c81 + url: "https://pub.dev" + source: hosted + version: "1.0.3" + app_links_platform_interface: + dependency: transitive + description: + name: app_links_platform_interface + sha256: "05f5379577c513b534a29ddea68176a4d4802c46180ee8e2e966257158772a3f" + url: "https://pub.dev" + source: hosted + version: "2.0.2" + app_links_web: + dependency: transitive + description: + name: app_links_web + sha256: af060ed76183f9e2b87510a9480e56a5352b6c249778d07bd2c95fc35632a555 + url: "https://pub.dev" + source: hosted + version: "1.0.4" + archive: + dependency: transitive + description: + name: archive + sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd" + url: "https://pub.dev" + source: hosted + version: "4.0.7" + args: + dependency: transitive + description: + name: args + sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 + url: "https://pub.dev" + source: hosted + version: "2.7.0" + async: + dependency: transitive + description: + name: async + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" + url: "https://pub.dev" + source: hosted + version: "2.13.0" + audioplayers: + dependency: "direct main" + description: + name: audioplayers + sha256: "5441fa0ceb8807a5ad701199806510e56afde2b4913d9d17c2f19f2902cf0ae4" + url: "https://pub.dev" + source: hosted + version: "6.5.1" + audioplayers_android: + dependency: transitive + description: + name: audioplayers_android + sha256: "60a6728277228413a85755bd3ffd6fab98f6555608923813ce383b190a360605" + url: "https://pub.dev" + source: hosted + version: "5.2.1" + audioplayers_darwin: + dependency: transitive + description: + name: audioplayers_darwin + sha256: "0811d6924904ca13f9ef90d19081e4a87f7297ddc19fc3d31f60af1aaafee333" + url: "https://pub.dev" + source: hosted + version: "6.3.0" + audioplayers_linux: + dependency: transitive + description: + name: audioplayers_linux + sha256: f75bce1ce864170ef5e6a2c6a61cd3339e1a17ce11e99a25bae4474ea491d001 + url: "https://pub.dev" + source: hosted + version: "4.2.1" + audioplayers_platform_interface: + dependency: transitive + description: + name: audioplayers_platform_interface + sha256: "0e2f6a919ab56d0fec272e801abc07b26ae7f31980f912f24af4748763e5a656" + url: "https://pub.dev" + source: hosted + version: "7.1.1" + audioplayers_web: + dependency: transitive + description: + name: audioplayers_web + sha256: "1c0f17cec68455556775f1e50ca85c40c05c714a99c5eb1d2d57cc17ba5522d7" + url: "https://pub.dev" + source: hosted + version: "5.1.1" + audioplayers_windows: + dependency: transitive + description: + name: audioplayers_windows + sha256: "4048797865105b26d47628e6abb49231ea5de84884160229251f37dfcbe52fd7" + url: "https://pub.dev" + source: hosted + version: "4.2.1" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + characters: + dependency: transitive + description: + name: characters + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 + url: "https://pub.dev" + source: hosted + version: "1.4.0" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f" + url: "https://pub.dev" + source: hosted + version: "2.0.4" + cli_util: + dependency: transitive + description: + name: cli_util + sha256: ff6785f7e9e3c38ac98b2fb035701789de90154024a75b6cb926445e83197d1c + url: "https://pub.dev" + source: hosted + version: "0.4.2" + clock: + dependency: transitive + description: + name: clock + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b + url: "https://pub.dev" + source: hosted + version: "1.1.2" + code_assets: + dependency: transitive + description: + name: code_assets + sha256: "83ccdaa064c980b5596c35dd64a8d3ecc68620174ab9b90b6343b753aa721687" + url: "https://pub.dev" + source: hosted + version: "1.0.0" + collection: + dependency: transitive + description: + name: collection + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + url: "https://pub.dev" + source: hosted + version: "1.19.1" + convert: + dependency: transitive + description: + name: convert + sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 + url: "https://pub.dev" + source: hosted + version: "3.1.2" + crypto: + dependency: transitive + description: + name: crypto + sha256: c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf + url: "https://pub.dev" + source: hosted + version: "3.0.7" + dart_jsonwebtoken: + dependency: transitive + description: + name: dart_jsonwebtoken + sha256: "0de65691c1d736e9459f22f654ddd6fd8368a271d4e41aa07e53e6301eff5075" + url: "https://pub.dev" + source: hosted + version: "3.3.1" + ed25519_edwards: + dependency: transitive + description: + name: ed25519_edwards + sha256: "6ce0112d131327ec6d42beede1e5dfd526069b18ad45dcf654f15074ad9276cd" + url: "https://pub.dev" + source: hosted + version: "0.3.1" + fake_async: + dependency: transitive + description: + name: fake_async + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" + url: "https://pub.dev" + source: hosted + version: "1.3.3" + ffi: + dependency: transitive + description: + name: ffi + sha256: d07d37192dbf97461359c1518788f203b0c9102cfd2c35a716b823741219542c + url: "https://pub.dev" + source: hosted + version: "2.1.5" + file: + dependency: transitive + description: + name: file + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 + url: "https://pub.dev" + source: hosted + version: "7.0.1" + fixnum: + dependency: transitive + description: + name: fixnum + sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be + url: "https://pub.dev" + source: hosted + version: "1.1.1" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_dotenv: + dependency: "direct main" + description: + name: flutter_dotenv + sha256: b7c7be5cd9f6ef7a78429cabd2774d3c4af50e79cb2b7593e3d5d763ef95c61b + url: "https://pub.dev" + source: hosted + version: "5.2.1" + flutter_launcher_icons: + dependency: "direct dev" + description: + name: flutter_launcher_icons + sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea" + url: "https://pub.dev" + source: hosted + version: "0.13.1" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + sha256: "3105dc8492f6183fb076ccf1f351ac3d60564bff92e20bfc4af9cc1651f4e7e1" + url: "https://pub.dev" + source: hosted + version: "6.0.0" + flutter_riverpod: + dependency: "direct main" + description: + name: flutter_riverpod + sha256: "9532ee6db4a943a1ed8383072a2e3eeda041db5657cdf6d2acecf3c21ecbe7e1" + url: "https://pub.dev" + source: hosted + version: "2.6.1" + 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" + font_awesome_flutter: + dependency: "direct main" + description: + name: font_awesome_flutter + sha256: b9011df3a1fa02993630b8fb83526368cf2206a711259830325bab2f1d2a4eb0 + url: "https://pub.dev" + source: hosted + version: "10.12.0" + functions_client: + dependency: transitive + description: + name: functions_client + sha256: "94074d62167ae634127ef6095f536835063a7dc80f2b1aa306d2346ff9023996" + url: "https://pub.dev" + source: hosted + version: "2.5.0" + glob: + dependency: transitive + description: + name: glob + sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de + url: "https://pub.dev" + source: hosted + version: "2.1.3" + go_router: + dependency: "direct main" + description: + name: go_router + sha256: f02fd7d2a4dc512fec615529824fdd217fecb3a3d3de68360293a551f21634b3 + url: "https://pub.dev" + source: hosted + version: "14.8.1" + google_fonts: + dependency: "direct main" + description: + name: google_fonts + sha256: ba03d03bcaa2f6cb7bd920e3b5027181db75ab524f8891c8bc3aa603885b8055 + url: "https://pub.dev" + source: hosted + version: "6.3.3" + gotrue: + dependency: transitive + description: + name: gotrue + sha256: f7b52008311941a7c3e99f9590c4ee32dfc102a5442e43abf1b287d9f8cc39b2 + url: "https://pub.dev" + source: hosted + version: "2.18.0" + gtk: + dependency: transitive + description: + name: gtk + sha256: e8ce9ca4b1df106e4d72dad201d345ea1a036cc12c360f1a7d5a758f78ffa42c + url: "https://pub.dev" + source: hosted + version: "2.1.0" + hooks: + dependency: transitive + description: + name: hooks + sha256: "7a08a0d684cb3b8fb604b78455d5d352f502b68079f7b80b831c62220ab0a4f6" + url: "https://pub.dev" + source: hosted + version: "1.0.1" + http: + dependency: transitive + description: + name: http + sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412" + url: "https://pub.dev" + source: hosted + version: "1.6.0" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" + url: "https://pub.dev" + source: hosted + version: "4.1.2" + image: + dependency: transitive + description: + name: image + sha256: "492bd52f6c4fbb6ee41f781ff27765ce5f627910e1e0cbecfa3d9add5562604c" + url: "https://pub.dev" + source: hosted + version: "4.7.2" + json_annotation: + dependency: transitive + description: + name: json_annotation + sha256: "805fa86df56383000f640384b282ce0cb8431f1a7a2396de92fb66186d8c57df" + url: "https://pub.dev" + source: hosted + version: "4.10.0" + jwt_decode: + dependency: transitive + description: + name: jwt_decode + sha256: d2e9f68c052b2225130977429d30f187aa1981d789c76ad104a32243cfdebfbb + url: "https://pub.dev" + source: hosted + version: "0.3.1" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" + url: "https://pub.dev" + source: hosted + version: "11.0.2" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" + url: "https://pub.dev" + source: hosted + version: "3.0.10" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + lints: + dependency: transitive + description: + name: lints + sha256: "12f842a479589fea194fe5c5a3095abc7be0c1f2ddfa9a0e76aed1dbd26a87df" + url: "https://pub.dev" + source: hosted + version: "6.1.0" + logging: + dependency: transitive + description: + name: logging + sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 + url: "https://pub.dev" + source: hosted + version: "1.3.0" + matcher: + dependency: transitive + description: + name: matcher + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 + url: "https://pub.dev" + source: hosted + version: "0.12.17" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec + url: "https://pub.dev" + source: hosted + version: "0.11.1" + meta: + dependency: transitive + description: + name: meta + sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394" + url: "https://pub.dev" + source: hosted + version: "1.17.0" + mime: + dependency: transitive + description: + name: mime + sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6" + url: "https://pub.dev" + source: hosted + version: "2.0.0" + native_toolchain_c: + dependency: transitive + description: + name: native_toolchain_c + sha256: "89e83885ba09da5fdf2cdacc8002a712ca238c28b7f717910b34bcd27b0d03ac" + url: "https://pub.dev" + source: hosted + version: "0.17.4" + objective_c: + dependency: transitive + description: + name: objective_c + sha256: "100a1c87616ab6ed41ec263b083c0ef3261ee6cd1dc3b0f35f8ddfa4f996fe52" + url: "https://pub.dev" + source: hosted + version: "9.3.0" + path: + dependency: transitive + description: + name: path + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" + url: "https://pub.dev" + source: hosted + version: "1.9.1" + path_provider: + dependency: transitive + description: + name: path_provider + sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" + url: "https://pub.dev" + source: hosted + version: "2.1.5" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + sha256: f2c65e21139ce2c3dad46922be8272bb5963516045659e71bb16e151c93b580e + url: "https://pub.dev" + source: hosted + version: "2.2.22" + path_provider_foundation: + dependency: transitive + description: + name: path_provider_foundation + sha256: "2a376b7d6392d80cd3705782d2caa734ca4727776db0b6ec36ef3f1855197699" + url: "https://pub.dev" + source: hosted + version: "2.6.0" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 + url: "https://pub.dev" + source: hosted + version: "2.2.1" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 + url: "https://pub.dev" + source: hosted + version: "2.3.0" + petitparser: + dependency: transitive + description: + name: petitparser + sha256: "1a97266a94f7350d30ae522c0af07890c70b8e62c71e8e3920d1db4d23c057d1" + url: "https://pub.dev" + source: hosted + version: "7.0.1" + platform: + dependency: transitive + description: + name: platform + sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" + url: "https://pub.dev" + source: hosted + version: "3.1.6" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" + source: hosted + version: "2.1.8" + pointycastle: + dependency: transitive + description: + name: pointycastle + sha256: "92aa3841d083cc4b0f4709b5c74fd6409a3e6ba833ffc7dc6a8fee096366acf5" + url: "https://pub.dev" + source: hosted + version: "4.0.0" + posix: + dependency: transitive + description: + name: posix + sha256: "6323a5b0fa688b6a010df4905a56b00181479e6d10534cecfecede2aa55add61" + url: "https://pub.dev" + source: hosted + version: "6.0.3" + postgrest: + dependency: transitive + description: + name: postgrest + sha256: f4b6bb24b465c47649243ef0140475de8a0ec311dc9c75ebe573b2dcabb10460 + url: "https://pub.dev" + source: hosted + version: "2.6.0" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585" + url: "https://pub.dev" + source: hosted + version: "2.2.0" + realtime_client: + dependency: transitive + description: + name: realtime_client + sha256: "5268afc208d02fb9109854d262c1ebf6ece224cd285199ae1d2f92d2ff49dbf1" + url: "https://pub.dev" + source: hosted + version: "2.7.0" + retry: + dependency: transitive + description: + name: retry + sha256: "822e118d5b3aafed083109c72d5f484c6dc66707885e07c0fbcb8b986bba7efc" + url: "https://pub.dev" + source: hosted + version: "3.1.2" + riverpod: + dependency: transitive + description: + name: riverpod + sha256: "59062512288d3056b2321804332a13ffdd1bf16df70dcc8e506e411280a72959" + url: "https://pub.dev" + source: hosted + version: "2.6.1" + rxdart: + dependency: transitive + description: + name: rxdart + sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962" + url: "https://pub.dev" + source: hosted + version: "0.28.0" + shared_preferences: + dependency: transitive + description: + name: shared_preferences + sha256: "2939ae520c9024cb197fc20dee269cd8cdbf564c8b5746374ec6cacdc5169e64" + url: "https://pub.dev" + source: hosted + version: "2.5.4" + shared_preferences_android: + dependency: transitive + description: + name: shared_preferences_android + sha256: cbc40be9be1c5af4dab4d6e0de4d5d3729e6f3d65b89d21e1815d57705644a6f + url: "https://pub.dev" + source: hosted + version: "2.4.20" + shared_preferences_foundation: + dependency: transitive + description: + name: shared_preferences_foundation + sha256: "4e7eaffc2b17ba398759f1151415869a34771ba11ebbccd1b0145472a619a64f" + url: "https://pub.dev" + source: hosted + version: "2.5.6" + shared_preferences_linux: + dependency: transitive + description: + name: shared_preferences_linux + sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + shared_preferences_platform_interface: + dependency: transitive + description: + name: shared_preferences_platform_interface + sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + shared_preferences_web: + dependency: transitive + description: + name: shared_preferences_web + sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019 + url: "https://pub.dev" + source: hosted + version: "2.4.3" + shared_preferences_windows: + dependency: transitive + description: + name: shared_preferences_windows + sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + source_span: + dependency: transitive + description: + name: source_span + sha256: "56a02f1f4cd1a2d96303c0144c93bd6d909eea6bee6bf5a0e0b685edbd4c47ab" + url: "https://pub.dev" + source: hosted + version: "1.10.2" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" + url: "https://pub.dev" + source: hosted + version: "1.12.1" + state_notifier: + dependency: transitive + description: + name: state_notifier + sha256: b8677376aa54f2d7c58280d5a007f9e8774f1968d1fb1c096adcb4792fba29bb + url: "https://pub.dev" + source: hosted + version: "1.0.0" + storage_client: + dependency: transitive + description: + name: storage_client + sha256: "1c61b19ed9e78f37fdd1ca8b729ab8484e6c8fe82e15c87e070b861951183657" + url: "https://pub.dev" + source: hosted + version: "2.4.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" + url: "https://pub.dev" + source: hosted + version: "1.4.1" + supabase: + dependency: transitive + description: + name: supabase + sha256: cc039f63a3168386b3a4f338f3bff342c860d415a3578f3fbe854024aee6f911 + url: "https://pub.dev" + source: hosted + version: "2.10.2" + supabase_flutter: + dependency: "direct main" + description: + name: supabase_flutter + sha256: "92b2416ecb6a5c3ed34cf6e382b35ce6cc8921b64f2a9299d5d28968d42b09bb" + url: "https://pub.dev" + source: hosted + version: "2.12.0" + synchronized: + dependency: transitive + description: + name: synchronized + sha256: c254ade258ec8282947a0acbbc90b9575b4f19673533ee46f2f6e9b3aeefd7c0 + url: "https://pub.dev" + source: hosted + version: "3.4.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" + url: "https://pub.dev" + source: hosted + version: "1.2.2" + test_api: + dependency: transitive + description: + name: test_api + sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55 + url: "https://pub.dev" + source: hosted + version: "0.7.7" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 + url: "https://pub.dev" + source: hosted + version: "1.4.0" + url_launcher: + dependency: transitive + description: + name: url_launcher + sha256: f6a7e5c4835bb4e3026a04793a4199ca2d14c739ec378fdfe23fc8075d0439f8 + url: "https://pub.dev" + source: hosted + version: "6.3.2" + url_launcher_android: + dependency: transitive + description: + name: url_launcher_android + sha256: "767344bf3063897b5cf0db830e94f904528e6dd50a6dfaf839f0abf509009611" + url: "https://pub.dev" + source: hosted + version: "6.3.28" + url_launcher_ios: + dependency: transitive + description: + name: url_launcher_ios + sha256: cfde38aa257dae62ffe79c87fab20165dfdf6988c1d31b58ebf59b9106062aad + url: "https://pub.dev" + source: hosted + version: "6.3.6" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + sha256: d5e14138b3bc193a0f63c10a53c94b91d399df0512b1f29b94a043db7482384a + url: "https://pub.dev" + source: hosted + version: "3.2.2" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + sha256: "368adf46f71ad3c21b8f06614adb38346f193f3a59ba8fe9a2fd74133070ba18" + url: "https://pub.dev" + source: hosted + version: "3.2.5" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + sha256: d0412fcf4c6b31ecfdb7762359b7206ffba3bbffd396c6d9f9c4616ece476c1f + url: "https://pub.dev" + source: hosted + version: "2.4.2" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + sha256: "712c70ab1b99744ff066053cbe3e80c73332b38d46e5e945c98689b2e66fc15f" + url: "https://pub.dev" + source: hosted + version: "3.1.5" + uuid: + dependency: transitive + description: + name: uuid + sha256: a11b666489b1954e01d992f3d601b1804a33937b5a8fe677bd26b8a9f96f96e8 + url: "https://pub.dev" + source: hosted + version: "4.5.2" + vector_math: + dependency: transitive + description: + name: vector_math + sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b + url: "https://pub.dev" + source: hosted + version: "2.2.0" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60" + url: "https://pub.dev" + source: hosted + version: "15.0.2" + web: + dependency: transitive + description: + name: web + sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" + url: "https://pub.dev" + source: hosted + version: "1.1.1" + web_socket: + dependency: transitive + description: + name: web_socket + sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c" + url: "https://pub.dev" + source: hosted + version: "1.0.1" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8 + url: "https://pub.dev" + source: hosted + version: "3.0.3" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + xml: + dependency: transitive + description: + name: xml + sha256: "971043b3a0d3da28727e40ed3e0b5d18b742fa5a68665cca88e74b7876d5e025" + url: "https://pub.dev" + source: hosted + version: "6.6.1" + yaml: + dependency: transitive + description: + name: yaml + sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce + url: "https://pub.dev" + source: hosted + version: "3.1.3" + yet_another_json_isolate: + dependency: transitive + description: + name: yet_another_json_isolate + sha256: fe45897501fa156ccefbfb9359c9462ce5dec092f05e8a56109db30be864f01e + url: "https://pub.dev" + source: hosted + version: "2.1.0" +sdks: + dart: ">=3.10.7 <4.0.0" + flutter: ">=3.38.4" diff --git a/pubspec.yaml b/pubspec.yaml new file mode 100644 index 00000000..f96df653 --- /dev/null +++ b/pubspec.yaml @@ -0,0 +1,40 @@ +name: tasq +description: "A new Flutter project." +publish_to: 'none' +version: 0.1.0 + +environment: + sdk: ^3.10.7 + +dependencies: + flutter: + sdk: flutter + supabase_flutter: ^2.6.0 + flutter_riverpod: ^2.6.1 + go_router: ^14.6.2 + flutter_dotenv: ^5.2.1 + font_awesome_flutter: ^10.7.0 + google_fonts: ^6.2.1 + audioplayers: ^6.1.0 + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^6.0.0 + flutter_launcher_icons: ^0.13.1 + +flutter: + uses-material-design: true + assets: + - .env + - assets/ + +flutter_launcher_icons: + android: true + ios: true + image_path: assets/tasq_ico.png + web: + generate: true + image_path: assets/tasq_ico.png + background_color: "#FFFFFF" + theme_color: "#FFFFFF" diff --git a/supabase/functions/admin_user_management/index.ts b/supabase/functions/admin_user_management/index.ts new file mode 100644 index 00000000..4e39cfab --- /dev/null +++ b/supabase/functions/admin_user_management/index.ts @@ -0,0 +1,95 @@ +import { serve } from "https://deno.land/std@0.203.0/http/server.ts"; +import { createClient } from "https://esm.sh/@supabase/supabase-js@2"; + +const jsonResponse = (body: unknown, status = 200) => + new Response(JSON.stringify(body), { + status, + headers: { "Content-Type": "application/json" }, + }); + +serve(async (req) => { + if (req.method != "POST") { + return jsonResponse({ error: "Method not allowed" }, 405); + } + + const supabaseUrl = Deno.env.get("SUPABASE_URL") ?? ""; + const anonKey = Deno.env.get("SUPABASE_ANON_KEY") ?? ""; + const serviceKey = Deno.env.get("SUPABASE_SERVICE_ROLE_KEY") ?? ""; + if (!supabaseUrl || !anonKey || !serviceKey) { + return jsonResponse({ error: "Missing env configuration" }, 500); + } + + const authHeader = req.headers.get("Authorization") ?? ""; + const token = authHeader.replace("Bearer ", "").trim(); + if (!token) { + return jsonResponse({ error: "Missing access token" }, 401); + } + + const authClient = createClient(supabaseUrl, anonKey, { + global: { headers: { Authorization: `Bearer ${token}` } }, + }); + const { data: authData, error: authError } = + await authClient.auth.getUser(); + if (authError || !authData?.user) { + return jsonResponse({ error: "Unauthorized" }, 401); + } + + const adminClient = createClient(supabaseUrl, serviceKey); + const { data: profile, error: profileError } = await adminClient + .from("profiles") + .select("role") + .eq("id", authData.user.id) + .maybeSingle(); + const role = (profile?.role ?? "").toString().toLowerCase(); + if (profileError || role != "admin") { + return jsonResponse({ error: "Forbidden" }, 403); + } + + let payload: Record = {}; + try { + payload = await req.json(); + } catch (_) { + return jsonResponse({ error: "Invalid JSON" }, 400); + } + + const action = payload.action as string | undefined; + const userId = payload.userId as string | undefined; + if (!action || !userId) { + return jsonResponse({ error: "Missing action or userId" }, 400); + } + + if (action == "get_user") { + const { data, error } = await adminClient.auth.admin.getUserById(userId); + if (error) { + return jsonResponse({ error: error.message }, 400); + } + return jsonResponse({ user: data.user }); + } + + if (action == "set_password") { + const password = payload.password as string | undefined; + if (!password || password.length < 8) { + return jsonResponse({ error: "Password must be at least 8 characters" }, 400); + } + const { error } = await adminClient.auth.admin.updateUserById(userId, { + password, + }); + if (error) { + return jsonResponse({ error: error.message }, 400); + } + return jsonResponse({ ok: true }); + } + + if (action == "set_lock") { + const locked = Boolean(payload.locked); + const { error } = await adminClient.auth.admin.updateUserById(userId, { + ban_duration: locked ? "100y" : "0s", + }); + if (error) { + return jsonResponse({ error: error.message }, 400); + } + return jsonResponse({ ok: true }); + } + + return jsonResponse({ error: "Unknown action" }, 400); +}); diff --git a/web/favicon.png b/web/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..33a60b8793f92a087bd3e5d67019b03b2fe929a2 GIT binary patch literal 666 zcmV;L0%iS)P)+&4RD0NG(W%)EaPv6zcOun3;quq_S%g_7qIn>@(#9EHRbjX-UUx>oqfgxiQ z@U=EMNG3C!b=8wyP14!c!pcgV#J-eUAbzHcf>)tORzXz|T0SZPZ*^VxzWqqxuvW3O z7{TRkpu4->IJ3pyKsap&lL`eL{lg+^doxPyDHK(mlz_2aziaSuXhxa@i^m3pDj+w2Z#-3#HC#T%6M6pfK|V)Ab7l;F$!>DVECTim&mG1ndDHqX}w~Ib!h@bODN9 zK*ZM(xoz}R7E^Z%B9VED%N{OW;=Q6h4L2$tCp#YJG5;DSN@b0+Q)?a9gUgR_*$=a@ z16=!0nEoo|u<4~RnR>i(*kfswkip`D6UAB9Z&E?y0x0_u$N&HU07*qoM6N<$f^Pyh A0{{R3 literal 0 HcmV?d00001 diff --git a/web/icons/Icon-192.png b/web/icons/Icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..904167f5510e64ca50b52df861b560744628d864 GIT binary patch literal 17336 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

dSU=t(bQ`ivi zwME{KZf&%XWk?$jSjMYX*%do$)lkhE32{VEZ_oI$w=eKk0SJ!(p!NwKjp1ul5Cup> zFN3O2d#D#~M%B8#Q0%JFs90wAx^3)1^o@?ayQ0^K0cg{u9THk6v$pF7ts0_6WJUTm zD3PNp$#K+IbA-uh%-x7pBpwvq!NE zu@9K<-0;d%_^JSehXG6i5a-7^8XkHrlyUvoU}g30vjedu+ay3WVIah!GN^KkA>9V{1ooU>9ch`^bA*ZCHrx z@SI^ZH^f9h^Uw?kiLo9W>=Gx8FU`LvP|FFV0#Fg|TmZjPa4~@A4I_k5a*H6J%;6Md zg=KJ6eLL1rlBpfckt`@B6_%(CCA#`_@N5zcWqI$N3NbCQ{$pLEN>0z5s~pJ+SeLLs zDga?8fN7jM-Ta*5O91l0(=dNolT)HDAH>KMtV2ksY;oxpDCwD&-!*DzpZy)nr_>3x z3hJB3`_mnooZh+8k}W%ZJ%P(*1@dGZlqIHW_%)4U@OBv9p;nm7c@6^K`0bCcFMiJ{ z4l3`-ZB`iN^vtQ!k}bdbdIEO{h5~?(T)hv#$BiIT7=|}+&M7FCIS95dQGu;E#6h7k&g$0l<@F)J|n;5U&wNfFY!`fH>(WMvJ;9)J zWWI_5#9r;8w2WcTv(#T5<_{$k)sy^cDDs-=2l z1ETyO)OPv5c&qh)hWNT+Gz~n(Wh7*12*>m}URV6DusIY42bn#8@wA_3Akk2f8G55c z5q!H5(%HiZEo4rof43nn-jJcmcX=TV{R~(`_%NCjsL#~>oIu$iXz18Hz41Z3uK0Hi zyp}LRi!XRJp{XGk(a;J2{sG(yfMzK@8}yFn)`wcj>ez>Ry@Zk6W-4z4x_1{ z3cxLmY1m3*QULHUn2L{P4c`fx7ZlD2Xf(o)MyLREd;Bwv_qEF&htc#w&8u$nwsUhR z(AX5fip4xa@IRUp(a?(t!!K;*gvdI_l{OR_s{(+3V52VH75>hXB#n8kVbq41Cp(|z z|8JCN>_TPc3h)zez0$s+7Zip^IK`da28-`|ipH)0R{YA7Wv_5YD(oOPPLQMf5uYMd z>cR01j;5jj;2-EcycPBb0J?hcnlM6#qx}0>>%p;&22Du;tXRwM27lp?aOa7JMHT0E zk-cBt(2MaFO;G{BKj?q(VaR{x#rF{ny{JnJG;{Vt051Z_ZRo}Lil(XnR#2$)MgU1X zy?!UPYHH|3HFKDFyPId4vfx|M)D^&rT+S+djejvW@QiX8fdfqmna4MpMj6xh1dp%>M}Km|*m0(kx6 z=XbiH7ZWTrR|T-*G_N-LJLjHLqpswJUQ{E;$%{VKd%Q-YxectWh32jRR?rvuD(_81 zQ|@mMXO(N=6sM$r#z~2n1TGZ?u%eLr2lPdc<^IAf8r#s&3u_>h@KExXJipS2rtO6W zmzn}tq44(Y^tczm)c~#qFy#_Z1`_%oI4^$%Ph?%PxKtIu9#wo7qz6rG8^aZWW}bC! z=*0yHG@fxK7yNZiF=HDngcZOMBp9psgD`-bNLO6kEr)OgX$qkCL47rs0{EUgwqdwH zSOMzBF8%-){{DOr-~j&rZjB(%KymtX0K55GxAFgncXAK z_$mbeHP&xUgFpeq1BmANhiL9wL~!z+jyD9eDvyarUg#P|&a)}u4A?UMlN|UQ0B8A6 jdeD^U?8aPh(%A9;@KI!!1*YTs00000NkvXXu0mjfb|y0E literal 0 HcmV?d00001 diff --git a/web/icons/Icon-512.png b/web/icons/Icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..82c1afed6012396b4911b30d3eef5edb27bc1705 GIT binary patch literal 72191 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�El^#1j+S z8(Vnt^+O~#w-Al^;T|7?Kj5$U+m6TLEU5JLZ|-q2ps31@OfRiL(=>kXRPiBC3RT`e zVWQs;RRBCSOaah)E72&dNy>q5Rse!71;gF|F8af0aVf&Ms@7{~AA4IX;(j`As}efx zg|mf{4s(8;*wI|&l5dUKe|P3jPZHBY#IGjQk^p3cq7XR*4xIHiz;5uaT$bVWx^ZEs zldA%}n|`r~B}xKl6i$}kAO^nqdYe-~CDZQK06w_X&%u9eu#3%vY~BCYk^eAXlN}y{ zZeVU^1yhsr9Q;Z8)#vltqB=E#B#OO$1-XP&Iawe(UXO~7-VO|09E8W`-O&z6$KqI- zp2zz9QpIzTNT>5-_jGtv>@-XMt?8$(D2N>>x6!1Ao!12Qp+C5YOSgiF$wIl$= zU44a7K?XcGV1+vaJQ{d;tk;&mb-8fo$t+g3GbkCRP5gT+@KExgk@}wm^pKqFg+Bb? z{R_A}+5^AOYqRF-AqpeNbF|L*b`smMBy!mT#~@cVS>Lz7^1kl?v@$+RGL;? z_9TEnq@$Hdd_3A$fzU|1<!M!@7Uv7zmI&`>86 z1dq!R(*eU2()|?tE0CjR zPoPlL5b(K$HLJus`yvUx7zX+}BKYprVSMlAI4+O%!0-2RVqnxs7Pc%ZLxC?C^20}} zT+Fi9g`BPQ#`7v43pRnxMLSn%-`DW2HkCm(mE{utZg~7&_=0|Jj~JS^=j+SsDdh{; zTv|g%e;2}sNo-lJdYnCv%|uZkZRmV# zr}}?}LBD8{3%)5qgTL3SavQ-gUrVdjW0P9m*)thT zvJh$sV&cjui@tPpv|?^{WyefNs%31E+ZP(=?|((x1rXR3IV_5XbV zA3A$G&^OeF*_Si?Z~N&1=%o@im)Ce=pktsLs>i*v#$ZbbZQUKrDX5eH&{~LyM`XFV z=>Vi`NI7cX}1wNbSgp?+G*g>#{F<%EYqab?!bJgsB-^M{wF{<@WiO0E20Lq|1 zp3^k=XgXl93(>G2LmjQyNTk`1r9BeFP+vQ`JM9wo&ZyrpwZBZ;`VTHx=;(+d6bztm zpd0I}n>(HZ_D#F;$th4LlPMH)8N^oB_Yb_J1yItE+D;-vtaeR@+hx!E5{ZyVebm>d zoj9@c_fw=Mf?H}Uj;)mq^o*gv!B@_!KCIUWxG>P7U9)u$y zmgzkS*u#}I@GETU{{AkD`@ir|ASE_WTNrI!?Ffg0H4y+Q;O9+)%k-sP<$wCr1Y8Qj zio%J&VLrl~JX;oWxYCG)lb%<|Gygt zt;I|VbD&QS__{L(+R+p=jfq*?x)~e&vJh?kVd~Qky4?I?%odc z_H-WT_4Xt|0<+Wen0Y?UB0Kwmcizb~v-oMIf4Ba>;`JaHZDCSgHl5wqvX@1LG@Xfn zlt@tDzYH4bYwzhq@8|%Y+_`Vh)mK;xwIrTBe2&qJL+I>oM|)@cf!_O}VcE5F%c{ce zw`^{RwQEeUmO~#ZRMI%5-;0(@L+BmqLrW-FQ_wD#|EWx`y>-3)vclzm^^lbn+VK;) zuxJ_YkP980184@Utt8Al&v-h3DgjbgYok|nRzOwx&q*5Ppf5aV0`N*C0J`7-obx&> zgsF?k8mZ-5Cf($1C$*Eg(d{nD+V-_}FtQF{68Y(f*0h7pCR1F#Co&-I`pa

P!;x9U{~Ol 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 literal 0 HcmV?d00001 diff --git a/web/icons/Icon-maskable-192.png b/web/icons/Icon-maskable-192.png new file mode 100644 index 0000000000000000000000000000000000000000..904167f5510e64ca50b52df861b560744628d864 GIT binary patch literal 17336 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

dSU=t(bQ`ivi zwME{KZf&%XWk?$jSjMYX*%do$)lkhE32{VEZ_oI$w=eKk0SJ!(p!NwKjp1ul5Cup> zFN3O2d#D#~M%B8#Q0%JFs90wAx^3)1^o@?ayQ0^K0cg{u9THk6v$pF7ts0_6WJUTm zD3PNp$#K+IbA-uh%-x7pBpwvq!NE zu@9K<-0;d%_^JSehXG6i5a-7^8XkHrlyUvoU}g30vjedu+ay3WVIah!GN^KkA>9V{1ooU>9ch`^bA*ZCHrx z@SI^ZH^f9h^Uw?kiLo9W>=Gx8FU`LvP|FFV0#Fg|TmZjPa4~@A4I_k5a*H6J%;6Md zg=KJ6eLL1rlBpfckt`@B6_%(CCA#`_@N5zcWqI$N3NbCQ{$pLEN>0z5s~pJ+SeLLs zDga?8fN7jM-Ta*5O91l0(=dNolT)HDAH>KMtV2ksY;oxpDCwD&-!*DzpZy)nr_>3x z3hJB3`_mnooZh+8k}W%ZJ%P(*1@dGZlqIHW_%)4U@OBv9p;nm7c@6^K`0bCcFMiJ{ z4l3`-ZB`iN^vtQ!k}bdbdIEO{h5~?(T)hv#$BiIT7=|}+&M7FCIS95dQGu;E#6h7k&g$0l<@F)J|n;5U&wNfFY!`fH>(WMvJ;9)J zWWI_5#9r;8w2WcTv(#T5<_{$k)sy^cDDs-=2l z1ETyO)OPv5c&qh)hWNT+Gz~n(Wh7*12*>m}URV6DusIY42bn#8@wA_3Akk2f8G55c z5q!H5(%HiZEo4rof43nn-jJcmcX=TV{R~(`_%NCjsL#~>oIu$iXz18Hz41Z3uK0Hi zyp}LRi!XRJp{XGk(a;J2{sG(yfMzK@8}yFn)`wcj>ez>Ry@Zk6W-4z4x_1{ z3cxLmY1m3*QULHUn2L{P4c`fx7ZlD2Xf(o)MyLREd;Bwv_qEF&htc#w&8u$nwsUhR z(AX5fip4xa@IRUp(a?(t!!K;*gvdI_l{OR_s{(+3V52VH75>hXB#n8kVbq41Cp(|z z|8JCN>_TPc3h)zez0$s+7Zip^IK`da28-`|ipH)0R{YA7Wv_5YD(oOPPLQMf5uYMd z>cR01j;5jj;2-EcycPBb0J?hcnlM6#qx}0>>%p;&22Du;tXRwM27lp?aOa7JMHT0E zk-cBt(2MaFO;G{BKj?q(VaR{x#rF{ny{JnJG;{Vt051Z_ZRo}Lil(XnR#2$)MgU1X zy?!UPYHH|3HFKDFyPId4vfx|M)D^&rT+S+djejvW@QiX8fdfqmna4MpMj6xh1dp%>M}Km|*m0(kx6 z=XbiH7ZWTrR|T-*G_N-LJLjHLqpswJUQ{E;$%{VKd%Q-YxectWh32jRR?rvuD(_81 zQ|@mMXO(N=6sM$r#z~2n1TGZ?u%eLr2lPdc<^IAf8r#s&3u_>h@KExXJipS2rtO6W zmzn}tq44(Y^tczm)c~#qFy#_Z1`_%oI4^$%Ph?%PxKtIu9#wo7qz6rG8^aZWW}bC! z=*0yHG@fxK7yNZiF=HDngcZOMBp9psgD`-bNLO6kEr)OgX$qkCL47rs0{EUgwqdwH zSOMzBF8%-){{DOr-~j&rZjB(%KymtX0K55GxAFgncXAK z_$mbeHP&xUgFpeq1BmANhiL9wL~!z+jyD9eDvyarUg#P|&a)}u4A?UMlN|UQ0B8A6 jdeD^U?8aPh(%A9;@KI!!1*YTs00000NkvXXu0mjfb|y0E literal 0 HcmV?d00001 diff --git a/web/icons/Icon-maskable-512.png b/web/icons/Icon-maskable-512.png new file mode 100644 index 0000000000000000000000000000000000000000..82c1afed6012396b4911b30d3eef5edb27bc1705 GIT binary patch literal 72191 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�El^#1j+S z8(Vnt^+O~#w-Al^;T|7?Kj5$U+m6TLEU5JLZ|-q2ps31@OfRiL(=>kXRPiBC3RT`e zVWQs;RRBCSOaah)E72&dNy>q5Rse!71;gF|F8af0aVf&Ms@7{~AA4IX;(j`As}efx zg|mf{4s(8;*wI|&l5dUKe|P3jPZHBY#IGjQk^p3cq7XR*4xIHiz;5uaT$bVWx^ZEs zldA%}n|`r~B}xKl6i$}kAO^nqdYe-~CDZQK06w_X&%u9eu#3%vY~BCYk^eAXlN}y{ zZeVU^1yhsr9Q;Z8)#vltqB=E#B#OO$1-XP&Iawe(UXO~7-VO|09E8W`-O&z6$KqI- zp2zz9QpIzTNT>5-_jGtv>@-XMt?8$(D2N>>x6!1Ao!12Qp+C5YOSgiF$wIl$= zU44a7K?XcGV1+vaJQ{d;tk;&mb-8fo$t+g3GbkCRP5gT+@KExgk@}wm^pKqFg+Bb? z{R_A}+5^AOYqRF-AqpeNbF|L*b`smMBy!mT#~@cVS>Lz7^1kl?v@$+RGL;? z_9TEnq@$Hdd_3A$fzU|1<!M!@7Uv7zmI&`>86 z1dq!R(*eU2()|?tE0CjR zPoPlL5b(K$HLJus`yvUx7zX+}BKYprVSMlAI4+O%!0-2RVqnxs7Pc%ZLxC?C^20}} zT+Fi9g`BPQ#`7v43pRnxMLSn%-`DW2HkCm(mE{utZg~7&_=0|Jj~JS^=j+SsDdh{; zTv|g%e;2}sNo-lJdYnCv%|uZkZRmV# zr}}?}LBD8{3%)5qgTL3SavQ-gUrVdjW0P9m*)thT zvJh$sV&cjui@tPpv|?^{WyefNs%31E+ZP(=?|((x1rXR3IV_5XbV zA3A$G&^OeF*_Si?Z~N&1=%o@im)Ce=pktsLs>i*v#$ZbbZQUKrDX5eH&{~LyM`XFV z=>Vi`NI7cX}1wNbSgp?+G*g>#{F<%EYqab?!bJgsB-^M{wF{<@WiO0E20Lq|1 zp3^k=XgXl93(>G2LmjQyNTk`1r9BeFP+vQ`JM9wo&ZyrpwZBZ;`VTHx=;(+d6bztm zpd0I}n>(HZ_D#F;$th4LlPMH)8N^oB_Yb_J1yItE+D;-vtaeR@+hx!E5{ZyVebm>d zoj9@c_fw=Mf?H}Uj;)mq^o*gv!B@_!KCIUWxG>P7U9)u$y zmgzkS*u#}I@GETU{{AkD`@ir|ASE_WTNrI!?Ffg0H4y+Q;O9+)%k-sP<$wCr1Y8Qj zio%J&VLrl~JX;oWxYCG)lb%<|Gygt zt;I|VbD&QS__{L(+R+p=jfq*?x)~e&vJh?kVd~Qky4?I?%odc z_H-WT_4Xt|0<+Wen0Y?UB0Kwmcizb~v-oMIf4Ba>;`JaHZDCSgHl5wqvX@1LG@Xfn zlt@tDzYH4bYwzhq@8|%Y+_`Vh)mK;xwIrTBe2&qJL+I>oM|)@cf!_O}VcE5F%c{ce zw`^{RwQEeUmO~#ZRMI%5-;0(@L+BmqLrW-FQ_wD#|EWx`y>-3)vclzm^^lbn+VK;) zuxJ_YkP980184@Utt8Al&v-h3DgjbgYok|nRzOwx&q*5Ppf5aV0`N*C0J`7-obx&> zgsF?k8mZ-5Cf($1C$*Eg(d{nD+V-_}FtQF{68Y(f*0h7pCR1F#Co&-I`pa

P!;x9U{~Ol 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 literal 0 HcmV?d00001 diff --git a/web/index.html b/web/index.html new file mode 100644 index 00000000..d21efd81 --- /dev/null +++ b/web/index.html @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + tasq + + + + + + diff --git a/web/manifest.json b/web/manifest.json new file mode 100644 index 00000000..85c4b394 --- /dev/null +++ b/web/manifest.json @@ -0,0 +1,35 @@ +{ + "name": "tasq", + "short_name": "tasq", + "start_url": ".", + "display": "standalone", + "background_color": "#FFFFFF", + "theme_color": "#FFFFFF", + "description": "A new Flutter project.", + "orientation": "portrait-primary", + "prefer_related_applications": false, + "icons": [ + { + "src": "icons/Icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icons/Icon-512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "icons/Icon-maskable-192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "icons/Icon-maskable-512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ] +} \ No newline at end of file diff --git a/windows/.gitignore b/windows/.gitignore new file mode 100644 index 00000000..d492d0d9 --- /dev/null +++ b/windows/.gitignore @@ -0,0 +1,17 @@ +flutter/ephemeral/ + +# Visual Studio user-specific files. +*.suo +*.user +*.userosscache +*.sln.docstates + +# Visual Studio build-related files. +x64/ +x86/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ diff --git a/windows/CMakeLists.txt b/windows/CMakeLists.txt new file mode 100644 index 00000000..b124c6cc --- /dev/null +++ b/windows/CMakeLists.txt @@ -0,0 +1,108 @@ +# Project-level configuration. +cmake_minimum_required(VERSION 3.14) +project(tasq LANGUAGES CXX) + +# The name of the executable created for the application. Change this to change +# the on-disk name of your application. +set(BINARY_NAME "tasq") + +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent +# versions of CMake. +cmake_policy(VERSION 3.14...3.25) + +# Define build configuration option. +get_property(IS_MULTICONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) +if(IS_MULTICONFIG) + set(CMAKE_CONFIGURATION_TYPES "Debug;Profile;Release" + CACHE STRING "" FORCE) +else() + if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Debug" CACHE + STRING "Flutter build mode" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS + "Debug" "Profile" "Release") + endif() +endif() +# Define settings for the Profile build mode. +set(CMAKE_EXE_LINKER_FLAGS_PROFILE "${CMAKE_EXE_LINKER_FLAGS_RELEASE}") +set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE}") +set(CMAKE_C_FLAGS_PROFILE "${CMAKE_C_FLAGS_RELEASE}") +set(CMAKE_CXX_FLAGS_PROFILE "${CMAKE_CXX_FLAGS_RELEASE}") + +# Use Unicode for all projects. +add_definitions(-DUNICODE -D_UNICODE) + +# Compilation settings that should be applied to most targets. +# +# Be cautious about adding new options here, as plugins use this function by +# default. In most cases, you should add new options to specific targets instead +# of modifying this function. +function(APPLY_STANDARD_SETTINGS TARGET) + target_compile_features(${TARGET} PUBLIC cxx_std_17) + target_compile_options(${TARGET} PRIVATE /W4 /WX /wd"4100") + target_compile_options(${TARGET} PRIVATE /EHsc) + target_compile_definitions(${TARGET} PRIVATE "_HAS_EXCEPTIONS=0") + target_compile_definitions(${TARGET} PRIVATE "$<$:_DEBUG>") +endfunction() + +# Flutter library and tool build rules. +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# Application build; see runner/CMakeLists.txt. +add_subdirectory("runner") + + +# Generated plugin build rules, which manage building the plugins and adding +# them to the application. +include(flutter/generated_plugins.cmake) + + +# === Installation === +# Support files are copied into place next to the executable, so that it can +# run in place. This is done instead of making a separate bundle (as on Linux) +# so that building and running from within Visual Studio will work. +set(BUILD_BUNDLE_DIR "$") +# Make the "install" step default, as it's required to run. +set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) +endif() + +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") + +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + COMPONENT Runtime) + +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +if(PLUGIN_BUNDLED_LIBRARIES) + install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) +endif() + +# Copy the native assets provided by the build.dart from all packages. +set(NATIVE_ASSETS_DIR "${PROJECT_BUILD_DIR}native_assets/windows/") +install(DIRECTORY "${NATIVE_ASSETS_DIR}" + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" + COMPONENT Runtime) + +# Fully re-copy the assets directory on each build to avoid having stale files +# from a previous install. +set(FLUTTER_ASSET_DIR_NAME "flutter_assets") +install(CODE " + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") + " COMPONENT Runtime) +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) + +# Install the AOT library on non-Debug builds only. +install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" + CONFIGURATIONS Profile;Release + COMPONENT Runtime) diff --git a/windows/flutter/CMakeLists.txt b/windows/flutter/CMakeLists.txt new file mode 100644 index 00000000..903f4899 --- /dev/null +++ b/windows/flutter/CMakeLists.txt @@ -0,0 +1,109 @@ +# This file controls Flutter-level build steps. It should not be edited. +cmake_minimum_required(VERSION 3.14) + +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") + +# Configuration provided via flutter tool. +include(${EPHEMERAL_DIR}/generated_config.cmake) + +# TODO: Move the rest of this into files in ephemeral. See +# https://github.com/flutter/flutter/issues/57146. +set(WRAPPER_ROOT "${EPHEMERAL_DIR}/cpp_client_wrapper") + +# Set fallback configurations for older versions of the flutter tool. +if (NOT DEFINED FLUTTER_TARGET_PLATFORM) + set(FLUTTER_TARGET_PLATFORM "windows-x64") +endif() + +# === Flutter Library === +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/flutter_windows.dll") + +# Published to parent scope for install step. +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) +set(AOT_LIBRARY "${PROJECT_DIR}/build/windows/app.so" PARENT_SCOPE) + +list(APPEND FLUTTER_LIBRARY_HEADERS + "flutter_export.h" + "flutter_windows.h" + "flutter_messenger.h" + "flutter_plugin_registrar.h" + "flutter_texture_registrar.h" +) +list(TRANSFORM FLUTTER_LIBRARY_HEADERS PREPEND "${EPHEMERAL_DIR}/") +add_library(flutter INTERFACE) +target_include_directories(flutter INTERFACE + "${EPHEMERAL_DIR}" +) +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}.lib") +add_dependencies(flutter flutter_assemble) + +# === Wrapper === +list(APPEND CPP_WRAPPER_SOURCES_CORE + "core_implementations.cc" + "standard_codec.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_CORE PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_PLUGIN + "plugin_registrar.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_PLUGIN PREPEND "${WRAPPER_ROOT}/") +list(APPEND CPP_WRAPPER_SOURCES_APP + "flutter_engine.cc" + "flutter_view_controller.cc" +) +list(TRANSFORM CPP_WRAPPER_SOURCES_APP PREPEND "${WRAPPER_ROOT}/") + +# Wrapper sources needed for a plugin. +add_library(flutter_wrapper_plugin STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} +) +apply_standard_settings(flutter_wrapper_plugin) +set_target_properties(flutter_wrapper_plugin PROPERTIES + POSITION_INDEPENDENT_CODE ON) +set_target_properties(flutter_wrapper_plugin PROPERTIES + CXX_VISIBILITY_PRESET hidden) +target_link_libraries(flutter_wrapper_plugin PUBLIC flutter) +target_include_directories(flutter_wrapper_plugin PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_plugin flutter_assemble) + +# Wrapper sources needed for the runner. +add_library(flutter_wrapper_app STATIC + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_APP} +) +apply_standard_settings(flutter_wrapper_app) +target_link_libraries(flutter_wrapper_app PUBLIC flutter) +target_include_directories(flutter_wrapper_app PUBLIC + "${WRAPPER_ROOT}/include" +) +add_dependencies(flutter_wrapper_app flutter_assemble) + +# === Flutter tool backend === +# _phony_ is a non-existent file to force this command to run every time, +# since currently there's no way to get a full input/output list from the +# flutter tool. +set(PHONY_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/_phony_") +set_source_files_properties("${PHONY_OUTPUT}" PROPERTIES SYMBOLIC TRUE) +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} + ${PHONY_OUTPUT} + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" + ${FLUTTER_TARGET_PLATFORM} $ + VERBATIM +) +add_custom_target(flutter_assemble DEPENDS + "${FLUTTER_LIBRARY}" + ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} + ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} +) diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc new file mode 100644 index 00000000..0e1b3832 --- /dev/null +++ b/windows/flutter/generated_plugin_registrant.cc @@ -0,0 +1,20 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#include "generated_plugin_registrant.h" + +#include +#include +#include + +void RegisterPlugins(flutter::PluginRegistry* registry) { + AppLinksPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("AppLinksPluginCApi")); + AudioplayersWindowsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("AudioplayersWindowsPlugin")); + UrlLauncherWindowsRegisterWithRegistrar( + registry->GetRegistrarForPlugin("UrlLauncherWindows")); +} diff --git a/windows/flutter/generated_plugin_registrant.h b/windows/flutter/generated_plugin_registrant.h new file mode 100644 index 00000000..dc139d85 --- /dev/null +++ b/windows/flutter/generated_plugin_registrant.h @@ -0,0 +1,15 @@ +// +// Generated file. Do not edit. +// + +// clang-format off + +#ifndef GENERATED_PLUGIN_REGISTRANT_ +#define GENERATED_PLUGIN_REGISTRANT_ + +#include + +// Registers Flutter plugins. +void RegisterPlugins(flutter::PluginRegistry* registry); + +#endif // GENERATED_PLUGIN_REGISTRANT_ diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake new file mode 100644 index 00000000..99c6ac61 --- /dev/null +++ b/windows/flutter/generated_plugins.cmake @@ -0,0 +1,26 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST + app_links + audioplayers_windows + url_launcher_windows +) + +list(APPEND FLUTTER_FFI_PLUGIN_LIST +) + +set(PLUGIN_BUNDLED_LIBRARIES) + +foreach(plugin ${FLUTTER_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/windows plugins/${plugin}) + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin) + list(APPEND PLUGIN_BUNDLED_LIBRARIES $) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries}) +endforeach(plugin) + +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST}) + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/windows plugins/${ffi_plugin}) + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries}) +endforeach(ffi_plugin) diff --git a/windows/runner/CMakeLists.txt b/windows/runner/CMakeLists.txt new file mode 100644 index 00000000..394917c0 --- /dev/null +++ b/windows/runner/CMakeLists.txt @@ -0,0 +1,40 @@ +cmake_minimum_required(VERSION 3.14) +project(runner LANGUAGES CXX) + +# Define the application target. To change its name, change BINARY_NAME in the +# top-level CMakeLists.txt, not the value here, or `flutter run` will no longer +# work. +# +# Any new source files that you add to the application should be added here. +add_executable(${BINARY_NAME} WIN32 + "flutter_window.cpp" + "main.cpp" + "utils.cpp" + "win32_window.cpp" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" + "Runner.rc" + "runner.exe.manifest" +) + +# Apply the standard set of build settings. This can be removed for applications +# that need different build settings. +apply_standard_settings(${BINARY_NAME}) + +# Add preprocessor definitions for the build version. +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION=\"${FLUTTER_VERSION}\"") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MAJOR=${FLUTTER_VERSION_MAJOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_MINOR=${FLUTTER_VERSION_MINOR}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_PATCH=${FLUTTER_VERSION_PATCH}") +target_compile_definitions(${BINARY_NAME} PRIVATE "FLUTTER_VERSION_BUILD=${FLUTTER_VERSION_BUILD}") + +# Disable Windows macros that collide with C++ standard library functions. +target_compile_definitions(${BINARY_NAME} PRIVATE "NOMINMAX") + +# Add dependency libraries and include directories. Add any application-specific +# dependencies here. +target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) +target_link_libraries(${BINARY_NAME} PRIVATE "dwmapi.lib") +target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") + +# Run the Flutter tool portions of the build. This must not be removed. +add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/windows/runner/Runner.rc b/windows/runner/Runner.rc new file mode 100644 index 00000000..80711a02 --- /dev/null +++ b/windows/runner/Runner.rc @@ -0,0 +1,121 @@ +// Microsoft Visual C++ generated resource script. +// +#pragma code_page(65001) +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "winres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""winres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_APP_ICON ICON "resources\\app_icon.ico" + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +#if defined(FLUTTER_VERSION_MAJOR) && defined(FLUTTER_VERSION_MINOR) && defined(FLUTTER_VERSION_PATCH) && defined(FLUTTER_VERSION_BUILD) +#define VERSION_AS_NUMBER FLUTTER_VERSION_MAJOR,FLUTTER_VERSION_MINOR,FLUTTER_VERSION_PATCH,FLUTTER_VERSION_BUILD +#else +#define VERSION_AS_NUMBER 1,0,0,0 +#endif + +#if defined(FLUTTER_VERSION) +#define VERSION_AS_STRING FLUTTER_VERSION +#else +#define VERSION_AS_STRING "1.0.0" +#endif + +VS_VERSION_INFO VERSIONINFO + FILEVERSION VERSION_AS_NUMBER + PRODUCTVERSION VERSION_AS_NUMBER + FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +#ifdef _DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_APP + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904e4" + BEGIN + VALUE "CompanyName", "com.example" "\0" + VALUE "FileDescription", "tasq" "\0" + VALUE "FileVersion", VERSION_AS_STRING "\0" + VALUE "InternalName", "tasq" "\0" + VALUE "LegalCopyright", "Copyright (C) 2026 com.example. All rights reserved." "\0" + VALUE "OriginalFilename", "tasq.exe" "\0" + VALUE "ProductName", "tasq" "\0" + VALUE "ProductVersion", VERSION_AS_STRING "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1252 + END +END + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED diff --git a/windows/runner/flutter_window.cpp b/windows/runner/flutter_window.cpp new file mode 100644 index 00000000..955ee303 --- /dev/null +++ b/windows/runner/flutter_window.cpp @@ -0,0 +1,71 @@ +#include "flutter_window.h" + +#include + +#include "flutter/generated_plugin_registrant.h" + +FlutterWindow::FlutterWindow(const flutter::DartProject& project) + : project_(project) {} + +FlutterWindow::~FlutterWindow() {} + +bool FlutterWindow::OnCreate() { + if (!Win32Window::OnCreate()) { + return false; + } + + RECT frame = GetClientArea(); + + // The size here must match the window dimensions to avoid unnecessary surface + // creation / destruction in the startup path. + flutter_controller_ = std::make_unique( + frame.right - frame.left, frame.bottom - frame.top, project_); + // Ensure that basic setup of the controller was successful. + if (!flutter_controller_->engine() || !flutter_controller_->view()) { + return false; + } + RegisterPlugins(flutter_controller_->engine()); + SetChildContent(flutter_controller_->view()->GetNativeWindow()); + + flutter_controller_->engine()->SetNextFrameCallback([&]() { + this->Show(); + }); + + // Flutter can complete the first frame before the "show window" callback is + // registered. The following call ensures a frame is pending to ensure the + // window is shown. It is a no-op if the first frame hasn't completed yet. + flutter_controller_->ForceRedraw(); + + return true; +} + +void FlutterWindow::OnDestroy() { + if (flutter_controller_) { + flutter_controller_ = nullptr; + } + + Win32Window::OnDestroy(); +} + +LRESULT +FlutterWindow::MessageHandler(HWND hwnd, UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + // Give Flutter, including plugins, an opportunity to handle window messages. + if (flutter_controller_) { + std::optional result = + flutter_controller_->HandleTopLevelWindowProc(hwnd, message, wparam, + lparam); + if (result) { + return *result; + } + } + + switch (message) { + case WM_FONTCHANGE: + flutter_controller_->engine()->ReloadSystemFonts(); + break; + } + + return Win32Window::MessageHandler(hwnd, message, wparam, lparam); +} diff --git a/windows/runner/flutter_window.h b/windows/runner/flutter_window.h new file mode 100644 index 00000000..6da0652f --- /dev/null +++ b/windows/runner/flutter_window.h @@ -0,0 +1,33 @@ +#ifndef RUNNER_FLUTTER_WINDOW_H_ +#define RUNNER_FLUTTER_WINDOW_H_ + +#include +#include + +#include + +#include "win32_window.h" + +// A window that does nothing but host a Flutter view. +class FlutterWindow : public Win32Window { + public: + // Creates a new FlutterWindow hosting a Flutter view running |project|. + explicit FlutterWindow(const flutter::DartProject& project); + virtual ~FlutterWindow(); + + protected: + // Win32Window: + bool OnCreate() override; + void OnDestroy() override; + LRESULT MessageHandler(HWND window, UINT const message, WPARAM const wparam, + LPARAM const lparam) noexcept override; + + private: + // The project to run. + flutter::DartProject project_; + + // The Flutter instance hosted by this window. + std::unique_ptr flutter_controller_; +}; + +#endif // RUNNER_FLUTTER_WINDOW_H_ diff --git a/windows/runner/main.cpp b/windows/runner/main.cpp new file mode 100644 index 00000000..acefb195 --- /dev/null +++ b/windows/runner/main.cpp @@ -0,0 +1,43 @@ +#include +#include +#include + +#include "flutter_window.h" +#include "utils.h" + +int APIENTRY wWinMain(_In_ HINSTANCE instance, _In_opt_ HINSTANCE prev, + _In_ wchar_t *command_line, _In_ int show_command) { + // Attach to console when present (e.g., 'flutter run') or create a + // new console when running with a debugger. + if (!::AttachConsole(ATTACH_PARENT_PROCESS) && ::IsDebuggerPresent()) { + CreateAndAttachConsole(); + } + + // Initialize COM, so that it is available for use in the library and/or + // plugins. + ::CoInitializeEx(nullptr, COINIT_APARTMENTTHREADED); + + flutter::DartProject project(L"data"); + + std::vector command_line_arguments = + GetCommandLineArguments(); + + project.set_dart_entrypoint_arguments(std::move(command_line_arguments)); + + FlutterWindow window(project); + Win32Window::Point origin(10, 10); + Win32Window::Size size(1280, 720); + if (!window.Create(L"tasq", origin, size)) { + return EXIT_FAILURE; + } + window.SetQuitOnClose(true); + + ::MSG msg; + while (::GetMessage(&msg, nullptr, 0, 0)) { + ::TranslateMessage(&msg); + ::DispatchMessage(&msg); + } + + ::CoUninitialize(); + return EXIT_SUCCESS; +} diff --git a/windows/runner/resource.h b/windows/runner/resource.h new file mode 100644 index 00000000..66a65d1e --- /dev/null +++ b/windows/runner/resource.h @@ -0,0 +1,16 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by Runner.rc +// +#define IDI_APP_ICON 101 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 102 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1001 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff --git a/windows/runner/resources/app_icon.ico b/windows/runner/resources/app_icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..c04e20caf6370ebb9253ad831cc31de4a9c965f6 GIT binary patch literal 33772 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 literal 0 HcmV?d00001 diff --git a/windows/runner/runner.exe.manifest b/windows/runner/runner.exe.manifest new file mode 100644 index 00000000..153653e8 --- /dev/null +++ b/windows/runner/runner.exe.manifest @@ -0,0 +1,14 @@ + + + + + PerMonitorV2 + + + + + + + + + diff --git a/windows/runner/utils.cpp b/windows/runner/utils.cpp new file mode 100644 index 00000000..3a0b4651 --- /dev/null +++ b/windows/runner/utils.cpp @@ -0,0 +1,65 @@ +#include "utils.h" + +#include +#include +#include +#include + +#include + +void CreateAndAttachConsole() { + if (::AllocConsole()) { + FILE *unused; + if (freopen_s(&unused, "CONOUT$", "w", stdout)) { + _dup2(_fileno(stdout), 1); + } + if (freopen_s(&unused, "CONOUT$", "w", stderr)) { + _dup2(_fileno(stdout), 2); + } + std::ios::sync_with_stdio(); + FlutterDesktopResyncOutputStreams(); + } +} + +std::vector GetCommandLineArguments() { + // Convert the UTF-16 command line arguments to UTF-8 for the Engine to use. + int argc; + wchar_t** argv = ::CommandLineToArgvW(::GetCommandLineW(), &argc); + if (argv == nullptr) { + return std::vector(); + } + + std::vector command_line_arguments; + + // Skip the first argument as it's the binary name. + for (int i = 1; i < argc; i++) { + command_line_arguments.push_back(Utf8FromUtf16(argv[i])); + } + + ::LocalFree(argv); + + return command_line_arguments; +} + +std::string Utf8FromUtf16(const wchar_t* utf16_string) { + if (utf16_string == nullptr) { + return std::string(); + } + unsigned int target_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + -1, nullptr, 0, nullptr, nullptr) + -1; // remove the trailing null character + int input_length = (int)wcslen(utf16_string); + std::string utf8_string; + if (target_length == 0 || target_length > utf8_string.max_size()) { + return utf8_string; + } + utf8_string.resize(target_length); + int converted_length = ::WideCharToMultiByte( + CP_UTF8, WC_ERR_INVALID_CHARS, utf16_string, + input_length, utf8_string.data(), target_length, nullptr, nullptr); + if (converted_length == 0) { + return std::string(); + } + return utf8_string; +} diff --git a/windows/runner/utils.h b/windows/runner/utils.h new file mode 100644 index 00000000..3879d547 --- /dev/null +++ b/windows/runner/utils.h @@ -0,0 +1,19 @@ +#ifndef RUNNER_UTILS_H_ +#define RUNNER_UTILS_H_ + +#include +#include + +// Creates a console for the process, and redirects stdout and stderr to +// it for both the runner and the Flutter library. +void CreateAndAttachConsole(); + +// Takes a null-terminated wchar_t* encoded in UTF-16 and returns a std::string +// encoded in UTF-8. Returns an empty std::string on failure. +std::string Utf8FromUtf16(const wchar_t* utf16_string); + +// Gets the command line arguments passed in as a std::vector, +// encoded in UTF-8. Returns an empty std::vector on failure. +std::vector GetCommandLineArguments(); + +#endif // RUNNER_UTILS_H_ diff --git a/windows/runner/win32_window.cpp b/windows/runner/win32_window.cpp new file mode 100644 index 00000000..60608d0f --- /dev/null +++ b/windows/runner/win32_window.cpp @@ -0,0 +1,288 @@ +#include "win32_window.h" + +#include +#include + +#include "resource.h" + +namespace { + +/// Window attribute that enables dark mode window decorations. +/// +/// Redefined in case the developer's machine has a Windows SDK older than +/// version 10.0.22000.0. +/// See: https://docs.microsoft.com/windows/win32/api/dwmapi/ne-dwmapi-dwmwindowattribute +#ifndef DWMWA_USE_IMMERSIVE_DARK_MODE +#define DWMWA_USE_IMMERSIVE_DARK_MODE 20 +#endif + +constexpr const wchar_t kWindowClassName[] = L"FLUTTER_RUNNER_WIN32_WINDOW"; + +/// Registry key for app theme preference. +/// +/// A value of 0 indicates apps should use dark mode. A non-zero or missing +/// value indicates apps should use light mode. +constexpr const wchar_t kGetPreferredBrightnessRegKey[] = + L"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize"; +constexpr const wchar_t kGetPreferredBrightnessRegValue[] = L"AppsUseLightTheme"; + +// The number of Win32Window objects that currently exist. +static int g_active_window_count = 0; + +using EnableNonClientDpiScaling = BOOL __stdcall(HWND hwnd); + +// Scale helper to convert logical scaler values to physical using passed in +// scale factor +int Scale(int source, double scale_factor) { + return static_cast(source * scale_factor); +} + +// Dynamically loads the |EnableNonClientDpiScaling| from the User32 module. +// This API is only needed for PerMonitor V1 awareness mode. +void EnableFullDpiSupportIfAvailable(HWND hwnd) { + HMODULE user32_module = LoadLibraryA("User32.dll"); + if (!user32_module) { + return; + } + auto enable_non_client_dpi_scaling = + reinterpret_cast( + GetProcAddress(user32_module, "EnableNonClientDpiScaling")); + if (enable_non_client_dpi_scaling != nullptr) { + enable_non_client_dpi_scaling(hwnd); + } + FreeLibrary(user32_module); +} + +} // namespace + +// Manages the Win32Window's window class registration. +class WindowClassRegistrar { + public: + ~WindowClassRegistrar() = default; + + // Returns the singleton registrar instance. + static WindowClassRegistrar* GetInstance() { + if (!instance_) { + instance_ = new WindowClassRegistrar(); + } + return instance_; + } + + // Returns the name of the window class, registering the class if it hasn't + // previously been registered. + const wchar_t* GetWindowClass(); + + // Unregisters the window class. Should only be called if there are no + // instances of the window. + void UnregisterWindowClass(); + + private: + WindowClassRegistrar() = default; + + static WindowClassRegistrar* instance_; + + bool class_registered_ = false; +}; + +WindowClassRegistrar* WindowClassRegistrar::instance_ = nullptr; + +const wchar_t* WindowClassRegistrar::GetWindowClass() { + if (!class_registered_) { + WNDCLASS window_class{}; + window_class.hCursor = LoadCursor(nullptr, IDC_ARROW); + window_class.lpszClassName = kWindowClassName; + window_class.style = CS_HREDRAW | CS_VREDRAW; + window_class.cbClsExtra = 0; + window_class.cbWndExtra = 0; + window_class.hInstance = GetModuleHandle(nullptr); + window_class.hIcon = + LoadIcon(window_class.hInstance, MAKEINTRESOURCE(IDI_APP_ICON)); + window_class.hbrBackground = 0; + window_class.lpszMenuName = nullptr; + window_class.lpfnWndProc = Win32Window::WndProc; + RegisterClass(&window_class); + class_registered_ = true; + } + return kWindowClassName; +} + +void WindowClassRegistrar::UnregisterWindowClass() { + UnregisterClass(kWindowClassName, nullptr); + class_registered_ = false; +} + +Win32Window::Win32Window() { + ++g_active_window_count; +} + +Win32Window::~Win32Window() { + --g_active_window_count; + Destroy(); +} + +bool Win32Window::Create(const std::wstring& title, + const Point& origin, + const Size& size) { + Destroy(); + + const wchar_t* window_class = + WindowClassRegistrar::GetInstance()->GetWindowClass(); + + const POINT target_point = {static_cast(origin.x), + static_cast(origin.y)}; + HMONITOR monitor = MonitorFromPoint(target_point, MONITOR_DEFAULTTONEAREST); + UINT dpi = FlutterDesktopGetDpiForMonitor(monitor); + double scale_factor = dpi / 96.0; + + HWND window = CreateWindow( + window_class, title.c_str(), WS_OVERLAPPEDWINDOW, + Scale(origin.x, scale_factor), Scale(origin.y, scale_factor), + Scale(size.width, scale_factor), Scale(size.height, scale_factor), + nullptr, nullptr, GetModuleHandle(nullptr), this); + + if (!window) { + return false; + } + + UpdateTheme(window); + + return OnCreate(); +} + +bool Win32Window::Show() { + return ShowWindow(window_handle_, SW_SHOWNORMAL); +} + +// static +LRESULT CALLBACK Win32Window::WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + if (message == WM_NCCREATE) { + auto window_struct = reinterpret_cast(lparam); + SetWindowLongPtr(window, GWLP_USERDATA, + reinterpret_cast(window_struct->lpCreateParams)); + + auto that = static_cast(window_struct->lpCreateParams); + EnableFullDpiSupportIfAvailable(window); + that->window_handle_ = window; + } else if (Win32Window* that = GetThisFromHandle(window)) { + return that->MessageHandler(window, message, wparam, lparam); + } + + return DefWindowProc(window, message, wparam, lparam); +} + +LRESULT +Win32Window::MessageHandler(HWND hwnd, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept { + switch (message) { + case WM_DESTROY: + window_handle_ = nullptr; + Destroy(); + if (quit_on_close_) { + PostQuitMessage(0); + } + return 0; + + case WM_DPICHANGED: { + auto newRectSize = reinterpret_cast(lparam); + LONG newWidth = newRectSize->right - newRectSize->left; + LONG newHeight = newRectSize->bottom - newRectSize->top; + + SetWindowPos(hwnd, nullptr, newRectSize->left, newRectSize->top, newWidth, + newHeight, SWP_NOZORDER | SWP_NOACTIVATE); + + return 0; + } + case WM_SIZE: { + RECT rect = GetClientArea(); + if (child_content_ != nullptr) { + // Size and position the child window. + MoveWindow(child_content_, rect.left, rect.top, rect.right - rect.left, + rect.bottom - rect.top, TRUE); + } + return 0; + } + + case WM_ACTIVATE: + if (child_content_ != nullptr) { + SetFocus(child_content_); + } + return 0; + + case WM_DWMCOLORIZATIONCOLORCHANGED: + UpdateTheme(hwnd); + return 0; + } + + return DefWindowProc(window_handle_, message, wparam, lparam); +} + +void Win32Window::Destroy() { + OnDestroy(); + + if (window_handle_) { + DestroyWindow(window_handle_); + window_handle_ = nullptr; + } + if (g_active_window_count == 0) { + WindowClassRegistrar::GetInstance()->UnregisterWindowClass(); + } +} + +Win32Window* Win32Window::GetThisFromHandle(HWND const window) noexcept { + return reinterpret_cast( + GetWindowLongPtr(window, GWLP_USERDATA)); +} + +void Win32Window::SetChildContent(HWND content) { + child_content_ = content; + SetParent(content, window_handle_); + RECT frame = GetClientArea(); + + MoveWindow(content, frame.left, frame.top, frame.right - frame.left, + frame.bottom - frame.top, true); + + SetFocus(child_content_); +} + +RECT Win32Window::GetClientArea() { + RECT frame; + GetClientRect(window_handle_, &frame); + return frame; +} + +HWND Win32Window::GetHandle() { + return window_handle_; +} + +void Win32Window::SetQuitOnClose(bool quit_on_close) { + quit_on_close_ = quit_on_close; +} + +bool Win32Window::OnCreate() { + // No-op; provided for subclasses. + return true; +} + +void Win32Window::OnDestroy() { + // No-op; provided for subclasses. +} + +void Win32Window::UpdateTheme(HWND const window) { + DWORD light_mode; + DWORD light_mode_size = sizeof(light_mode); + LSTATUS result = RegGetValue(HKEY_CURRENT_USER, kGetPreferredBrightnessRegKey, + kGetPreferredBrightnessRegValue, + RRF_RT_REG_DWORD, nullptr, &light_mode, + &light_mode_size); + + if (result == ERROR_SUCCESS) { + BOOL enable_dark_mode = light_mode == 0; + DwmSetWindowAttribute(window, DWMWA_USE_IMMERSIVE_DARK_MODE, + &enable_dark_mode, sizeof(enable_dark_mode)); + } +} diff --git a/windows/runner/win32_window.h b/windows/runner/win32_window.h new file mode 100644 index 00000000..e901dde6 --- /dev/null +++ b/windows/runner/win32_window.h @@ -0,0 +1,102 @@ +#ifndef RUNNER_WIN32_WINDOW_H_ +#define RUNNER_WIN32_WINDOW_H_ + +#include + +#include +#include +#include + +// A class abstraction for a high DPI-aware Win32 Window. Intended to be +// inherited from by classes that wish to specialize with custom +// rendering and input handling +class Win32Window { + public: + struct Point { + unsigned int x; + unsigned int y; + Point(unsigned int x, unsigned int y) : x(x), y(y) {} + }; + + struct Size { + unsigned int width; + unsigned int height; + Size(unsigned int width, unsigned int height) + : width(width), height(height) {} + }; + + Win32Window(); + virtual ~Win32Window(); + + // Creates a win32 window with |title| that is positioned and sized using + // |origin| and |size|. New windows are created on the default monitor. Window + // sizes are specified to the OS in physical pixels, hence to ensure a + // consistent size this function will scale the inputted width and height as + // as appropriate for the default monitor. The window is invisible until + // |Show| is called. Returns true if the window was created successfully. + bool Create(const std::wstring& title, const Point& origin, const Size& size); + + // Show the current window. Returns true if the window was successfully shown. + bool Show(); + + // Release OS resources associated with window. + void Destroy(); + + // Inserts |content| into the window tree. + void SetChildContent(HWND content); + + // Returns the backing Window handle to enable clients to set icon and other + // window properties. Returns nullptr if the window has been destroyed. + HWND GetHandle(); + + // If true, closing this window will quit the application. + void SetQuitOnClose(bool quit_on_close); + + // Return a RECT representing the bounds of the current client area. + RECT GetClientArea(); + + protected: + // Processes and route salient window messages for mouse handling, + // size change and DPI. Delegates handling of these to member overloads that + // inheriting classes can handle. + virtual LRESULT MessageHandler(HWND window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Called when CreateAndShow is called, allowing subclass window-related + // setup. Subclasses should return false if setup fails. + virtual bool OnCreate(); + + // Called when Destroy is called. + virtual void OnDestroy(); + + private: + friend class WindowClassRegistrar; + + // OS callback called by message pump. Handles the WM_NCCREATE message which + // is passed when the non-client area is being created and enables automatic + // non-client DPI scaling so that the non-client area automatically + // responds to changes in DPI. All other messages are handled by + // MessageHandler. + static LRESULT CALLBACK WndProc(HWND const window, + UINT const message, + WPARAM const wparam, + LPARAM const lparam) noexcept; + + // Retrieves a class instance pointer for |window| + static Win32Window* GetThisFromHandle(HWND const window) noexcept; + + // Update the window frame's theme to match the system theme. + static void UpdateTheme(HWND const window); + + bool quit_on_close_ = false; + + // window handle for top level window. + HWND window_handle_ = nullptr; + + // window handle for hosted content. + HWND child_content_ = nullptr; +}; + +#endif // RUNNER_WIN32_WINDOW_H_