diff --git a/assets/icons/add_devices_icon.svg b/assets/icons/add_devices_icon.svg
new file mode 100644
index 0000000..b7f0243
--- /dev/null
+++ b/assets/icons/add_devices_icon.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/icons/add_scene_icon.svg b/assets/icons/add_scene_icon.svg
new file mode 100644
index 0000000..0fb0b4a
--- /dev/null
+++ b/assets/icons/add_scene_icon.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/icons/add_switch_icon.svg b/assets/icons/add_switch_icon.svg
new file mode 100644
index 0000000..7b39523
--- /dev/null
+++ b/assets/icons/add_switch_icon.svg
@@ -0,0 +1,10 @@
+
diff --git a/assets/icons/backlight_icon.svg b/assets/icons/backlight_icon.svg
new file mode 100644
index 0000000..b4f5d91
--- /dev/null
+++ b/assets/icons/backlight_icon.svg
@@ -0,0 +1,10 @@
+
diff --git a/assets/icons/check_update_icon.svg b/assets/icons/check_update_icon.svg
new file mode 100644
index 0000000..46527d3
--- /dev/null
+++ b/assets/icons/check_update_icon.svg
@@ -0,0 +1,22 @@
+
+
+
\ No newline at end of file
diff --git a/assets/icons/create_group_icon.svg b/assets/icons/create_group_icon.svg
new file mode 100644
index 0000000..00a8668
--- /dev/null
+++ b/assets/icons/create_group_icon.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/edit_name_setting.svg b/assets/icons/edit_name_setting.svg
new file mode 100644
index 0000000..9011e82
--- /dev/null
+++ b/assets/icons/edit_name_setting.svg
@@ -0,0 +1,10 @@
+
diff --git a/assets/icons/edit_name_sos_icon.svg b/assets/icons/edit_name_sos_icon.svg
new file mode 100644
index 0000000..c9e6a9e
--- /dev/null
+++ b/assets/icons/edit_name_sos_icon.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/icons/edit_sos_icon.svg b/assets/icons/edit_sos_icon.svg
new file mode 100644
index 0000000..c9e6a9e
--- /dev/null
+++ b/assets/icons/edit_sos_icon.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/icons/empty_log.svg b/assets/icons/empty_log.svg
new file mode 100644
index 0000000..8e847ac
--- /dev/null
+++ b/assets/icons/empty_log.svg
@@ -0,0 +1,16 @@
+
diff --git a/assets/icons/empty_update_icon.svg b/assets/icons/empty_update_icon.svg
new file mode 100644
index 0000000..3cf26c9
--- /dev/null
+++ b/assets/icons/empty_update_icon.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/icons/faq_icon.svg b/assets/icons/faq_icon.svg
new file mode 100644
index 0000000..394f26c
--- /dev/null
+++ b/assets/icons/faq_icon.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/four_scene_home_icon.svg b/assets/icons/four_scene_home_icon.svg
new file mode 100644
index 0000000..8251888
--- /dev/null
+++ b/assets/icons/four_scene_home_icon.svg
@@ -0,0 +1,9 @@
+
diff --git a/assets/icons/four_scene_icon.svg b/assets/icons/four_scene_icon.svg
new file mode 100644
index 0000000..414d952
--- /dev/null
+++ b/assets/icons/four_scene_icon.svg
@@ -0,0 +1,67 @@
+
diff --git a/assets/icons/green_sos.svg b/assets/icons/green_sos.svg
new file mode 100644
index 0000000..da225aa
--- /dev/null
+++ b/assets/icons/green_sos.svg
@@ -0,0 +1,38 @@
+
diff --git a/assets/icons/info.svg b/assets/icons/info.svg
new file mode 100644
index 0000000..8aafa02
--- /dev/null
+++ b/assets/icons/info.svg
@@ -0,0 +1,10 @@
+
diff --git a/assets/icons/minus_icon.svg b/assets/icons/minus_icon.svg
new file mode 100644
index 0000000..5eb5323
--- /dev/null
+++ b/assets/icons/minus_icon.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/icons/notification_icon.svg b/assets/icons/notification_icon.svg
new file mode 100644
index 0000000..ed3d9d0
--- /dev/null
+++ b/assets/icons/notification_icon.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/red_sos.svg b/assets/icons/red_sos.svg
new file mode 100644
index 0000000..c2f6966
--- /dev/null
+++ b/assets/icons/red_sos.svg
@@ -0,0 +1,38 @@
+
diff --git a/assets/icons/remove_scene_icon.svg b/assets/icons/remove_scene_icon.svg
new file mode 100644
index 0000000..f190e01
--- /dev/null
+++ b/assets/icons/remove_scene_icon.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/share_icon.svg b/assets/icons/share_icon.svg
new file mode 100644
index 0000000..a4b908f
--- /dev/null
+++ b/assets/icons/share_icon.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/six_scene_home_icon.svg b/assets/icons/six_scene_home_icon.svg
new file mode 100644
index 0000000..b4483f3
--- /dev/null
+++ b/assets/icons/six_scene_home_icon.svg
@@ -0,0 +1,12 @@
+
diff --git a/assets/icons/six_scene_icon.svg b/assets/icons/six_scene_icon.svg
new file mode 100644
index 0000000..386e615
--- /dev/null
+++ b/assets/icons/six_scene_icon.svg
@@ -0,0 +1,34 @@
+
diff --git a/assets/icons/sos_home_icon.svg b/assets/icons/sos_home_icon.svg
new file mode 100644
index 0000000..6f36bac
--- /dev/null
+++ b/assets/icons/sos_home_icon.svg
@@ -0,0 +1,23 @@
+
diff --git a/assets/icons/sos_profile_icon.svg b/assets/icons/sos_profile_icon.svg
new file mode 100644
index 0000000..f99ec5b
--- /dev/null
+++ b/assets/icons/sos_profile_icon.svg
@@ -0,0 +1,6 @@
+
diff --git a/assets/icons/switch_off.svg b/assets/icons/switch_off.svg
new file mode 100644
index 0000000..0615df3
--- /dev/null
+++ b/assets/icons/switch_off.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/icons/switch_on.svg b/assets/icons/switch_on.svg
new file mode 100644
index 0000000..d3b24ed
--- /dev/null
+++ b/assets/icons/switch_on.svg
@@ -0,0 +1,4 @@
+
diff --git a/assets/icons/tap_run_icon.svg b/assets/icons/tap_run_icon.svg
new file mode 100644
index 0000000..3518ace
--- /dev/null
+++ b/assets/icons/tap_run_icon.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/icons/thumb_down.svg b/assets/icons/thumb_down.svg
new file mode 100644
index 0000000..4d22f00
--- /dev/null
+++ b/assets/icons/thumb_down.svg
@@ -0,0 +1,10 @@
+
diff --git a/assets/icons/thumb_up.svg b/assets/icons/thumb_up.svg
new file mode 100644
index 0000000..5670b79
--- /dev/null
+++ b/assets/icons/thumb_up.svg
@@ -0,0 +1,10 @@
+
diff --git a/assets/icons/update_icon.svg b/assets/icons/update_icon.svg
new file mode 100644
index 0000000..cf3e305
--- /dev/null
+++ b/assets/icons/update_icon.svg
@@ -0,0 +1,3 @@
+
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
index 0e5c500..40f2b75 100644
--- a/ios/Runner.xcodeproj/project.pbxproj
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -10,12 +10,12 @@
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 */; };
- 611C662010675536F855E5CA /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 490AAF90B8FBFCC5BA996845 /* Pods_RunnerTests.framework */; };
74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; };
+ 964EC64D4BABF3375BEBF6DE /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FB51EC18BE9E4FD7A688D262 /* Pods_RunnerTests.framework */; };
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 */; };
- D31283674D2826D7EF8E56BC /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 25B37F5982CD6994FABA2CC1 /* Pods_Runner.framework */; };
+ CE9CA504D8FF2965F977B16B /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 274C82CD6955A1499B0B1ECC /* Pods_Runner.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -42,24 +42,20 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
- 01BAAF935356ECBDD35AF0DB /* Pods-RunnerTests.debug-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-prod.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-prod.xcconfig"; sourceTree = ""; };
- 12AD49A621BEBB053FD06115 /* Pods-Runner.release-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-prod.xcconfig"; sourceTree = ""; };
+ 064BE0B8B723A6E30728B215 /* Pods-RunnerTests.release-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-prod.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-prod.xcconfig"; sourceTree = ""; };
+ 0D60D6C4BBD804473BD9E4A0 /* Pods-RunnerTests.profile-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-prod.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-prod.xcconfig"; sourceTree = ""; };
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 = ""; };
- 1F99043C7AC9BDABD8A4D41A /* Pods-Runner.profile-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-dev.xcconfig"; sourceTree = ""; };
- 210827A693936E5201C5E75C /* Pods-RunnerTests.profile-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-dev.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-dev.xcconfig"; sourceTree = ""; };
- 238CAAD9FFF9A0C9ED3CFAB2 /* Pods-RunnerTests.profile-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-prod.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-prod.xcconfig"; sourceTree = ""; };
- 25B37F5982CD6994FABA2CC1 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ 2688A8D4C03F1C4585B3EFE2 /* Pods-Runner.release-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-dev.xcconfig"; sourceTree = ""; };
+ 274C82CD6955A1499B0B1ECC /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
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 = ""; };
- 444D77D28A8CDF32047CD0AF /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; };
- 490AAF90B8FBFCC5BA996845 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 5DE3E6D1EADE3D3859FC1B69 /* Pods-Runner.debug-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-dev.xcconfig"; sourceTree = ""; };
+ 4F6A2F89436864C7EE769652 /* Pods-RunnerTests.profile-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile-dev.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile-dev.xcconfig"; sourceTree = ""; };
+ 54B9D4926B53AAFC49A54F19 /* Pods-Runner.release-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-prod.xcconfig"; 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 = ""; };
- 949637473C534E1F68B19CC0 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.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; };
@@ -67,16 +63,14 @@
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 = ""; };
- 9B82456986D7FA25420A224F /* Pods-Runner.debug-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-prod.xcconfig"; sourceTree = ""; };
- A3D4DF5D9888DAC25E2380AA /* Pods-RunnerTests.release-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-dev.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-dev.xcconfig"; sourceTree = ""; };
- AAC9129FD50E64509AD1B9AF /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; };
- BFD4DDED98208034B60B5311 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; };
- C41134CD2FDFC1A2BDF49283 /* Pods-Runner.release-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release-dev.xcconfig"; sourceTree = ""; };
- C5DBBF9417E4F8A9A08DFF02 /* Pods-RunnerTests.release-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-prod.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-prod.xcconfig"; sourceTree = ""; };
- D0F6245A5BF345FCC425515C /* Pods-Runner.profile-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-prod.xcconfig"; sourceTree = ""; };
- DFB6BB492A265F2BF6FDC8C0 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; };
- EE971EFEA60AEDFDB361D9A3 /* Pods-RunnerTests.debug-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-dev.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-dev.xcconfig"; sourceTree = ""; };
- F323D632CA976B68DDB0E669 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; };
+ 9D1B204BC7CD29434FE9D537 /* Pods-Runner.profile-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-dev.xcconfig"; sourceTree = ""; };
+ C33EAABFBF3F560A8EFB0BC0 /* Pods-RunnerTests.release-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release-dev.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release-dev.xcconfig"; sourceTree = ""; };
+ E0A467016A4C6B17ECA05534 /* Pods-Runner.profile-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile-prod.xcconfig"; sourceTree = ""; };
+ E2512B7B8C737577EB9DB570 /* Pods-RunnerTests.debug-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-dev.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-dev.xcconfig"; sourceTree = ""; };
+ F5E8A17F8AB7D50983179FD3 /* Pods-Runner.debug-dev.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-dev.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-dev.xcconfig"; sourceTree = ""; };
+ FA2359C69B2F150BE9833D5A /* Pods-RunnerTests.debug-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug-prod.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug-prod.xcconfig"; sourceTree = ""; };
+ FB51EC18BE9E4FD7A688D262 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ FC3EFA91747319965EF91609 /* Pods-Runner.debug-prod.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug-prod.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug-prod.xcconfig"; sourceTree = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -84,7 +78,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- D31283674D2826D7EF8E56BC /* Pods_Runner.framework in Frameworks */,
+ CE9CA504D8FF2965F977B16B /* Pods_Runner.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -92,7 +86,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 611C662010675536F855E5CA /* Pods_RunnerTests.framework in Frameworks */,
+ 964EC64D4BABF3375BEBF6DE /* Pods_RunnerTests.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -102,24 +96,18 @@
2F70EB4341A83C900EB253DC /* Pods */ = {
isa = PBXGroup;
children = (
- BFD4DDED98208034B60B5311 /* Pods-Runner.debug.xcconfig */,
- 949637473C534E1F68B19CC0 /* Pods-Runner.release.xcconfig */,
- 444D77D28A8CDF32047CD0AF /* Pods-Runner.profile.xcconfig */,
- DFB6BB492A265F2BF6FDC8C0 /* Pods-RunnerTests.debug.xcconfig */,
- F323D632CA976B68DDB0E669 /* Pods-RunnerTests.release.xcconfig */,
- AAC9129FD50E64509AD1B9AF /* Pods-RunnerTests.profile.xcconfig */,
- 9B82456986D7FA25420A224F /* Pods-Runner.debug-prod.xcconfig */,
- 5DE3E6D1EADE3D3859FC1B69 /* Pods-Runner.debug-dev.xcconfig */,
- 12AD49A621BEBB053FD06115 /* Pods-Runner.release-prod.xcconfig */,
- C41134CD2FDFC1A2BDF49283 /* Pods-Runner.release-dev.xcconfig */,
- D0F6245A5BF345FCC425515C /* Pods-Runner.profile-prod.xcconfig */,
- 1F99043C7AC9BDABD8A4D41A /* Pods-Runner.profile-dev.xcconfig */,
- 01BAAF935356ECBDD35AF0DB /* Pods-RunnerTests.debug-prod.xcconfig */,
- EE971EFEA60AEDFDB361D9A3 /* Pods-RunnerTests.debug-dev.xcconfig */,
- C5DBBF9417E4F8A9A08DFF02 /* Pods-RunnerTests.release-prod.xcconfig */,
- A3D4DF5D9888DAC25E2380AA /* Pods-RunnerTests.release-dev.xcconfig */,
- 238CAAD9FFF9A0C9ED3CFAB2 /* Pods-RunnerTests.profile-prod.xcconfig */,
- 210827A693936E5201C5E75C /* Pods-RunnerTests.profile-dev.xcconfig */,
+ FC3EFA91747319965EF91609 /* Pods-Runner.debug-prod.xcconfig */,
+ F5E8A17F8AB7D50983179FD3 /* Pods-Runner.debug-dev.xcconfig */,
+ 54B9D4926B53AAFC49A54F19 /* Pods-Runner.release-prod.xcconfig */,
+ 2688A8D4C03F1C4585B3EFE2 /* Pods-Runner.release-dev.xcconfig */,
+ E0A467016A4C6B17ECA05534 /* Pods-Runner.profile-prod.xcconfig */,
+ 9D1B204BC7CD29434FE9D537 /* Pods-Runner.profile-dev.xcconfig */,
+ FA2359C69B2F150BE9833D5A /* Pods-RunnerTests.debug-prod.xcconfig */,
+ E2512B7B8C737577EB9DB570 /* Pods-RunnerTests.debug-dev.xcconfig */,
+ 064BE0B8B723A6E30728B215 /* Pods-RunnerTests.release-prod.xcconfig */,
+ C33EAABFBF3F560A8EFB0BC0 /* Pods-RunnerTests.release-dev.xcconfig */,
+ 0D60D6C4BBD804473BD9E4A0 /* Pods-RunnerTests.profile-prod.xcconfig */,
+ 4F6A2F89436864C7EE769652 /* Pods-RunnerTests.profile-dev.xcconfig */,
);
path = Pods;
sourceTree = "";
@@ -132,11 +120,11 @@
path = RunnerTests;
sourceTree = "";
};
- 876D3217A8BBDAF41961161F /* Frameworks */ = {
+ 61B46FA3FB0932D29E3C6E47 /* Frameworks */ = {
isa = PBXGroup;
children = (
- 25B37F5982CD6994FABA2CC1 /* Pods_Runner.framework */,
- 490AAF90B8FBFCC5BA996845 /* Pods_RunnerTests.framework */,
+ 274C82CD6955A1499B0B1ECC /* Pods_Runner.framework */,
+ FB51EC18BE9E4FD7A688D262 /* Pods_RunnerTests.framework */,
);
name = Frameworks;
sourceTree = "";
@@ -160,7 +148,7 @@
97C146EF1CF9000F007C117D /* Products */,
331C8082294A63A400263BE5 /* RunnerTests */,
2F70EB4341A83C900EB253DC /* Pods */,
- 876D3217A8BBDAF41961161F /* Frameworks */,
+ 61B46FA3FB0932D29E3C6E47 /* Frameworks */,
);
sourceTree = "";
};
@@ -195,7 +183,7 @@
isa = PBXNativeTarget;
buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
buildPhases = (
- 3B971DE531245D7FD2921C30 /* [CP] Check Pods Manifest.lock */,
+ 73698F4EABFF3F9B7ADF4220 /* [CP] Check Pods Manifest.lock */,
331C807D294A63A400263BE5 /* Sources */,
331C807F294A63A400263BE5 /* Resources */,
C2B33A7265AF659D80692473 /* Frameworks */,
@@ -214,7 +202,7 @@
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
- 3DC878D0674AA34AEC9695FB /* [CP] Check Pods Manifest.lock */,
+ BF71A0E0099ADA10FE9B580A /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */,
B07E4A152C9B8EA4001F6910 /* copy GoogleService.plist file to the correct location */,
97C146EA1CF9000F007C117D /* Sources */,
@@ -222,9 +210,9 @@
97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
- 315A05630CF83C532DBBCBF2 /* [CP] Embed Pods Frameworks */,
- 3724F7A126D8469D5B04D144 /* [CP] Copy Pods Resources */,
4768286A3BADB12BBB8C6996 /* FlutterFire: "flutterfire upload-crashlytics-symbols" */,
+ 6CF71F42A45B39E9945C8410 /* [CP] Embed Pods Frameworks */,
+ 14DF593CA13D27D3781140F6 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
@@ -296,24 +284,7 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
- 315A05630CF83C532DBBCBF2 /* [CP] Embed Pods Frameworks */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
- );
- name = "[CP] Embed Pods Frameworks";
- outputFileListPaths = (
- "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
- showEnvVarsInLog = 0;
- };
- 3724F7A126D8469D5B04D144 /* [CP] Copy Pods Resources */ = {
+ 14DF593CA13D27D3781140F6 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -346,7 +317,42 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
};
- 3B971DE531245D7FD2921C30 /* [CP] Check Pods Manifest.lock */ = {
+ 4768286A3BADB12BBB8C6996 /* FlutterFire: "flutterfire upload-crashlytics-symbols" */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ );
+ name = "FlutterFire: \"flutterfire upload-crashlytics-symbols\"";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\n#!/bin/bash\nPATH=${PATH}:$FLUTTER_ROOT/bin:$HOME/.pub-cache/bin\nflutterfire upload-crashlytics-symbols --upload-symbols-script-path=$PODS_ROOT/FirebaseCrashlytics/upload-symbols --platform=ios --apple-project-path=${SRCROOT} --env-platform-name=${PLATFORM_NAME} --env-configuration=${CONFIGURATION} --env-project-dir=${PROJECT_DIR} --env-built-products-dir=${BUILT_PRODUCTS_DIR} --env-dwarf-dsym-folder-path=${DWARF_DSYM_FOLDER_PATH} --env-dwarf-dsym-file-name=${DWARF_DSYM_FILE_NAME} --env-infoplist-path=${INFOPLIST_PATH} --default-config=default\n";
+ };
+ 6CF71F42A45B39E9945C8410 /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputFileListPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ 73698F4EABFF3F9B7ADF4220 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
@@ -368,46 +374,6 @@
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
- 3DC878D0674AA34AEC9695FB /* [CP] Check Pods Manifest.lock */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- );
- inputPaths = (
- "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
- "${PODS_ROOT}/Manifest.lock",
- );
- name = "[CP] Check Pods Manifest.lock";
- outputFileListPaths = (
- );
- outputPaths = (
- "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
- showEnvVarsInLog = 0;
- };
- 4768286A3BADB12BBB8C6996 /* FlutterFire: "flutterfire upload-crashlytics-symbols" */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputFileListPaths = (
- );
- inputPaths = (
- );
- name = "FlutterFire: \"flutterfire upload-crashlytics-symbols\"";
- outputFileListPaths = (
- );
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "\n#!/bin/bash\nPATH=${PATH}:$FLUTTER_ROOT/bin:$HOME/.pub-cache/bin\nflutterfire upload-crashlytics-symbols --upload-symbols-script-path=$PODS_ROOT/FirebaseCrashlytics/upload-symbols --platform=ios --apple-project-path=${SRCROOT} --env-platform-name=${PLATFORM_NAME} --env-configuration=${CONFIGURATION} --env-project-dir=${PROJECT_DIR} --env-built-products-dir=${BUILT_PRODUCTS_DIR} --env-dwarf-dsym-folder-path=${DWARF_DSYM_FOLDER_PATH} --env-dwarf-dsym-file-name=${DWARF_DSYM_FILE_NAME} --env-infoplist-path=${INFOPLIST_PATH} --default-config=default\n";
- };
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
@@ -441,6 +407,28 @@
shellPath = /bin/sh;
shellScript = "# Get a reference to the destination location for the GoogleService-Info.plist\n# This is the default location where Firebase init code expects to find GoogleServices-Info.plist file.\nPLIST_DESTINATION=${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app\n# We have named our Build Configurations as Debug-dev, Debug-prod etc.\n# Here, dev and prod are the scheme names. This kind of naming is required by Flutter for flavors to work.\n# We are using the $CONFIGURATION variable available in the XCode build environment to get the build configuration.\nif [ \"${CONFIGURATION}\" == \"Debug-prod\" ] || [ \"${CONFIGURATION}\" == \"Release-prod\" ] || [ \"${CONFIGURATION}\" == \"Profile-prod\" ] || [ \"${CONFIGURATION}\" == \"Release\" ]; then\ncp \"${PROJECT_DIR}/config/prod/GoogleService-Info.plist\" \"${PLIST_DESTINATION}/GoogleService-Info.plist\"\necho \"Production plist copied\"\nelif [ \"${CONFIGURATION}\" == \"Debug-dev\" ] || [ \"${CONFIGURATION}\" == \"Release-dev\" ] || [ \"${CONFIGURATION}\" == \"Profile-dev\" ] || [ \"${CONFIGURATION}\" == \"Debug\" ]; then\ncp \"${PROJECT_DIR}/config/dev/GoogleService-Info.plist\" \"${PLIST_DESTINATION}/GoogleService-Info.plist\"\necho \"Development plist copied\"\nfi\n";
};
+ BF71A0E0099ADA10FE9B580A /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputFileListPaths = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputFileListPaths = (
+ );
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -575,7 +563,7 @@
};
331C8088294A63A400263BE5 /* Debug-prod */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = 01BAAF935356ECBDD35AF0DB /* Pods-RunnerTests.debug-prod.xcconfig */;
+ baseConfigurationReference = FA2359C69B2F150BE9833D5A /* Pods-RunnerTests.debug-prod.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@@ -593,7 +581,7 @@
};
331C8089294A63A400263BE5 /* Release-prod */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = C5DBBF9417E4F8A9A08DFF02 /* Pods-RunnerTests.release-prod.xcconfig */;
+ baseConfigurationReference = 064BE0B8B723A6E30728B215 /* Pods-RunnerTests.release-prod.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@@ -609,7 +597,7 @@
};
331C808A294A63A400263BE5 /* Profile-prod */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = 238CAAD9FFF9A0C9ED3CFAB2 /* Pods-RunnerTests.profile-prod.xcconfig */;
+ baseConfigurationReference = 0D60D6C4BBD804473BD9E4A0 /* Pods-RunnerTests.profile-prod.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@@ -885,7 +873,7 @@
};
B07E4A0E2C9B8C45001F6910 /* Debug-dev */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = EE971EFEA60AEDFDB361D9A3 /* Pods-RunnerTests.debug-dev.xcconfig */;
+ baseConfigurationReference = E2512B7B8C737577EB9DB570 /* Pods-RunnerTests.debug-dev.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@@ -987,7 +975,7 @@
};
B07E4A112C9B8C52001F6910 /* Release-dev */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = A3D4DF5D9888DAC25E2380AA /* Pods-RunnerTests.release-dev.xcconfig */;
+ baseConfigurationReference = C33EAABFBF3F560A8EFB0BC0 /* Pods-RunnerTests.release-dev.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@@ -1085,7 +1073,7 @@
};
B07E4A142C9B8C5C001F6910 /* Profile-dev */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = 210827A693936E5201C5E75C /* Pods-RunnerTests.profile-dev.xcconfig */;
+ baseConfigurationReference = 4F6A2F89436864C7EE769652 /* Pods-RunnerTests.profile-dev.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
diff --git a/lib/features/app_layout/bloc/home_cubit.dart b/lib/features/app_layout/bloc/home_cubit.dart
index 625bab0..9e7b353 100644
--- a/lib/features/app_layout/bloc/home_cubit.dart
+++ b/lib/features/app_layout/bloc/home_cubit.dart
@@ -34,7 +34,7 @@ part 'home_state.dart';
class HomeCubit extends Cubit {
HomeCubit._() : super(HomeInitial()) {
- checkIfNotificationPermissionGranted();
+ // checkIfNotificationPermissionGranted();
fetchUserInfo();
if (selectedSpace == null) {
fetchUnitsByUserId();
@@ -55,7 +55,7 @@ class HomeCubit extends Cubit {
Future fetchUserInfo() async {
try {
- var uuid = await const FlutterSecureStorage().read(key: UserModel.userUuidKey);
+ var uuid=await const FlutterSecureStorage().read(key: UserModel.userUuidKey);
user = await ProfileApi().fetchUserInfo(uuid);
emit(HomeUserInfoLoaded(user!)); // Emit state after fetching user info
} catch (e) {
@@ -76,9 +76,12 @@ class HomeCubit extends Cubit {
selectedSpace = null;
selectedRoom = null;
pageIndex = 0;
- OneSignal.User.pushSubscription.removeObserver((stateChanges) => oneSignalSubscriptionObserver);
- OneSignal.Notifications.removePermissionObserver((permission) => oneSignalPermissionObserver);
- OneSignal.Notifications.removeClickListener((event) => oneSignalClickListenerObserver);
+ // OneSignal.User.pushSubscription
+ // .removeObserver((stateChanges) => oneSignalSubscriptionObserver);
+ // OneSignal.Notifications.removePermissionObserver(
+ // (permission) => oneSignalPermissionObserver);
+ // OneSignal.Notifications.removeClickListener(
+ // (event) => oneSignalClickListenerObserver);
return super.close();
}
@@ -96,9 +99,9 @@ class HomeCubit extends Cubit {
var duration = const Duration(milliseconds: 300);
- void oneSignalPermissionObserver;
- void oneSignalSubscriptionObserver;
- void oneSignalClickListenerObserver;
+ // void oneSignalPermissionObserver;
+ // void oneSignalSubscriptionObserver;
+ // void oneSignalClickListenerObserver;
// selectSpace(SpaceModel space) async {
// selectedSpace = space;
@@ -120,31 +123,36 @@ class HomeCubit extends Cubit {
return;
}
- var userUuid = await const FlutterSecureStorage().read(key: UserModel.userUuidKey) ?? '';
+ var userUuid =
+ await const FlutterSecureStorage().read(key: UserModel.userUuidKey) ??
+ '';
if (userUuid.isNotEmpty) {
await OneSignal.login(userUuid);
}
//Enable push notifications
await OneSignal.User.pushSubscription.optIn();
- //this function will be called once a user is subscribed
- oneSignalSubscriptionObserver = OneSignal.User.pushSubscription.addObserver((state) async {
- if (state.current.optedIn) {
- await _sendSubscriptionId();
- }
- });
+ // //this function will be called once a user is subscribed
+ // oneSignalSubscriptionObserver =
+ // OneSignal.User.pushSubscription.addObserver((state) async {
+ // if (state.current.optedIn) {
+ // await _sendSubscriptionId();
+ // }
+ // });
- // Send the player id when a user allows notifications
- oneSignalPermissionObserver = OneSignal.Notifications.addPermissionObserver((state) async {
- await _sendSubscriptionId();
- });
+ // // Send the player id when a user allows notifications
+ // oneSignalPermissionObserver =
+ // OneSignal.Notifications.addPermissionObserver((state) async {
+ // await _sendSubscriptionId();
+ // });
- //check if the player id is sent, if not send it again
- await _sendSubscriptionId();
+ // //check if the player id is sent, if not send it again
+ // await _sendSubscriptionId();
- oneSignalClickListenerObserver = OneSignal.Notifications.addClickListener((event) async {
- //Once the user clicks on the notification
- });
+ // oneSignalClickListenerObserver =
+ // OneSignal.Notifications.addClickListener((event) async {
+ // //Once the user clicks on the notification
+ // });
} catch (err) {
debugPrint("******* Error");
debugPrint(err.toString());
@@ -213,7 +221,8 @@ class HomeCubit extends Cubit {
//////////////////////////////////////// API ////////////////////////////////////////
generateInvitation(SpaceModel unit) async {
try {
- final invitationCode = await SpacesAPI.generateInvitationCode(unit.id, unit.community.uuid);
+ final invitationCode =
+ await SpacesAPI.generateInvitationCode(unit.id, unit.community.uuid);
if (invitationCode.isNotEmpty) {
Share.share('The invitation code is $invitationCode');
CustomSnackBar.displaySnackBar(
@@ -229,7 +238,9 @@ class HomeCubit extends Cubit {
Future joinAUnit(String code) async {
try {
- var userUuid = await const FlutterSecureStorage().read(key: UserModel.userUuidKey) ?? '';
+ var userUuid =
+ await const FlutterSecureStorage().read(key: UserModel.userUuidKey) ??
+ '';
Map body = {'inviteCode': code};
final success = await SpacesAPI.joinUnit(userUuid, body);
@@ -265,7 +276,8 @@ class HomeCubit extends Cubit {
fetchRoomsByUnitId(SpaceModel space) async {
emitSafe(GetSpaceRoomsLoading());
try {
- space.subspaces = await SpacesAPI.getSubSpaceBySpaceId(space.community.uuid, space.id);
+ space.subspaces =
+ await SpacesAPI.getSubSpaceBySpaceId(space.community.uuid, space.id);
} catch (failure) {
emitSafe(GetSpaceRoomsError(failure.toString()));
return;
@@ -347,7 +359,8 @@ class HomeCubit extends Cubit {
size: 32,
),
style: ButtonStyle(
- foregroundColor: WidgetStateProperty.all(ColorsManager.textPrimaryColor),
+ foregroundColor:
+ WidgetStateProperty.all(ColorsManager.textPrimaryColor),
),
onPressed: () {
Navigator.pushNamed(
@@ -368,7 +381,8 @@ class HomeCubit extends Cubit {
NavigationService.navigatorKey.currentContext!
.read()
.add(const SmartSceneClearEvent());
- BlocProvider.of(NavigationService.navigatorKey.currentState!.context)
+ BlocProvider.of(
+ NavigationService.navigatorKey.currentState!.context)
.add(ResetEffectivePeriod());
NavigationService.navigatorKey.currentContext!
.read()
@@ -381,7 +395,8 @@ class HomeCubit extends Cubit {
size: 28,
),
style: ButtonStyle(
- foregroundColor: WidgetStateProperty.all(ColorsManager.textPrimaryColor),
+ foregroundColor:
+ WidgetStateProperty.all(ColorsManager.textPrimaryColor),
),
onPressed: () {},
),
@@ -414,7 +429,8 @@ class HomeCubit extends Cubit {
};
static var bottomNavItems = [
- defaultBottomNavBarItem(icon: Assets.assetsIconsDashboard, label: 'Dashboard'),
+ defaultBottomNavBarItem(
+ icon: Assets.assetsIconsDashboard, label: 'Dashboard'),
// defaultBottomNavBarItem(icon: Assets.assetsIconslayout, label: 'Layout'),
defaultBottomNavBarItem(icon: Assets.assetsIconsDevices, label: 'Devices'),
defaultBottomNavBarItem(icon: Assets.assetsIconsRoutines, label: 'Routine'),
@@ -440,7 +456,8 @@ class HomeCubit extends Cubit {
void updateDevice(String deviceId) async {
try {
- final response = await DevicesAPI.firmwareDevice(deviceId: deviceId, firmwareVersion: '0');
+ final response = await DevicesAPI.firmwareDevice(
+ deviceId: deviceId, firmwareVersion: '0');
if (response['success'] ?? false) {
CustomSnackBar.displaySnackBar('No updates available');
}
@@ -448,7 +465,8 @@ class HomeCubit extends Cubit {
}
}
-BottomNavigationBarItem defaultBottomNavBarItem({required String icon, required String label}) {
+BottomNavigationBarItem defaultBottomNavBarItem(
+ {required String icon, required String label}) {
return BottomNavigationBarItem(
icon: SvgPicture.asset(icon),
activeIcon: SvgPicture.asset(
diff --git a/lib/features/auth/view/widgets/login_user_agreement.dart b/lib/features/auth/view/widgets/login_user_agreement.dart
index a4e7ee8..978ccad 100644
--- a/lib/features/auth/view/widgets/login_user_agreement.dart
+++ b/lib/features/auth/view/widgets/login_user_agreement.dart
@@ -2,6 +2,7 @@ import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/auth/bloc/auth_cubit.dart';
+import 'package:syncrow_app/features/shared_widgets/text_widgets/body_large.dart';
import 'package:syncrow_app/navigation/routing_constants.dart';
import 'package:syncrow_app/utils/context_extension.dart';
diff --git a/lib/features/devices/bloc/6_scene_switch_bloc/6_scene_bloc.dart b/lib/features/devices/bloc/6_scene_switch_bloc/6_scene_bloc.dart
new file mode 100644
index 0000000..48fe85f
--- /dev/null
+++ b/lib/features/devices/bloc/6_scene_switch_bloc/6_scene_bloc.dart
@@ -0,0 +1,394 @@
+import 'dart:async';
+import 'package:flutter/material.dart';
+import 'package:flutter_bloc/flutter_bloc.dart';
+import 'package:syncrow_app/features/app_layout/bloc/home_cubit.dart';
+import 'package:syncrow_app/features/devices/bloc/6_scene_switch_bloc/6_scene_event.dart';
+import 'package:syncrow_app/features/devices/bloc/6_scene_switch_bloc/6_scene_state.dart';
+import 'package:syncrow_app/features/devices/model/device_control_model.dart';
+import 'package:syncrow_app/features/devices/model/device_model.dart';
+import 'package:syncrow_app/features/devices/model/device_report_model.dart';
+import 'package:syncrow_app/features/devices/model/device_info_model.dart';
+import 'package:syncrow_app/features/devices/model/six_scene_model.dart';
+import 'package:syncrow_app/features/devices/model/status_model.dart';
+import 'package:syncrow_app/features/devices/model/subspace_model.dart';
+import 'package:syncrow_app/features/scene/model/scenes_model.dart';
+import 'package:syncrow_app/services/api/devices_api.dart';
+import 'package:syncrow_app/services/api/home_management_api.dart';
+import 'package:syncrow_app/services/api/scene_api.dart';
+import 'package:syncrow_app/services/api/spaces_api.dart';
+import 'package:syncrow_app/utils/helpers/snack_bar.dart';
+
+class SixSceneBloc extends Bloc {
+ final String sixSceneId;
+ SixSceneBloc({
+ required this.sixSceneId,
+ }) : super(const SixSceneState()) {
+ on(_fetchDeviceStatus);
+ on(changeSwitchStatus);
+ on(_onLoadScenes);
+ on(searchScene);
+ on(_onSaveSelection);
+ on(_onOptionSelected);
+ on(_fetchFourSceneSwitches);
+ on(assignScene);
+ on(getSceneByName);
+ on(_selectScene);
+ on(fetchDeviceInfo);
+ on(_assignDevice);
+ on(_fetchRoomsAndDevices);
+ on(deleteDevice);
+ on(_toggleLowBattery);
+ on(_unAssignScene);
+ }
+
+ final TextEditingController nameController =
+ TextEditingController(text: deviceName);
+ bool isSaving = false;
+ bool editName = false;
+ final FocusNode focusNode = FocusNode();
+ bool closingReminder = false;
+ bool waterAlarm = false;
+ static String deviceName = '';
+
+ SixSceneModel deviceStatus = SixSceneModel(
+ scene_1: '',
+ scene_2: '',
+ scene_3: '',
+ scene_4: '',
+ scene_5: '',
+ scene_6: '',
+ scene_id_group_id: '',
+ switch_backlight: false);
+
+ DeviceInfoModel deviceInfo = DeviceInfoModel(
+ activeTime: 0,
+ category: "",
+ categoryName: "",
+ createTime: 0,
+ gatewayId: "",
+ icon: "",
+ ip: "",
+ lat: "",
+ localKey: "",
+ lon: "",
+ model: "",
+ name: "",
+ nodeId: "",
+ online: false,
+ ownerId: "",
+ productName: "",
+ sub: false,
+ timeZone: "",
+ updateTime: 0,
+ uuid: "",
+ productUuid: "",
+ productType: "",
+ permissionType: "",
+ macAddress: "",
+ subspace: Subspace(
+ uuid: "",
+ createdAt: "",
+ updatedAt: "",
+ subspaceName: "",
+ ),
+ );
+
+ bool enableAlarm = false;
+
+ void _toggleLowBattery(
+ ToggleEnableAlarmEvent event, Emitter emit) async {
+ emit(LoadingNewSate(device: deviceStatus));
+ try {
+ enableAlarm = event.isLowBatteryEnabled;
+ emit(UpdateState(device: deviceStatus));
+ } catch (e) {
+ emit(SixSceneFailedState(errorMessage: e.toString()));
+ }
+ }
+
+ List roomsList = [];
+
+ void _fetchRoomsAndDevices(
+ FetchRoomsEvent event, Emitter emit) async {
+ try {
+ emit(SixSceneLoadingState());
+ roomsList = await SpacesAPI.getSubSpaceBySpaceId(
+ event.unit.community.uuid, event.unit.id);
+ emit(FetchRoomsState(devicesList: allDevices, roomsList: roomsList));
+ } catch (e) {
+ emit(SixSceneFailedState(errorMessage: e.toString()));
+ return;
+ }
+ }
+
+ void _assignDevice(AssignRoomEvent event, Emitter emit) async {
+ try {
+ emit(SixSceneLoadingState());
+ if (_hasSelectionChanged) {
+ await HomeManagementAPI.assignDeviceToRoom(
+ event.unit.community.uuid, event.unit.id, event.roomId, sixSceneId);
+ final devicesList = await DevicesAPI.getDevicesByRoomId(
+ communityUuid: event.unit.community.uuid,
+ spaceUuid: event.unit.id,
+ roomId: event.roomId);
+ List allDevicesIds = [];
+ allDevices.forEach((element) {
+ allDevicesIds.add(element.uuid!);
+ });
+ await HomeCubit.getInstance().fetchUnitsByUserId();
+ CustomSnackBar.displaySnackBar('Save Successfully');
+ emit(SaveSelectionSuccessState());
+ }
+ } catch (e) {
+ emit(SixSceneFailedState(errorMessage: e.toString()));
+ return;
+ }
+ }
+
+ void _unAssignScene(
+ UnAssignSceneEvent event, Emitter emit) async {
+ try {
+ emit(SixSceneLoadingState());
+ if (_hasSelectionChanged) {
+ var response = await DevicesAPI.unAssignScenesDevice(
+ deviceUuid: event.switchSceneUuid);
+ CustomSnackBar.displaySnackBar('Save Successfully');
+ emit(SaveSelectionSuccessState());
+ }
+ } catch (e) {
+ emit(SixSceneFailedState(errorMessage: e.toString()));
+ return;
+ }
+ }
+
+ deleteDevice(DeleteDeviceEvent event, Emitter emit) async {
+ try {
+ emit(SixSceneLoadingState());
+ var response = await DevicesAPI.resetDevise(devicesUuid: sixSceneId);
+ add(const SixSceneInitialInfo());
+ CustomSnackBar.displaySnackBar('Reset Successfully');
+ } catch (e) {
+ emit(SixSceneFailedState(errorMessage: e.toString()));
+ }
+ }
+
+//============================ fitch devise info and status =======================
+/////////////////////////////////////////////////////////////////////////////////////
+
+ Future fetchDeviceInfo(
+ SixSceneInitialInfo event, Emitter emit) async {
+ try {
+ emit(SixSceneLoadingState());
+ var response = await DevicesAPI.getDeviceInfo(sixSceneId);
+ deviceInfo = DeviceInfoModel.fromJson(response);
+ deviceName = deviceInfo.name;
+ emit(LoadingDeviceInfo(deviceInfo: deviceInfo));
+ } catch (e) {
+ emit(SixSceneFailedState(errorMessage: e.toString()));
+ }
+ }
+
+ void _fetchDeviceStatus(
+ SixSceneInitial event, Emitter emit) async {
+ emit(SixSceneLoadingState());
+ try {
+ var response = await DevicesAPI.getDeviceStatus(sixSceneId);
+ List statusModelList = [];
+ for (var status in response['status']) {
+ statusModelList.add(StatusModel.fromJson(status));
+ }
+ deviceStatus = SixSceneModel.fromJson(
+ statusModelList,
+ );
+ add(const SexSceneSwitchInitial());
+ emit(UpdateState(device: deviceStatus));
+ } catch (e) {
+ emit(SixSceneFailedState(errorMessage: e.toString()));
+ return;
+ }
+ }
+
+ //============================ assign Scene =======================
+/////////////////////////////////////////////////////////////////////////////////////
+
+ String selectedFormApiSceneId = '';
+
+ void getSceneByName(
+ GetSceneBySwitchName event, Emitter emit) async {
+ try {
+ // emit(SixSceneLoadingState());
+
+ final response = await DevicesAPI.getSceneBySwitchName(
+ deviceId: sixSceneId, switchName: event.switchName);
+ selectedFormApiSceneId = response['scene']['uuid'];
+ emit(SuccessState());
+
+ emit(UpdateState(device: deviceStatus));
+ } catch (e) {
+ emit(SixSceneFailedState(errorMessage: e.toString()));
+ }
+ }
+
+ String selectedSceneId = '';
+
+
+ _selectScene(SelectSceneEvent event, Emitter emit) {
+ emit(SixSceneLoadingState());
+ if (event.isSelected == false) {
+ selectedSceneId = '';
+ selectedFormApiSceneId = '';
+ emit(SceneSelectionUpdatedState(selectedSceneId: selectedSceneId));
+ } else {
+ selectedSceneId = event.selectedSceneId;
+ }
+ emit(SceneSelectionUpdatedState(selectedSceneId: selectedSceneId));
+ }
+
+ List fourScene = [];
+
+ void _fetchFourSceneSwitches(
+ SexSceneSwitchInitial event, Emitter emit) async {
+ emit(SixSceneLoadingState());
+ try {
+ var response = await DevicesAPI.getDeviceSceneInfo(sixSceneId);
+
+ Map sceneTitles = {
+ "scene_1": '',
+ "scene_2": '',
+ "scene_3": '',
+ "scene_4": '',
+ "scene_5": '',
+ "scene_6": '',
+ };
+ for (var item in response) {
+ if (item["switchName"] != null) {
+ sceneTitles[item["switchName"]] = item["scene"]["name"] ?? '';
+ }
+ }
+ SixSceneModel deviceStatus = SixSceneModel(
+ scene_1: sceneTitles["scene_1"] ?? '',
+ scene_2: sceneTitles["scene_2"] ?? '',
+ scene_3: sceneTitles["scene_3"] ?? '',
+ scene_4: sceneTitles["scene_4"] ?? '',
+ scene_5: sceneTitles["scene_5"] ?? '',
+ scene_6: sceneTitles["scene_6"] ?? '',
+ scene_id_group_id: '',
+ switch_backlight: '',
+ );
+ emit(UpdateState(device: deviceStatus));
+ } catch (e) {
+ emit(SixSceneFailedState(errorMessage: e.toString()));
+ return;
+ }
+ }
+
+ void assignScene(AssignDeviceScene event, Emitter emit) async {
+ emit(SixSceneLoadingState());
+ try {
+ if (event.sceneUuid == '') {
+ final response = await DevicesAPI.unAssignScenesDevice(
+ deviceUuid: sixSceneId, switchName: event.switchName);
+ } else {
+ final response = await DevicesAPI.postDeviceSceneInfo(
+ deviceId: sixSceneId,
+ sceneUuid: event.sceneUuid,
+ spaceUuid: event.unit!.id,
+ switchName: event.switchName);
+ }
+
+ emit(SaveSelectionSuccessState());
+ CustomSnackBar.displaySnackBar('Save Successfully');
+ } catch (e) {
+ emit(SixSceneFailedState(errorMessage: e.toString()));
+ }
+ }
+
+ DeviceReport recordGroups =
+ DeviceReport(startTime: '0', endTime: '0', data: []);
+
+ List allDevices = [];
+
+ bool switchStatus = true;
+ Future changeSwitchStatus(
+ ChangeSwitchStatusEvent event, Emitter emit) async {
+ try {
+ emit(SixSceneLoadingState());
+ switchStatus = deviceStatus.switch_backlight;
+ switchStatus = !switchStatus;
+ final response = await DevicesAPI.controlDevice(
+ DeviceControlModel(
+ deviceId: sixSceneId,
+ code: 'switch_backlight',
+ value: switchStatus),
+ sixSceneId);
+ deviceStatus.switch_backlight = switchStatus;
+
+ Future.delayed(const Duration(milliseconds: 250), () {
+ add(const SexSceneSwitchInitial());
+ });
+
+ Future.delayed(const Duration(milliseconds: 250), () {
+ emit(ChangeSwitchState(isEnable: switchStatus));
+ emit(UpdateState(device: deviceStatus));
+ });
+ } catch (_) {
+ emit(const SixSceneFailedState(errorMessage: 'Something went wrong'));
+ }
+ }
+
+ Future _onLoadScenes(
+ LoadScenes event, Emitter emit) async {
+ emit(SixSceneLoadingState());
+
+ try {
+ allScenes = await SceneApi.getScenesByUnitId(
+ event.unitId, event.unit.community.uuid,
+ showInDevice: event.showInDevice);
+
+ filteredScenes = allScenes;
+
+ emit(SceneLoaded(allScenes));
+ emit(UpdateState(device: deviceStatus));
+ } catch (e) {
+ emit(const SixSceneFailedState(errorMessage: 'Something went wrong'));
+ }
+
+ emit(SuccessState());
+ }
+
+ bool selecedScene = false;
+
+ List allScenes = [];
+ List filteredScenes = [];
+
+ void searchScene(SearchScenesEvent event, Emitter emit) {
+ emit(SixSceneLoadingState());
+ filteredScenes = event.query.isEmpty
+ ? allScenes
+ : allScenes.where((scene) {
+ final sceneName = scene.name.toLowerCase();
+ return sceneName.contains(event.query.toLowerCase());
+ }).toList();
+ emit(SearchResultsState());
+ }
+
+ String _selectedOption = '';
+ bool _hasSelectionChanged = false;
+
+ void _onOptionSelected(SelectOptionEvent event, Emitter emit) {
+ emit(SixSceneLoadingState());
+ _selectedOption = event.selectedOption;
+ _hasSelectionChanged = true;
+ emit(OptionSelectedState(
+ selectedOption: _selectedOption,
+ hasSelectionChanged: _hasSelectionChanged));
+ }
+
+ void _onSaveSelection(SaveSelectionEvent event, Emitter emit) {
+ if (_hasSelectionChanged) {
+ print('Save button clicked with selected option: $_selectedOption');
+ _hasSelectionChanged = false;
+ emit(SaveSelectionSuccessState());
+ }
+ }
+}
diff --git a/lib/features/devices/bloc/6_scene_switch_bloc/6_scene_event.dart b/lib/features/devices/bloc/6_scene_switch_bloc/6_scene_event.dart
new file mode 100644
index 0000000..0cf3437
--- /dev/null
+++ b/lib/features/devices/bloc/6_scene_switch_bloc/6_scene_event.dart
@@ -0,0 +1,177 @@
+import 'package:equatable/equatable.dart';
+import 'package:flutter/material.dart';
+import 'package:syncrow_app/features/app_layout/model/space_model.dart';
+import 'package:syncrow_app/features/devices/model/group_devices_model.dart';
+
+abstract class SixSceneEvent extends Equatable {
+ const SixSceneEvent();
+
+ @override
+ List