Compare commits
	
		
			3 Commits
		
	
	
		
			8d855867c1
			...
			91c5a2e1b6
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 91c5a2e1b6 | |||
| cb991d1574 | |||
| 75097ab6fc | 
| @@ -16,27 +16,42 @@ import 'config.dart'; | |||||||
| final imagePickerProvider = Provider((ref) => ImagePicker()); | final imagePickerProvider = Provider((ref) => ImagePicker()); | ||||||
|  |  | ||||||
| final userAgentProvider = FutureProvider<String>((ref) async { | final userAgentProvider = FutureProvider<String>((ref) async { | ||||||
|  |   // Helper function to sanitize strings for HTTP headers | ||||||
|  |   String sanitizeForHeader(String input) { | ||||||
|  |     // Remove or replace characters that are not allowed in HTTP headers | ||||||
|  |     // Keep only ASCII printable characters (32-126) and replace others with underscore | ||||||
|  |     return input.runes.map((rune) { | ||||||
|  |       if (rune >= 32 && rune <= 126) { | ||||||
|  |         return String.fromCharCode(rune); | ||||||
|  |       } else { | ||||||
|  |         return '_'; | ||||||
|  |       } | ||||||
|  |     }).join(); | ||||||
|  |   } | ||||||
|  |  | ||||||
|   final String platformInfo; |   final String platformInfo; | ||||||
|   if (kIsWeb) { |   if (kIsWeb) { | ||||||
|     final deviceInfo = await DeviceInfoPlugin().webBrowserInfo; |     final deviceInfo = await DeviceInfoPlugin().webBrowserInfo; | ||||||
|     platformInfo = 'Web; ${deviceInfo.vendor}'; |     platformInfo = 'Web; ${sanitizeForHeader(deviceInfo.vendor ?? 'Unknown')}'; | ||||||
|   } else if (Platform.isAndroid) { |   } else if (Platform.isAndroid) { | ||||||
|     final deviceInfo = await DeviceInfoPlugin().androidInfo; |     final deviceInfo = await DeviceInfoPlugin().androidInfo; | ||||||
|     platformInfo = |     platformInfo = | ||||||
|         'Android; ${deviceInfo.brand} ${deviceInfo.model}; ${deviceInfo.id}'; |         'Android; ${sanitizeForHeader(deviceInfo.brand)} ${sanitizeForHeader(deviceInfo.model)}; ${sanitizeForHeader(deviceInfo.id)}'; | ||||||
|   } else if (Platform.isIOS) { |   } else if (Platform.isIOS) { | ||||||
|     final deviceInfo = await DeviceInfoPlugin().iosInfo; |     final deviceInfo = await DeviceInfoPlugin().iosInfo; | ||||||
|     platformInfo = 'iOS; ${deviceInfo.model}; ${deviceInfo.name}'; |     platformInfo = | ||||||
|  |         'iOS; ${sanitizeForHeader(deviceInfo.model)}; ${sanitizeForHeader(deviceInfo.name)}'; | ||||||
|   } else if (Platform.isMacOS) { |   } else if (Platform.isMacOS) { | ||||||
|     final deviceInfo = await DeviceInfoPlugin().macOsInfo; |     final deviceInfo = await DeviceInfoPlugin().macOsInfo; | ||||||
|     platformInfo = 'MacOS; ${deviceInfo.model}; ${deviceInfo.hostName}'; |     platformInfo = | ||||||
|  |         'MacOS; ${sanitizeForHeader(deviceInfo.model)}; ${sanitizeForHeader(deviceInfo.hostName)}'; | ||||||
|   } else if (Platform.isWindows) { |   } else if (Platform.isWindows) { | ||||||
|     final deviceInfo = await DeviceInfoPlugin().windowsInfo; |     final deviceInfo = await DeviceInfoPlugin().windowsInfo; | ||||||
|     platformInfo = |     platformInfo = | ||||||
|         'Windows NT; ${deviceInfo.productName}; ${deviceInfo.computerName}'; |         'Windows NT; ${sanitizeForHeader(deviceInfo.productName)}; ${sanitizeForHeader(deviceInfo.computerName)}'; | ||||||
|   } else if (Platform.isLinux) { |   } else if (Platform.isLinux) { | ||||||
|     final deviceInfo = await DeviceInfoPlugin().linuxInfo; |     final deviceInfo = await DeviceInfoPlugin().linuxInfo; | ||||||
|     platformInfo = 'Linux; ${deviceInfo.prettyName}'; |     platformInfo = 'Linux; ${sanitizeForHeader(deviceInfo.prettyName)}'; | ||||||
|   } else { |   } else { | ||||||
|     platformInfo = 'Unknown'; |     platformInfo = 'Unknown'; | ||||||
|   } |   } | ||||||
|   | |||||||
| @@ -47,8 +47,9 @@ class NotificationUnreadCountNotifier | |||||||
|   void _subscribeToWebSocket() { |   void _subscribeToWebSocket() { | ||||||
|     final webSocketService = ref.read(websocketProvider); |     final webSocketService = ref.read(websocketProvider); | ||||||
|     _subscription = webSocketService.dataStream.listen((packet) { |     _subscription = webSocketService.dataStream.listen((packet) { | ||||||
|       if (packet.type == 'notifications.new') { |       if (packet.type == 'notifications.new' && packet.data != null) { | ||||||
|         _incrementCounter(); |         final notification = SnNotification.fromJson(packet.data!); | ||||||
|  |         if (notification.topic != 'messages.new') _incrementCounter(); | ||||||
|       } |       } | ||||||
|     }); |     }); | ||||||
|   } |   } | ||||||
|   | |||||||
| @@ -1,14 +1,4 @@ | |||||||
| PODS: | PODS: | ||||||
|   - AppAuth (1.7.6): |  | ||||||
|     - AppAuth/Core (= 1.7.6) |  | ||||||
|     - AppAuth/ExternalUserAgent (= 1.7.6) |  | ||||||
|   - AppAuth/Core (1.7.6) |  | ||||||
|   - AppAuth/ExternalUserAgent (1.7.6): |  | ||||||
|     - AppAuth/Core |  | ||||||
|   - AppCheckCore (11.2.0): |  | ||||||
|     - GoogleUtilities/Environment (~> 8.0) |  | ||||||
|     - GoogleUtilities/UserDefaults (~> 8.0) |  | ||||||
|     - PromisesObjC (~> 2.4) |  | ||||||
|   - bitsdojo_window_macos (0.0.1): |   - bitsdojo_window_macos (0.0.1): | ||||||
|     - FlutterMacOS |     - FlutterMacOS | ||||||
|   - connectivity_plus (0.0.1): |   - connectivity_plus (0.0.1): | ||||||
| @@ -71,20 +61,9 @@ PODS: | |||||||
|   - gal (1.0.0): |   - gal (1.0.0): | ||||||
|     - Flutter |     - Flutter | ||||||
|     - FlutterMacOS |     - FlutterMacOS | ||||||
|   - google_sign_in_ios (0.0.1): |  | ||||||
|     - AppAuth (>= 1.7.4) |  | ||||||
|     - Flutter |  | ||||||
|     - FlutterMacOS |  | ||||||
|     - GoogleSignIn (~> 8.0) |  | ||||||
|     - GTMSessionFetcher (>= 3.4.0) |  | ||||||
|   - GoogleDataTransport (10.1.0): |   - GoogleDataTransport (10.1.0): | ||||||
|     - nanopb (~> 3.30910.0) |     - nanopb (~> 3.30910.0) | ||||||
|     - PromisesObjC (~> 2.4) |     - PromisesObjC (~> 2.4) | ||||||
|   - GoogleSignIn (8.0.0): |  | ||||||
|     - AppAuth (< 2.0, >= 1.7.3) |  | ||||||
|     - AppCheckCore (~> 11.0) |  | ||||||
|     - GTMAppAuth (< 5.0, >= 4.1.1) |  | ||||||
|     - GTMSessionFetcher/Core (~> 3.3) |  | ||||||
|   - GoogleUtilities/AppDelegateSwizzler (8.1.0): |   - GoogleUtilities/AppDelegateSwizzler (8.1.0): | ||||||
|     - GoogleUtilities/Environment |     - GoogleUtilities/Environment | ||||||
|     - GoogleUtilities/Logger |     - GoogleUtilities/Logger | ||||||
| @@ -109,14 +88,6 @@ PODS: | |||||||
|   - GoogleUtilities/UserDefaults (8.1.0): |   - GoogleUtilities/UserDefaults (8.1.0): | ||||||
|     - GoogleUtilities/Logger |     - GoogleUtilities/Logger | ||||||
|     - GoogleUtilities/Privacy |     - GoogleUtilities/Privacy | ||||||
|   - GTMAppAuth (4.1.1): |  | ||||||
|     - AppAuth/Core (~> 1.7) |  | ||||||
|     - GTMSessionFetcher/Core (< 4.0, >= 3.3) |  | ||||||
|   - GTMSessionFetcher (3.5.0): |  | ||||||
|     - GTMSessionFetcher/Full (= 3.5.0) |  | ||||||
|   - GTMSessionFetcher/Core (3.5.0) |  | ||||||
|   - GTMSessionFetcher/Full (3.5.0): |  | ||||||
|     - GTMSessionFetcher/Core |  | ||||||
|   - irondash_engine_context (0.0.1): |   - irondash_engine_context (0.0.1): | ||||||
|     - FlutterMacOS |     - FlutterMacOS | ||||||
|   - livekit_client (2.4.8): |   - livekit_client (2.4.8): | ||||||
| @@ -200,7 +171,6 @@ DEPENDENCIES: | |||||||
|   - flutter_webrtc (from `Flutter/ephemeral/.symlinks/plugins/flutter_webrtc/macos`) |   - flutter_webrtc (from `Flutter/ephemeral/.symlinks/plugins/flutter_webrtc/macos`) | ||||||
|   - FlutterMacOS (from `Flutter/ephemeral`) |   - FlutterMacOS (from `Flutter/ephemeral`) | ||||||
|   - gal (from `Flutter/ephemeral/.symlinks/plugins/gal/darwin`) |   - gal (from `Flutter/ephemeral/.symlinks/plugins/gal/darwin`) | ||||||
|   - google_sign_in_ios (from `Flutter/ephemeral/.symlinks/plugins/google_sign_in_ios/darwin`) |  | ||||||
|   - irondash_engine_context (from `Flutter/ephemeral/.symlinks/plugins/irondash_engine_context/macos`) |   - irondash_engine_context (from `Flutter/ephemeral/.symlinks/plugins/irondash_engine_context/macos`) | ||||||
|   - livekit_client (from `Flutter/ephemeral/.symlinks/plugins/livekit_client/macos`) |   - livekit_client (from `Flutter/ephemeral/.symlinks/plugins/livekit_client/macos`) | ||||||
|   - media_kit_libs_macos_video (from `Flutter/ephemeral/.symlinks/plugins/media_kit_libs_macos_video/macos`) |   - media_kit_libs_macos_video (from `Flutter/ephemeral/.symlinks/plugins/media_kit_libs_macos_video/macos`) | ||||||
| @@ -220,18 +190,13 @@ DEPENDENCIES: | |||||||
|  |  | ||||||
| SPEC REPOS: | SPEC REPOS: | ||||||
|   trunk: |   trunk: | ||||||
|     - AppAuth |  | ||||||
|     - AppCheckCore |  | ||||||
|     - Firebase |     - Firebase | ||||||
|     - FirebaseCore |     - FirebaseCore | ||||||
|     - FirebaseCoreInternal |     - FirebaseCoreInternal | ||||||
|     - FirebaseInstallations |     - FirebaseInstallations | ||||||
|     - FirebaseMessaging |     - FirebaseMessaging | ||||||
|     - GoogleDataTransport |     - GoogleDataTransport | ||||||
|     - GoogleSignIn |  | ||||||
|     - GoogleUtilities |     - GoogleUtilities | ||||||
|     - GTMAppAuth |  | ||||||
|     - GTMSessionFetcher |  | ||||||
|     - nanopb |     - nanopb | ||||||
|     - OrderedSet |     - OrderedSet | ||||||
|     - PromisesObjC |     - PromisesObjC | ||||||
| @@ -270,8 +235,6 @@ EXTERNAL SOURCES: | |||||||
|     :path: Flutter/ephemeral |     :path: Flutter/ephemeral | ||||||
|   gal: |   gal: | ||||||
|     :path: Flutter/ephemeral/.symlinks/plugins/gal/darwin |     :path: Flutter/ephemeral/.symlinks/plugins/gal/darwin | ||||||
|   google_sign_in_ios: |  | ||||||
|     :path: Flutter/ephemeral/.symlinks/plugins/google_sign_in_ios/darwin |  | ||||||
|   irondash_engine_context: |   irondash_engine_context: | ||||||
|     :path: Flutter/ephemeral/.symlinks/plugins/irondash_engine_context/macos |     :path: Flutter/ephemeral/.symlinks/plugins/irondash_engine_context/macos | ||||||
|   livekit_client: |   livekit_client: | ||||||
| @@ -306,8 +269,6 @@ EXTERNAL SOURCES: | |||||||
|     :path: Flutter/ephemeral/.symlinks/plugins/wakelock_plus/macos |     :path: Flutter/ephemeral/.symlinks/plugins/wakelock_plus/macos | ||||||
|  |  | ||||||
| SPEC CHECKSUMS: | SPEC CHECKSUMS: | ||||||
|   AppAuth: d4f13a8fe0baf391b2108511793e4b479691fb73 |  | ||||||
|   AppCheckCore: cc8fd0a3a230ddd401f326489c99990b013f0c4f |  | ||||||
|   bitsdojo_window_macos: 7959fb0ca65a3ccda30095c181ecb856fae48ea9 |   bitsdojo_window_macos: 7959fb0ca65a3ccda30095c181ecb856fae48ea9 | ||||||
|   connectivity_plus: 4adf20a405e25b42b9c9f87feff8f4b6fde18a4e |   connectivity_plus: 4adf20a405e25b42b9c9f87feff8f4b6fde18a4e | ||||||
|   croppy: d9bfc8c02f3cd1851f669a421df298a474b78f43 |   croppy: d9bfc8c02f3cd1851f669a421df298a474b78f43 | ||||||
| @@ -328,12 +289,8 @@ SPEC CHECKSUMS: | |||||||
|   flutter_webrtc: a7eeb54859e672228c28f4b48b1fb61561976ea3 |   flutter_webrtc: a7eeb54859e672228c28f4b48b1fb61561976ea3 | ||||||
|   FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 |   FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 | ||||||
|   gal: baecd024ebfd13c441269ca7404792a7152fde89 |   gal: baecd024ebfd13c441269ca7404792a7152fde89 | ||||||
|   google_sign_in_ios: b48bb9af78576358a168361173155596c845f0b9 |  | ||||||
|   GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 |   GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 | ||||||
|   GoogleSignIn: ce8c89bb9b37fb624b92e7514cc67335d1e277e4 |  | ||||||
|   GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1 |   GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1 | ||||||
|   GTMAppAuth: f69bd07d68cd3b766125f7e072c45d7340dea0de |  | ||||||
|   GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6 |  | ||||||
|   irondash_engine_context: 893c7d96d20ce361d7e996f39d360c4c2f9869ba |   irondash_engine_context: 893c7d96d20ce361d7e996f39d360c4c2f9869ba | ||||||
|   livekit_client: 6a35243df3da61750c98e266e02dedcf5d25c888 |   livekit_client: 6a35243df3da61750c98e266e02dedcf5d25c888 | ||||||
|   media_kit_libs_macos_video: 85a23e549b5f480e72cae3e5634b5514bc692f65 |   media_kit_libs_macos_video: 85a23e549b5f480e72cae3e5634b5514bc692f65 | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ | |||||||
|             <BuildableReference |             <BuildableReference | ||||||
|                BuildableIdentifier = "primary" |                BuildableIdentifier = "primary" | ||||||
|                BlueprintIdentifier = "33CC10EC2044A3C60003C045" |                BlueprintIdentifier = "33CC10EC2044A3C60003C045" | ||||||
|                BuildableName = "island.app" |                BuildableName = "Solian.app" | ||||||
|                BlueprintName = "Runner" |                BlueprintName = "Runner" | ||||||
|                ReferencedContainer = "container:Runner.xcodeproj"> |                ReferencedContainer = "container:Runner.xcodeproj"> | ||||||
|             </BuildableReference> |             </BuildableReference> | ||||||
| @@ -31,7 +31,7 @@ | |||||||
|          <BuildableReference |          <BuildableReference | ||||||
|             BuildableIdentifier = "primary" |             BuildableIdentifier = "primary" | ||||||
|             BlueprintIdentifier = "33CC10EC2044A3C60003C045" |             BlueprintIdentifier = "33CC10EC2044A3C60003C045" | ||||||
|             BuildableName = "island.app" |             BuildableName = "Solian.app" | ||||||
|             BlueprintName = "Runner" |             BlueprintName = "Runner" | ||||||
|             ReferencedContainer = "container:Runner.xcodeproj"> |             ReferencedContainer = "container:Runner.xcodeproj"> | ||||||
|          </BuildableReference> |          </BuildableReference> | ||||||
| @@ -66,7 +66,7 @@ | |||||||
|          <BuildableReference |          <BuildableReference | ||||||
|             BuildableIdentifier = "primary" |             BuildableIdentifier = "primary" | ||||||
|             BlueprintIdentifier = "33CC10EC2044A3C60003C045" |             BlueprintIdentifier = "33CC10EC2044A3C60003C045" | ||||||
|             BuildableName = "island.app" |             BuildableName = "Solian.app" | ||||||
|             BlueprintName = "Runner" |             BlueprintName = "Runner" | ||||||
|             ReferencedContainer = "container:Runner.xcodeproj"> |             ReferencedContainer = "container:Runner.xcodeproj"> | ||||||
|          </BuildableReference> |          </BuildableReference> | ||||||
| @@ -83,7 +83,7 @@ | |||||||
|          <BuildableReference |          <BuildableReference | ||||||
|             BuildableIdentifier = "primary" |             BuildableIdentifier = "primary" | ||||||
|             BlueprintIdentifier = "33CC10EC2044A3C60003C045" |             BlueprintIdentifier = "33CC10EC2044A3C60003C045" | ||||||
|             BuildableName = "island.app" |             BuildableName = "Solian.app" | ||||||
|             BlueprintName = "Runner" |             BlueprintName = "Runner" | ||||||
|             ReferencedContainer = "container:Runner.xcodeproj"> |             ReferencedContainer = "container:Runner.xcodeproj"> | ||||||
|          </BuildableReference> |          </BuildableReference> | ||||||
|   | |||||||
| @@ -16,7 +16,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev | |||||||
| # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html | ||||||
| # In Windows, build-name is used as the major, minor, and patch parts | # In Windows, build-name is used as the major, minor, and patch parts | ||||||
| # of the product and file versions while build-number is used as the build suffix. | # of the product and file versions while build-number is used as the build suffix. | ||||||
| version: 3.0.0+104 | version: 3.0.0+106 | ||||||
|  |  | ||||||
| environment: | environment: | ||||||
|   sdk: ^3.7.2 |   sdk: ^3.7.2 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user