Compare commits
	
		
			269 Commits
		
	
	
		
			f479b9fc8b
			...
			3.2.0+128
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 06f04eb3a5 | |||
| 8af97e43b4 | |||
| d1e8234b93 | |||
| a03d6015a6 | |||
| 246ac52d0a | |||
| abf395ff9a | |||
| 4fdc8eb1d0 | |||
| d7dcde898c | |||
| f85484d3ed | |||
| 5060bd30c9 | |||
| 3959f2260b | |||
| 6f4f1216ad | |||
| f401ffbf81 | |||
| 0251697951 | |||
| 178c12b893 | |||
| 4beda9200e | |||
| 7dfe411053 | |||
| 1232318a5d | |||
| 
						 | 
					56f41b6c0e | ||
| 
						 | 
					3ea717d25a | ||
| 1fe4889460 | |||
| cdf2722268 | |||
| a127b5bace | |||
| b2097cf044 | |||
| 701f29748d | |||
| 9e40ed4600 | |||
| c90e6fe661 | |||
| 569483300d | |||
| bab602d98b | |||
| b4f2bb803a | |||
| 03bfed6f46 | |||
| f98e5a0aec | |||
| 3d473e2fec | |||
| 0b6efa373a | |||
| 9b60e96cde | |||
| 81cd9b2082 | |||
| 923d5d7514 | |||
| 7169aff841 | |||
| fac3efb50c | |||
| e809aadaea | |||
| f33b569221 | |||
| e5f2e2d146 | |||
| 11368d064f | |||
| 246b163aec | |||
| 10e0d2fe5f | |||
| 99e10cb612 | |||
| 1db6941431 | |||
| 8370da4fe3 | |||
| 2bdf7029e9 | |||
| 86682a3a9a | |||
| c3925e81b5 | |||
| 6f1f488490 | |||
| 31b2de2e46 | |||
| 412dcfa62a | |||
| ffdc7e81ae | |||
| 1d3357803d | |||
| 6c48aa2356 | |||
| 466e354679 | |||
| 5d4b896f70 | |||
| a04dffdfe8 | |||
| ff871943cf | |||
| 1a892ab227 | |||
| af1b303211 | |||
| 6fd702eba8 | |||
| d220d43cd2 | |||
| 6892afb974 | |||
| 007b46b080 | |||
| 67d130dc34 | |||
| 7e923c77fe | |||
| a593b52812 | |||
| 
						 | 
					520dc80303 | ||
| 001897bbcd | |||
| 
						 | 
					bab29c23e3 | ||
| 76b39f2df3 | |||
| 509b3e145b | |||
| 2b80ebc2d0 | |||
| 0ab908dd2a | |||
| 6007467e7a | |||
| 3745157c42 | |||
| 94481ec7bd | |||
| fbfe8cbdee | |||
| fbbab0a981 | |||
| ae2fb3b303 | |||
| 3d7a4666ed | |||
| 5d3e0fb800 | |||
| 85ff52a661 | |||
| da7fd64a43 | |||
| 3902633217 | |||
| f478ea8b84 | |||
| 0f481aff5b | |||
| 7a31663310 | |||
| 0239c53c04 | |||
| 16987c758e | |||
| 3a36915140 | |||
| 4bde708878 | |||
| 2f0cf560f8 | |||
| cf355a95fd | |||
| 2f43073172 | |||
| 8236d31ecc | |||
| 459a7dade0 | |||
| e6000a660a | |||
| 75abaac205 | |||
| 603d5c3f73 | |||
| 4e4bd99598 | |||
| d1fbe5f15e | |||
| c061ef2132 | |||
| c378309bdd | |||
| b2c5d64fc5 | |||
| 
						 | 
					5371637b16 | ||
| c5cbf0af37 | |||
| 1a31e22450 | |||
| 
						 | 
					49db54529d | ||
| 8e0c0c6054 | |||
| f3d1183076 | |||
| a9f7f0cce0 | |||
| f2943f8411 | |||
| 808e7dcffa | |||
| 9bed4fa6fb | |||
| e6255a340b | |||
| 78bf319fb7 | |||
| 36a966d582 | |||
| f72b268d36 | |||
| 44ef31034e | |||
| 229dc2186f | |||
| a2f9a1efb4 | |||
| 
						 | 
					823e3c5de6 | ||
| 
						 | 
					faac7bac35 | ||
| 1fac1bfe02 | |||
| 9394b1d9c8 | |||
| 43dd13bac4 | |||
| 65bc372103 | |||
| 6558854a7a | |||
| 892035ab27 | |||
| 87ae8d2ff4 | |||
| 15c2dbaa0d | |||
| 6b3338b885 | |||
| bb00b1bc6a | |||
| 5e1a15ada2 | |||
| 9bdf8ba346 | |||
| 204c087f29 | |||
| 1def3e1895 | |||
| 550c74e544 | |||
| a39565f012 | |||
| aa9755e6a7 | |||
| b25e8d661a | |||
| 4b253ac3ec | |||
| 5d1b875d3c | |||
| e2e103fa67 | |||
| 43c90da4e3 | |||
| fa210dd98f | |||
| 43d9ca92bf | |||
| 5e592c143f | |||
| 0c59816f26 | |||
| 19c2457895 | |||
| af8d87857e | |||
| d05f63a36a | |||
| e2dc520012 | |||
| cff9c15e31 | |||
| f00135c4bf | |||
| 30b8a6c30f | |||
| b9c4ee31b1 | |||
| 87870af866 | |||
| b83cb0fb0b | |||
| 7fd1fe34e5 | |||
| 1c18330891 | |||
| d320879ad0 | |||
| 950150e119 | |||
| 3c4a9767e1 | |||
| 5df2445f3f | |||
| 56543d7b4c | |||
| 4c6fea1242 | |||
| fff43de9e3 | |||
| b31a915544 | |||
| 8956723ac5 | |||
| ccc3ac415e | |||
| 8c47a59b80 | |||
| a6d869ebf6 | |||
| f3a8699389 | |||
| d345c00e84 | |||
| a706f127b6 | |||
| 680ece0b6a | |||
| b976c6ed37 | |||
| 6ae6b132de | |||
| 95aec7c95b | |||
| edd760fbcb | |||
| ba269dbbb8 | |||
| 1aa45dd9f1 | |||
| 92685d7410 | |||
| c8e351514d | |||
| f3900825e3 | |||
| 2cc6652f75 | |||
| 4d4409de2e | |||
| e1286c797f | |||
| bec037622f | |||
| a0d8c1a9b3 | |||
| 26135d2116 | |||
| 71b67fd22d | |||
| 855072dfea | |||
| b39e2e2d64 | |||
| 84b1d6a346 | |||
| 28335dd548 | |||
| 7253e2d3ef | |||
| 4d489425fa | |||
| 890a8a44cf | |||
| 8e3583f57a | |||
| d0ff14659f | |||
| 1f7caaeaac | |||
| 9f9f42071a | |||
| 6bd6e994cb | |||
| 02e68d76ee | |||
| d04b06089c | |||
| 9be6fea2e0 | |||
| 6b1214a06f | |||
| 4597373ac9 | |||
| 047c8d93aa | |||
| 715f95ca22 | |||
| ba709012d7 | |||
| fd186f8391 | |||
| 262d36cd2d | |||
| f320855348 | |||
| ed90152462 | |||
| 6e5c5f1690 | |||
| 7c92dee097 | |||
| e4bb031138 | |||
| 97226ae96b | |||
| d8cd33e79a | |||
| 5ecd39b6a9 | |||
| 8854305e99 | |||
| 903cade296 | |||
| e48410a528 | |||
| 170ea4f2c0 | |||
| 19f0e11384 | |||
| 80bf6c3bbe | |||
| 8352ce8b5b | |||
| c06abf6e42 | |||
| 37cc0a5291 | |||
| 25ae18d6a9 | |||
| 18db50d80c | |||
| 903008d397 | |||
| 4499d4ec8e | |||
| 3a4faac8cb | |||
| e6c58b7b63 | |||
| a7454edec0 | |||
| cbf1952eb7 | |||
| 6d06f0a1b4 | |||
| f2d2a9efd8 | |||
| d44c8217b0 | |||
| 446c33d8b0 | |||
| 996462f1fd | |||
| 778f6bb79f | |||
| 8747f948b9 | |||
| 9546d6e4b8 | |||
| f8d1940af6 | |||
| b2b0891d24 | |||
| 274168d4bc | |||
| 2c98b348d5 | |||
| afc7887ddd | |||
| 99ff78a3d5 | |||
| 2ad85addf6 | |||
| 552b4b2572 | |||
| 594ac39e3d | |||
| 23321171f3 | |||
| ee72d79c93 | |||
| a20c2598fc | |||
| 2eba871a6d | |||
| 46919dec31 | |||
| 9dd6cffe0c | |||
| 2ea9f5e907 | |||
| 050750a808 | 
							
								
								
									
										11
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							@@ -41,6 +41,15 @@ jobs:
 | 
				
			|||||||
        with:
 | 
					        with:
 | 
				
			||||||
          name: build-output-windows
 | 
					          name: build-output-windows
 | 
				
			||||||
          path: build/windows/x64/runner/Release
 | 
					          path: build/windows/x64/runner/Release
 | 
				
			||||||
 | 
					      - name: Compile Installer
 | 
				
			||||||
 | 
					        uses: Minionguyjpro/Inno-Setup-Action@v1.2.2
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          path: setup.iss
 | 
				
			||||||
 | 
					      - name: Archive installer artifacts
 | 
				
			||||||
 | 
					        uses: actions/upload-artifact@v4
 | 
				
			||||||
 | 
					        with:
 | 
				
			||||||
 | 
					          name: build-output-windows-installer
 | 
				
			||||||
 | 
					          path: Installer/windows-x86_64-setup.exe
 | 
				
			||||||
  build-linux:
 | 
					  build-linux:
 | 
				
			||||||
    runs-on: ubuntu-latest
 | 
					    runs-on: ubuntu-latest
 | 
				
			||||||
    steps:
 | 
					    steps:
 | 
				
			||||||
@@ -59,7 +68,7 @@ jobs:
 | 
				
			|||||||
          sudo apt-get install -y libnotify-dev
 | 
					          sudo apt-get install -y libnotify-dev
 | 
				
			||||||
          sudo apt-get install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
 | 
					          sudo apt-get install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
 | 
				
			||||||
          sudo apt-get install -y gstreamer-1.0
 | 
					          sudo apt-get install -y gstreamer-1.0
 | 
				
			||||||
          sudo apt-get install -y libsecret-1-0
 | 
					          sudo apt-get install -y libsecret-1-dev
 | 
				
			||||||
      - run: flutter pub get
 | 
					      - run: flutter pub get
 | 
				
			||||||
      - run: flutter build linux
 | 
					      - run: flutter build linux
 | 
				
			||||||
      - name: Archive production artifacts
 | 
					      - name: Archive production artifacts
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -12,6 +12,9 @@
 | 
				
			|||||||
.swiftpm/
 | 
					.swiftpm/
 | 
				
			||||||
migrate_working_dir/
 | 
					migrate_working_dir/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Inno Setup
 | 
				
			||||||
 | 
					Installer/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# IntelliJ related
 | 
					# IntelliJ related
 | 
				
			||||||
*.iml
 | 
					*.iml
 | 
				
			||||||
*.ipr
 | 
					*.ipr
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,6 +8,9 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
Hello there! Welcome to the main repository of the DysonNetwork (also known as the Solar Network). The code here is mainly about the front-end app (also known as Solian). But you can still post issues here to get help and request new features!
 | 
					Hello there! Welcome to the main repository of the DysonNetwork (also known as the Solar Network). The code here is mainly about the front-end app (also known as Solian). But you can still post issues here to get help and request new features!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					如果你看得懂这行字,你可以前往我们的文档来了解更多:
 | 
				
			||||||
 | 
					[Suki - Solar Network](https://kb.solsynth.dev/zh/solar-network)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Server
 | 
					## Server
 | 
				
			||||||
 | 
					
 | 
				
			||||||
The backend of the Solar Network project is located at [Solsynth/DysonNetwork](https://github.com/Solsynth/DysonNetwork)
 | 
					The backend of the Solar Network project is located at [Solsynth/DysonNetwork](https://github.com/Solsynth/DysonNetwork)
 | 
				
			||||||
@@ -25,8 +28,6 @@ The content below will lead you to the world of Solar Network.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
### For Normal Users
 | 
					### For Normal Users
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**The v3 Release is not ready, yet.**
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
1. Go to the Github Releases page, and download the latest release / pre-release according to your platform.
 | 
					1. Go to the Github Releases page, and download the latest release / pre-release according to your platform.
 | 
				
			||||||
   - **What's the difference between stable and pre-release?** The pre-release is untested by the other users and includes the new cutting-edge features, usually the pre-release is the feature drop. At the same time, due to we're not doing the API versioning, some breaking changes may break the stable release, so use the pre-release one instead.
 | 
					   - **What's the difference between stable and pre-release?** The pre-release is untested by the other users and includes the new cutting-edge features, usually the pre-release is the feature drop. At the same time, due to we're not doing the API versioning, some breaking changes may break the stable release, so use the pre-release one instead.
 | 
				
			||||||
2. Create an account on the Solar Network
 | 
					2. Create an account on the Solar Network
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,6 +5,7 @@ plugins {
 | 
				
			|||||||
    id("com.android.application")
 | 
					    id("com.android.application")
 | 
				
			||||||
    // START: FlutterFire Configuration
 | 
					    // START: FlutterFire Configuration
 | 
				
			||||||
    id("com.google.gms.google-services")
 | 
					    id("com.google.gms.google-services")
 | 
				
			||||||
 | 
					    id("com.google.firebase.crashlytics")
 | 
				
			||||||
    // END: FlutterFire Configuration
 | 
					    // END: FlutterFire Configuration
 | 
				
			||||||
    id("kotlin-android")
 | 
					    id("kotlin-android")
 | 
				
			||||||
    // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
 | 
					    // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins.
 | 
				
			||||||
@@ -51,6 +52,12 @@ android {
 | 
				
			|||||||
    buildTypes {
 | 
					    buildTypes {
 | 
				
			||||||
        release {
 | 
					        release {
 | 
				
			||||||
            signingConfig = signingConfigs.getByName("release")
 | 
					            signingConfig = signingConfigs.getByName("release")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            isMinifyEnabled = true
 | 
				
			||||||
 | 
					            proguardFiles(
 | 
				
			||||||
 | 
					                getDefaultProguardFile("proguard-android-optimize.txt"),
 | 
				
			||||||
 | 
					                "proguard-rules.pro"
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -58,8 +65,7 @@ android {
 | 
				
			|||||||
dependencies {
 | 
					dependencies {
 | 
				
			||||||
    implementation("com.google.android.material:material:1.12.0")
 | 
					    implementation("com.google.android.material:material:1.12.0")
 | 
				
			||||||
    implementation("com.github.bumptech.glide:glide:4.16.0")
 | 
					    implementation("com.github.bumptech.glide:glide:4.16.0")
 | 
				
			||||||
    implementation("com.squareup.okhttp3:okhttp:4.12.0")
 | 
					    implementation("com.squareup.okhttp3:okhttp:5.1.0")
 | 
				
			||||||
    implementation("com.google.firebase:firebase-messaging-ktx")
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
flutter {
 | 
					flutter {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,7 +12,12 @@
 | 
				
			|||||||
          "package_name": "dev.solsynth.solian"
 | 
					          "package_name": "dev.solsynth.solian"
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      },
 | 
					      },
 | 
				
			||||||
      "oauth_client": [],
 | 
					      "oauth_client": [
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          "client_id": "961776991058-963m1qin2vtp8fv693b5fdrab5hmpl89.apps.googleusercontent.com",
 | 
				
			||||||
 | 
					          "client_type": 3
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
      "api_key": [
 | 
					      "api_key": [
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
          "current_key": "AIzaSyDvFNudXYs29uDtcCv6pFR8h5tXBs90FYk"
 | 
					          "current_key": "AIzaSyDvFNudXYs29uDtcCv6pFR8h5tXBs90FYk"
 | 
				
			||||||
@@ -20,7 +25,20 @@
 | 
				
			|||||||
      ],
 | 
					      ],
 | 
				
			||||||
      "services": {
 | 
					      "services": {
 | 
				
			||||||
        "appinvite_service": {
 | 
					        "appinvite_service": {
 | 
				
			||||||
          "other_platform_oauth_client": []
 | 
					          "other_platform_oauth_client": [
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              "client_id": "961776991058-963m1qin2vtp8fv693b5fdrab5hmpl89.apps.googleusercontent.com",
 | 
				
			||||||
 | 
					              "client_type": 3
 | 
				
			||||||
 | 
					            },
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              "client_id": "961776991058-stt7et4qvn3cpscl4r61gl1hnlatqkig.apps.googleusercontent.com",
 | 
				
			||||||
 | 
					              "client_type": 2,
 | 
				
			||||||
 | 
					              "ios_info": {
 | 
				
			||||||
 | 
					                "bundle_id": "dev.solsynth.solian",
 | 
				
			||||||
 | 
					                "app_store_id": "6499032345"
 | 
				
			||||||
 | 
					              }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					          ]
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										5
									
								
								android/app/proguard-rules.pro
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								android/app/proguard-rules.pro
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
				
			|||||||
 | 
					# JNI Zero initialization (required for WebRTC native method registration)
 | 
				
			||||||
 | 
					-keep class livekit.org.jni_zero.JniInit {
 | 
				
			||||||
 | 
					    # Keep the init method un-obfuscated for native code callback
 | 
				
			||||||
 | 
					    private static java.lang.Object[] init();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -4,6 +4,7 @@
 | 
				
			|||||||
    <uses-permission android:name="android.permission.INTERNET" />
 | 
					    <uses-permission android:name="android.permission.INTERNET" />
 | 
				
			||||||
    <uses-permission android:name="android.permission.CAMERA" />
 | 
					    <uses-permission android:name="android.permission.CAMERA" />
 | 
				
			||||||
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
 | 
					    <uses-permission android:name="android.permission.RECORD_AUDIO" />
 | 
				
			||||||
 | 
					    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
 | 
				
			||||||
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 | 
					    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 | 
				
			||||||
    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
 | 
					    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
 | 
				
			||||||
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
 | 
					    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
 | 
				
			||||||
@@ -42,6 +43,15 @@
 | 
				
			|||||||
                <category android:name="android.intent.category.LAUNCHER" />
 | 
					                <category android:name="android.intent.category.LAUNCHER" />
 | 
				
			||||||
            </intent-filter>
 | 
					            </intent-filter>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <!-- Deeplinking -->
 | 
				
			||||||
 | 
					            <intent-filter android:autoVerify="true">
 | 
				
			||||||
 | 
					                <action android:name="android.intent.action.VIEW" />
 | 
				
			||||||
 | 
					                <category android:name="android.intent.category.DEFAULT" />
 | 
				
			||||||
 | 
					                <category android:name="android.intent.category.BROWSABLE" />
 | 
				
			||||||
 | 
					                <data android:scheme="http" android:host="solian.app" />
 | 
				
			||||||
 | 
					                <data android:scheme="https" />
 | 
				
			||||||
 | 
					            </intent-filter>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <!-- Share Intent Filters -->
 | 
					            <!-- Share Intent Filters -->
 | 
				
			||||||
            <intent-filter>
 | 
					            <intent-filter>
 | 
				
			||||||
                <action android:name="android.intent.action.SEND" />
 | 
					                <action android:name="android.intent.action.SEND" />
 | 
				
			||||||
@@ -80,6 +90,13 @@
 | 
				
			|||||||
            </intent-filter>
 | 
					            </intent-filter>
 | 
				
			||||||
        </activity>
 | 
					        </activity>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <!-- Livekit Screenshare -->
 | 
				
			||||||
 | 
					        <service
 | 
				
			||||||
 | 
					            android:name="de.julianassmann.flutter_background.IsolateHolderService"
 | 
				
			||||||
 | 
					            android:enabled="true"
 | 
				
			||||||
 | 
					            android:exported="false"
 | 
				
			||||||
 | 
					            android:foregroundServiceType="mediaProjection" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <!-- Sign in with Apple -->
 | 
					        <!-- Sign in with Apple -->
 | 
				
			||||||
        <activity
 | 
					        <activity
 | 
				
			||||||
            android:name="com.aboutyou.dart_packages.sign_in_with_apple.SignInWithAppleCallback"
 | 
					            android:name="com.aboutyou.dart_packages.sign_in_with_apple.SignInWithAppleCallback"
 | 
				
			||||||
@@ -100,14 +117,6 @@
 | 
				
			|||||||
            android:enabled="true"
 | 
					            android:enabled="true"
 | 
				
			||||||
            android:exported="true" />
 | 
					            android:exported="true" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        <service
 | 
					 | 
				
			||||||
            android:name=".service.MessagingService"
 | 
					 | 
				
			||||||
            android:exported="false">
 | 
					 | 
				
			||||||
            <intent-filter>
 | 
					 | 
				
			||||||
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
 | 
					 | 
				
			||||||
            </intent-filter>
 | 
					 | 
				
			||||||
        </service>
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        <provider
 | 
					        <provider
 | 
				
			||||||
            android:name="androidx.core.content.FileProvider"
 | 
					            android:name="androidx.core.content.FileProvider"
 | 
				
			||||||
            android:authorities="dev.solsynth.solian.provider"
 | 
					            android:authorities="dev.solsynth.solian.provider"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,102 +0,0 @@
 | 
				
			|||||||
package dev.solsynth.solian.service
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import android.app.PendingIntent
 | 
					 | 
				
			||||||
import android.content.Intent
 | 
					 | 
				
			||||||
import android.graphics.Bitmap
 | 
					 | 
				
			||||||
import android.graphics.drawable.Drawable
 | 
					 | 
				
			||||||
import android.os.Build
 | 
					 | 
				
			||||||
import androidx.core.app.NotificationCompat
 | 
					 | 
				
			||||||
import androidx.core.app.NotificationManagerCompat
 | 
					 | 
				
			||||||
import androidx.core.app.RemoteInput
 | 
					 | 
				
			||||||
import com.bumptech.glide.Glide
 | 
					 | 
				
			||||||
import com.bumptech.glide.request.target.CustomTarget
 | 
					 | 
				
			||||||
import com.bumptech.glide.request.transition.Transition
 | 
					 | 
				
			||||||
import com.google.firebase.messaging.FirebaseMessagingService
 | 
					 | 
				
			||||||
import com.google.firebase.messaging.RemoteMessage
 | 
					 | 
				
			||||||
import dev.solsynth.solian.MainActivity
 | 
					 | 
				
			||||||
import dev.solsynth.solian.receiver.ReplyReceiver
 | 
					 | 
				
			||||||
import org.json.JSONObject
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class MessagingService: FirebaseMessagingService() {
 | 
					 | 
				
			||||||
    override fun onMessageReceived(remoteMessage: RemoteMessage) {
 | 
					 | 
				
			||||||
        val type = remoteMessage.data["type"]
 | 
					 | 
				
			||||||
        if (type == "messages.new") {
 | 
					 | 
				
			||||||
            handleMessageNotification(remoteMessage)
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            // Handle other notification types
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private fun handleMessageNotification(remoteMessage: RemoteMessage) {
 | 
					 | 
				
			||||||
        val data = remoteMessage.data
 | 
					 | 
				
			||||||
        val metaString = data["meta"] ?: return
 | 
					 | 
				
			||||||
        val meta = JSONObject(metaString)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        val pfp = meta.optString("pfp", null)
 | 
					 | 
				
			||||||
        val roomId = meta.optString("room_id", null)
 | 
					 | 
				
			||||||
        val messageId = meta.optString("message_id", null)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        val notificationId = System.currentTimeMillis().toInt()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        val replyLabel = "Reply"
 | 
					 | 
				
			||||||
        val remoteInput = RemoteInput.Builder("key_text_reply")
 | 
					 | 
				
			||||||
            .setLabel(replyLabel)
 | 
					 | 
				
			||||||
            .build()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        val replyIntent = Intent(this, ReplyReceiver::class.java).apply {
 | 
					 | 
				
			||||||
            putExtra("room_id", roomId)
 | 
					 | 
				
			||||||
            putExtra("message_id", messageId)
 | 
					 | 
				
			||||||
            putExtra("notification_id", notificationId)
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        val pendingIntentFlags = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
 | 
					 | 
				
			||||||
            PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            PendingIntent.FLAG_UPDATE_CURRENT
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        val replyPendingIntent = PendingIntent.getBroadcast(
 | 
					 | 
				
			||||||
            applicationContext,
 | 
					 | 
				
			||||||
            notificationId,
 | 
					 | 
				
			||||||
            replyIntent,
 | 
					 | 
				
			||||||
            pendingIntentFlags
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        val action = NotificationCompat.Action.Builder(
 | 
					 | 
				
			||||||
            android.R.drawable.ic_menu_send,
 | 
					 | 
				
			||||||
            replyLabel,
 | 
					 | 
				
			||||||
            replyPendingIntent
 | 
					 | 
				
			||||||
        )
 | 
					 | 
				
			||||||
            .addRemoteInput(remoteInput)
 | 
					 | 
				
			||||||
            .build()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        val intent = Intent(this, MainActivity::class.java)
 | 
					 | 
				
			||||||
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
 | 
					 | 
				
			||||||
        intent.putExtra("room_id", roomId)
 | 
					 | 
				
			||||||
        val pendingIntent = PendingIntent.getActivity(this, 0, intent, pendingIntentFlags)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        val notificationBuilder = NotificationCompat.Builder(this, "messages")
 | 
					 | 
				
			||||||
            .setSmallIcon(android.R.drawable.ic_dialog_info)
 | 
					 | 
				
			||||||
            .setContentTitle(remoteMessage.notification?.title)
 | 
					 | 
				
			||||||
            .setContentText(remoteMessage.notification?.body)
 | 
					 | 
				
			||||||
            .setPriority(NotificationCompat.PRIORITY_HIGH)
 | 
					 | 
				
			||||||
            .setContentIntent(pendingIntent)
 | 
					 | 
				
			||||||
            .addAction(action)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (pfp != null) {
 | 
					 | 
				
			||||||
            Glide.with(applicationContext)
 | 
					 | 
				
			||||||
                .asBitmap()
 | 
					 | 
				
			||||||
                .load(pfp)
 | 
					 | 
				
			||||||
                .into(object : CustomTarget<Bitmap>() {
 | 
					 | 
				
			||||||
                    override fun onResourceReady(resource: Bitmap, transition: Transition<in Bitmap>?) {
 | 
					 | 
				
			||||||
                        notificationBuilder.setLargeIcon(resource)
 | 
					 | 
				
			||||||
                        NotificationManagerCompat.from(applicationContext).notify(notificationId, notificationBuilder.build())
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    override fun onLoadCleared(placeholder: Drawable?) {}
 | 
					 | 
				
			||||||
                })
 | 
					 | 
				
			||||||
        } else {
 | 
					 | 
				
			||||||
            NotificationManagerCompat.from(this).notify(notificationId, notificationBuilder.build())
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
							
								
								
									
										41
									
								
								android/app/src/main/res/drawable/ic_notification.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								android/app/src/main/res/drawable/ic_notification.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					<vector xmlns:android="http://schemas.android.com/apk/res/android"
 | 
				
			||||||
 | 
					    android:width="192dp"
 | 
				
			||||||
 | 
					    android:height="192dp"
 | 
				
			||||||
 | 
					    android:viewportWidth="192"
 | 
				
			||||||
 | 
					    android:viewportHeight="192">
 | 
				
			||||||
 | 
					  <path
 | 
				
			||||||
 | 
					      android:pathData="M54,147h86"
 | 
				
			||||||
 | 
					      android:strokeLineJoin="round"
 | 
				
			||||||
 | 
					      android:strokeWidth="12"
 | 
				
			||||||
 | 
					      android:fillColor="#00000000"
 | 
				
			||||||
 | 
					      android:strokeColor="#000"
 | 
				
			||||||
 | 
					      android:strokeLineCap="round"/>
 | 
				
			||||||
 | 
					  <path
 | 
				
			||||||
 | 
					      android:pathData="M57,111s-2,-4.5 -2,-10m22,22s-4,7 -11,4m9,-22s-2,-4.5 -2,-10"
 | 
				
			||||||
 | 
					      android:strokeLineJoin="round"
 | 
				
			||||||
 | 
					      android:strokeWidth="10"
 | 
				
			||||||
 | 
					      android:fillColor="#00000000"
 | 
				
			||||||
 | 
					      android:strokeColor="#000"
 | 
				
			||||||
 | 
					      android:strokeLineCap="round"/>
 | 
				
			||||||
 | 
					  <path
 | 
				
			||||||
 | 
					      android:pathData="M54,147a32,32 0,0 1,-12 -61.67A39,39 0,0 1,81 46m59,101a30,30 0,0 0,29.93 -28"
 | 
				
			||||||
 | 
					      android:strokeLineJoin="round"
 | 
				
			||||||
 | 
					      android:strokeWidth="12"
 | 
				
			||||||
 | 
					      android:fillColor="#00000000"
 | 
				
			||||||
 | 
					      android:strokeColor="#000"
 | 
				
			||||||
 | 
					      android:strokeLineCap="round"/>
 | 
				
			||||||
 | 
					  <path
 | 
				
			||||||
 | 
					      android:pathData="M132,75m-4,0a4,4 0,1 1,8 0a4,4 0,1 1,-8 0"
 | 
				
			||||||
 | 
					      android:strokeLineJoin="round"
 | 
				
			||||||
 | 
					      android:strokeWidth="8"
 | 
				
			||||||
 | 
					      android:fillColor="#00000000"
 | 
				
			||||||
 | 
					      android:strokeColor="#000"
 | 
				
			||||||
 | 
					      android:strokeLineCap="round"/>
 | 
				
			||||||
 | 
					  <path
 | 
				
			||||||
 | 
					      android:pathData="M112.5,41.22C100.84,47.96 93,60.56 93,75c0,6.38 1.53,12.39 4.24,17.71m69.51,-35.42A38.84,38.84 0,0 1,171 75c0,14.43 -7.84,27.03 -19.49,33.78m-0.79,-43.32A20.9,20.9 0,0 1,153 75c0,7.77 -4.22,14.56 -10.49,18.19m-21,-36.38C115.22,60.44 111,67.23 111,75a20.9,20.9 0,0 0,2.28 9.53"
 | 
				
			||||||
 | 
					      android:strokeLineJoin="round"
 | 
				
			||||||
 | 
					      android:strokeWidth="10"
 | 
				
			||||||
 | 
					      android:fillColor="#00000000"
 | 
				
			||||||
 | 
					      android:strokeColor="#000"
 | 
				
			||||||
 | 
					      android:strokeLineCap="round"/>
 | 
				
			||||||
 | 
					</vector>
 | 
				
			||||||
@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
 | 
				
			|||||||
distributionPath=wrapper/dists
 | 
					distributionPath=wrapper/dists
 | 
				
			||||||
zipStoreBase=GRADLE_USER_HOME
 | 
					zipStoreBase=GRADLE_USER_HOME
 | 
				
			||||||
zipStorePath=wrapper/dists
 | 
					zipStorePath=wrapper/dists
 | 
				
			||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-all.zip
 | 
					distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-all.zip
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,11 +18,12 @@ pluginManagement {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
plugins {
 | 
					plugins {
 | 
				
			||||||
    id("dev.flutter.flutter-plugin-loader") version "1.0.0"
 | 
					    id("dev.flutter.flutter-plugin-loader") version "1.0.0"
 | 
				
			||||||
    id("com.android.application") version "8.10.1" apply false
 | 
					    id("com.android.application") version "8.12.0" apply false
 | 
				
			||||||
    // START: FlutterFire Configuration
 | 
					    // START: FlutterFire Configuration
 | 
				
			||||||
    id("com.google.gms.google-services") version("4.3.15") apply false
 | 
					    id("com.google.gms.google-services") version("4.3.15") apply false
 | 
				
			||||||
 | 
					    id("com.google.firebase.crashlytics") version("2.8.1") apply false
 | 
				
			||||||
    // END: FlutterFire Configuration
 | 
					    // END: FlutterFire Configuration
 | 
				
			||||||
    id("org.jetbrains.kotlin.android") version "1.8.22" apply false
 | 
					    id("org.jetbrains.kotlin.android") version("2.2.0") apply false
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
include(":app")
 | 
					include(":app")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -144,9 +144,16 @@
 | 
				
			|||||||
    "other": "{} attachments"
 | 
					    "other": "{} attachments"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "edited": "Edited",
 | 
					  "edited": "Edited",
 | 
				
			||||||
 | 
					  "editedAt": "Edited at {}",
 | 
				
			||||||
  "addVideo": "Add video",
 | 
					  "addVideo": "Add video",
 | 
				
			||||||
  "addPhoto": "Add photo",
 | 
					  "addPhoto": "Add photo",
 | 
				
			||||||
 | 
					  "addAudio": "Add audio",
 | 
				
			||||||
  "addFile": "Add file",
 | 
					  "addFile": "Add file",
 | 
				
			||||||
 | 
					  "recordAudio": "Record Audio",
 | 
				
			||||||
 | 
					  "linkAttachment": "Link Attachment",
 | 
				
			||||||
 | 
					  "fileIdCannotBeEmpty": "File ID cannot be empty",
 | 
				
			||||||
 | 
					  "fileIdLinkHint": "Haven't upload to the Solar Network? Tap here to open Solar Network Drive to customize your uploads.",
 | 
				
			||||||
 | 
					  "failedToFetchFile": "Failed to fetch file: {}",
 | 
				
			||||||
  "createDirectMessage": "Send new DM",
 | 
					  "createDirectMessage": "Send new DM",
 | 
				
			||||||
  "gotoDirectMessage": "Go to DM",
 | 
					  "gotoDirectMessage": "Go to DM",
 | 
				
			||||||
  "react": "React",
 | 
					  "react": "React",
 | 
				
			||||||
@@ -327,6 +334,7 @@
 | 
				
			|||||||
  "walletCreate": "Create a Wallet",
 | 
					  "walletCreate": "Create a Wallet",
 | 
				
			||||||
  "settingsServerUrl": "Server URL",
 | 
					  "settingsServerUrl": "Server URL",
 | 
				
			||||||
  "settingsApplied": "The settings has been applied.",
 | 
					  "settingsApplied": "The settings has been applied.",
 | 
				
			||||||
 | 
					  "settingsCustomFontsHelper": "Use comma to seprate.",
 | 
				
			||||||
  "notifications": "Notifications",
 | 
					  "notifications": "Notifications",
 | 
				
			||||||
  "posts": "Posts",
 | 
					  "posts": "Posts",
 | 
				
			||||||
  "settingsBackgroundImage": "Background Image",
 | 
					  "settingsBackgroundImage": "Background Image",
 | 
				
			||||||
@@ -352,6 +360,8 @@
 | 
				
			|||||||
  "postTitle": "Title",
 | 
					  "postTitle": "Title",
 | 
				
			||||||
  "postDescription": "Description",
 | 
					  "postDescription": "Description",
 | 
				
			||||||
  "call": "Call",
 | 
					  "call": "Call",
 | 
				
			||||||
 | 
					  "callLeave": "Leave",
 | 
				
			||||||
 | 
					  "callEnd": "End this call",
 | 
				
			||||||
  "done": "Done",
 | 
					  "done": "Done",
 | 
				
			||||||
  "loginResetPasswordSent": "Password reset link sent, please check your email inbox.",
 | 
					  "loginResetPasswordSent": "Password reset link sent, please check your email inbox.",
 | 
				
			||||||
  "accountDeletion": "Delete Account",
 | 
					  "accountDeletion": "Delete Account",
 | 
				
			||||||
@@ -375,7 +385,9 @@
 | 
				
			|||||||
  "postContent": "Content",
 | 
					  "postContent": "Content",
 | 
				
			||||||
  "postSettings": "Settings",
 | 
					  "postSettings": "Settings",
 | 
				
			||||||
  "postPublisherUnselected": "Publisher Unspecified",
 | 
					  "postPublisherUnselected": "Publisher Unspecified",
 | 
				
			||||||
  "postVisibility": "Visibility",
 | 
					  "postType": "Post Type",
 | 
				
			||||||
 | 
					  "articleAttachmentHint": "Attachments must be uploaded and inserted into the article body to be visible.",
 | 
				
			||||||
 | 
					  "postVisibility": "Post Visibility",
 | 
				
			||||||
  "postVisibilityPublic": "Public",
 | 
					  "postVisibilityPublic": "Public",
 | 
				
			||||||
  "postVisibilityFriends": "Friends Only",
 | 
					  "postVisibilityFriends": "Friends Only",
 | 
				
			||||||
  "postVisibilityUnlisted": "Unlisted",
 | 
					  "postVisibilityUnlisted": "Unlisted",
 | 
				
			||||||
@@ -562,6 +574,7 @@
 | 
				
			|||||||
  "keyboardShortcuts": "Keyboard Shortcuts",
 | 
					  "keyboardShortcuts": "Keyboard Shortcuts",
 | 
				
			||||||
  "share": "Share",
 | 
					  "share": "Share",
 | 
				
			||||||
  "sharePost": "Share Post",
 | 
					  "sharePost": "Share Post",
 | 
				
			||||||
 | 
					  "sharePostPhoto": "Share Post as Photo",
 | 
				
			||||||
  "quickActions": "Quick Actions",
 | 
					  "quickActions": "Quick Actions",
 | 
				
			||||||
  "post": "Post",
 | 
					  "post": "Post",
 | 
				
			||||||
  "copy": "Copy",
 | 
					  "copy": "Copy",
 | 
				
			||||||
@@ -588,6 +601,7 @@
 | 
				
			|||||||
  "yes": "Yes",
 | 
					  "yes": "Yes",
 | 
				
			||||||
  "navigateToChat": "Navigate to Chat",
 | 
					  "navigateToChat": "Navigate to Chat",
 | 
				
			||||||
  "wouldYouLikeToNavigateToChat": "Would You like to navigate to the chat?",
 | 
					  "wouldYouLikeToNavigateToChat": "Would You like to navigate to the chat?",
 | 
				
			||||||
 | 
					  "abuseReports": "Abuse Reports",
 | 
				
			||||||
  "abuseReport": "Report",
 | 
					  "abuseReport": "Report",
 | 
				
			||||||
  "abuseReportTitle": "Report Content",
 | 
					  "abuseReportTitle": "Report Content",
 | 
				
			||||||
  "abuseReportDescription": "Help us keep the community safe by reporting inappropriate content or behavior.",
 | 
					  "abuseReportDescription": "Help us keep the community safe by reporting inappropriate content or behavior.",
 | 
				
			||||||
@@ -619,8 +633,8 @@
 | 
				
			|||||||
  "chatJoin": "Join the Chat",
 | 
					  "chatJoin": "Join the Chat",
 | 
				
			||||||
  "realmJoin": "Join the Realm",
 | 
					  "realmJoin": "Join the Realm",
 | 
				
			||||||
  "realmJoinSuccess": "Successfully joined the realm.",
 | 
					  "realmJoinSuccess": "Successfully joined the realm.",
 | 
				
			||||||
  "discoverRealms": "Discover Realms",
 | 
					  "discoverRealms": "Discover realms",
 | 
				
			||||||
  "discoverPublishers": "Discover Publishers",
 | 
					  "discoverPublishers": "Discover publishers",
 | 
				
			||||||
  "search": "Search",
 | 
					  "search": "Search",
 | 
				
			||||||
  "publisherMembers": "Collaborators",
 | 
					  "publisherMembers": "Collaborators",
 | 
				
			||||||
  "developerHub": "Developer Hub",
 | 
					  "developerHub": "Developer Hub",
 | 
				
			||||||
@@ -629,6 +643,18 @@
 | 
				
			|||||||
  "enrollDeveloperHint": "Enroll one of your publishers to become a developer.",
 | 
					  "enrollDeveloperHint": "Enroll one of your publishers to become a developer.",
 | 
				
			||||||
  "noPublishersToEnroll": "You don't have any publishers that can be enrolled as a developer.",
 | 
					  "noPublishersToEnroll": "You don't have any publishers that can be enrolled as a developer.",
 | 
				
			||||||
  "totalCustomApps": "Total Custom Apps",
 | 
					  "totalCustomApps": "Total Custom Apps",
 | 
				
			||||||
 | 
					  "projects": "Projects",
 | 
				
			||||||
 | 
					  "noProjects": "No projects found.",
 | 
				
			||||||
 | 
					  "deleteProject": "Delete Project",
 | 
				
			||||||
 | 
					  "deleteProjectHint": "Are you sure you want to delete this project? This action cannot be undone.",
 | 
				
			||||||
 | 
					  "createProject": "Create Project",
 | 
				
			||||||
 | 
					  "editProject": "Edit Project",
 | 
				
			||||||
 | 
					  "projectDetails": "Project Details",
 | 
				
			||||||
 | 
					  "createBot": "Create Bot",
 | 
				
			||||||
 | 
					  "bots": "Bots",
 | 
				
			||||||
 | 
					  "noBots": "No bots yet.",
 | 
				
			||||||
 | 
					  "deleteBotHint": "Are you sure you want to delete this bot? This action cannot be undone.",
 | 
				
			||||||
 | 
					  "deleteBot": "Delete Bot",
 | 
				
			||||||
  "customApps": "Custom Apps",
 | 
					  "customApps": "Custom Apps",
 | 
				
			||||||
  "noCustomApps": "No custom apps yet.",
 | 
					  "noCustomApps": "No custom apps yet.",
 | 
				
			||||||
  "createCustomApp": "Create Custom App",
 | 
					  "createCustomApp": "Create Custom App",
 | 
				
			||||||
@@ -686,12 +712,219 @@
 | 
				
			|||||||
  "aboutScreenDeveloperSectionTitle": "Developer",
 | 
					  "aboutScreenDeveloperSectionTitle": "Developer",
 | 
				
			||||||
  "aboutScreenContactUsTitle": "Contact Us",
 | 
					  "aboutScreenContactUsTitle": "Contact Us",
 | 
				
			||||||
  "aboutScreenLicenseTitle": "License",
 | 
					  "aboutScreenLicenseTitle": "License",
 | 
				
			||||||
  "aboutScreenLicenseContent": "All copyright reserved © {} Solsynth\nOpen-sourced under license GNU AGPL v3.0",
 | 
					  "aboutScreenLicenseContent": "GNU Affero General Public License v3.0",
 | 
				
			||||||
  "aboutScreenCopyright": "© {} {}. All rights reserved.",
 | 
					  "aboutScreenCopyright": "All rights reserved © Solsynth {}",
 | 
				
			||||||
 | 
					  "aboutScreenMadeWith": "Made with ❤︎️ by Solar Network Team",
 | 
				
			||||||
  "aboutScreenFailedToLoadPackageInfo": "Failed to load package info: {error}",
 | 
					  "aboutScreenFailedToLoadPackageInfo": "Failed to load package info: {error}",
 | 
				
			||||||
  "copiedToClipboard": "Copied to clipboard",
 | 
					  "copiedToClipboard": "Copied to clipboard",
 | 
				
			||||||
  "copyToClipboardTooltip": "Copy to clipboard",
 | 
					  "copyToClipboardTooltip": "Copy to clipboard",
 | 
				
			||||||
  "postForwardingTo": "Forwarding to",
 | 
					  "postForwardingTo": "Forwarding to",
 | 
				
			||||||
  "postReplyingTo": "Replying to",
 | 
					  "postReplyingTo": "Replying to",
 | 
				
			||||||
  "postEditing": "You are editing an existing post"
 | 
					  "postReplyPlaceholder": "Post your reply",
 | 
				
			||||||
 | 
					  "postEditing": "You are editing an existing post",
 | 
				
			||||||
 | 
					  "postArticle": "Article",
 | 
				
			||||||
 | 
					  "aboutDeviceName": "Device Name",
 | 
				
			||||||
 | 
					  "aboutDeviceIdentifier": "Device Identifier",
 | 
				
			||||||
 | 
					  "donate": "Donate",
 | 
				
			||||||
 | 
					  "donateDescription": "Support us to continue developing the Solar Network and keep the server up and running.",
 | 
				
			||||||
 | 
					  "fileId": "File ID",
 | 
				
			||||||
 | 
					  "fileIdHint": "The file ID is the ID you get after upload the file via the Solar Network Drive.",
 | 
				
			||||||
 | 
					  "translate": "Translate",
 | 
				
			||||||
 | 
					  "translating": "Translating",
 | 
				
			||||||
 | 
					  "translated": "Translated",
 | 
				
			||||||
 | 
					  "reactionThumbUp": "Thumbs Up",
 | 
				
			||||||
 | 
					  "reactionThumbDown": "Thumbs Down",
 | 
				
			||||||
 | 
					  "reactionJustOkay": "Just Okay",
 | 
				
			||||||
 | 
					  "reactionCry": "Cry",
 | 
				
			||||||
 | 
					  "reactionConfuse": "Confused",
 | 
				
			||||||
 | 
					  "reactionClap": "Clap",
 | 
				
			||||||
 | 
					  "reactionLaugh": "Laugh",
 | 
				
			||||||
 | 
					  "reactionAngry": "Angry",
 | 
				
			||||||
 | 
					  "reactionParty": "Party",
 | 
				
			||||||
 | 
					  "reactionPray": "Pray",
 | 
				
			||||||
 | 
					  "reactionHeart": "Heart",
 | 
				
			||||||
 | 
					  "selectMicrophone": "Select Microphone",
 | 
				
			||||||
 | 
					  "selectCamera": "Select Camera",
 | 
				
			||||||
 | 
					  "switchedTo": "Switched to {}",
 | 
				
			||||||
 | 
					  "connecting": "Connecting",
 | 
				
			||||||
 | 
					  "reconnecting": "Reconnecting",
 | 
				
			||||||
 | 
					  "disconnected": "Disconnected",
 | 
				
			||||||
 | 
					  "connected": "Connected",
 | 
				
			||||||
 | 
					  "repliesLoadMore": "Load more replies",
 | 
				
			||||||
 | 
					  "attachmentsRecentUploads": "Recent Uploads",
 | 
				
			||||||
 | 
					  "attachmentsManualInput": "Manual Input",
 | 
				
			||||||
 | 
					  "crop": "Crop",
 | 
				
			||||||
 | 
					  "rename": "Rename",
 | 
				
			||||||
 | 
					  "markAsSensitive": "Mark as Sensitive",
 | 
				
			||||||
 | 
					  "fileName": "File name",
 | 
				
			||||||
 | 
					  "sensitiveCategories.language": "Language",
 | 
				
			||||||
 | 
					  "sensitiveCategories.sexualContent": "Sexual Content",
 | 
				
			||||||
 | 
					  "sensitiveCategories.violence": "Violence",
 | 
				
			||||||
 | 
					  "sensitiveCategories.profanity": "Profanity",
 | 
				
			||||||
 | 
					  "sensitiveCategories.hateSpeech": "Hate Speech",
 | 
				
			||||||
 | 
					  "sensitiveCategories.racism": "Racism",
 | 
				
			||||||
 | 
					  "sensitiveCategories.adultContent": "Adult Content",
 | 
				
			||||||
 | 
					  "sensitiveCategories.drugAbuse": "Drug Abuse",
 | 
				
			||||||
 | 
					  "sensitiveCategories.alcoholAbuse": "Alcohol Abuse",
 | 
				
			||||||
 | 
					  "sensitiveCategories.gambling": "Gambling",
 | 
				
			||||||
 | 
					  "sensitiveCategories.selfHarm": "Self-harm",
 | 
				
			||||||
 | 
					  "sensitiveCategories.childAbuse": "Child Abuse",
 | 
				
			||||||
 | 
					  "sensitiveCategories.other": "Other",
 | 
				
			||||||
 | 
					  "poll": "Poll",
 | 
				
			||||||
 | 
					  "pollsRecent": "Recent Polls",
 | 
				
			||||||
 | 
					  "pollCreateNew": "Create New",
 | 
				
			||||||
 | 
					  "pollCreateNewHint": "Create a new poll for your post. Pick a publisher and continue.",
 | 
				
			||||||
 | 
					  "pollQuestions": "Questions",
 | 
				
			||||||
 | 
					  "publisher": "Publisher",
 | 
				
			||||||
 | 
					  "publisherHint": "Enter the publisher name",
 | 
				
			||||||
 | 
					  "publisherCannotBeEmpty": "Publisher cannot be empty",
 | 
				
			||||||
 | 
					  "operationFailed": "Operation failed: {}",
 | 
				
			||||||
 | 
					  "stickerMarketplace": "Sticker Marketplace",
 | 
				
			||||||
 | 
					  "stickerPackAdded": "Sticker pack added to your collection",
 | 
				
			||||||
 | 
					  "stickerPackRemoved": "Sticker pack removed from your collection",
 | 
				
			||||||
 | 
					  "addPack": "Add Pack",
 | 
				
			||||||
 | 
					  "removePack": "Remove Pack",
 | 
				
			||||||
 | 
					  "browseAndAddStickers": "Browse and add sticker packs",
 | 
				
			||||||
 | 
					  "stickerPack": "Sticker Pack",
 | 
				
			||||||
 | 
					  "postCategoryTechnology": "Technology",
 | 
				
			||||||
 | 
					  "postCategoryTravel": "Travel",
 | 
				
			||||||
 | 
					  "postCategoryFood": "Food",
 | 
				
			||||||
 | 
					  "postCategoryHealth": "Health",
 | 
				
			||||||
 | 
					  "postCategoryScience": "Science",
 | 
				
			||||||
 | 
					  "postCategorySports": "Sports",
 | 
				
			||||||
 | 
					  "postCategoryFinance": "Finance",
 | 
				
			||||||
 | 
					  "postCategoryLife": "Life",
 | 
				
			||||||
 | 
					  "postCategoryArt": "Art",
 | 
				
			||||||
 | 
					  "postCategoryStudy": "Study",
 | 
				
			||||||
 | 
					  "postCategoryGaming": "Gaming",
 | 
				
			||||||
 | 
					  "postCategoryProgramming": "Programming",
 | 
				
			||||||
 | 
					  "postCategoryMusic": "Music",
 | 
				
			||||||
 | 
					  "links": "Links",
 | 
				
			||||||
 | 
					  "addLink": "Add link",
 | 
				
			||||||
 | 
					  "linkKey": "Link Name",
 | 
				
			||||||
 | 
					  "linkValue": "URL",
 | 
				
			||||||
 | 
					  "debugOptions": "Debug Options",
 | 
				
			||||||
 | 
					  "joinedAt": "Joined at {}",
 | 
				
			||||||
 | 
					  "searchAccounts": "Search accounts...",
 | 
				
			||||||
 | 
					  "webFeeds": "Web Feeds",
 | 
				
			||||||
 | 
					  "polls": "Polls",
 | 
				
			||||||
 | 
					  "sharePostSlogan": "Explore more on the Solar Network",
 | 
				
			||||||
 | 
					  "filesListAdditional": {
 | 
				
			||||||
 | 
					    "one": "+{} file remaining",
 | 
				
			||||||
 | 
					    "other": "+{} files remaining"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "pollAnswerSubmitted": "Poll answer has been submitted.",
 | 
				
			||||||
 | 
					  "modifyAnswers": "Modify Answers",
 | 
				
			||||||
 | 
					  "back": "Back",
 | 
				
			||||||
 | 
					  "submit": "Submit",
 | 
				
			||||||
 | 
					  "pollOptionDefaultLabel": "Option 1",
 | 
				
			||||||
 | 
					  "pollUpdated": "Poll updated.",
 | 
				
			||||||
 | 
					  "pollCreated": "Poll created.",
 | 
				
			||||||
 | 
					  "pollCreate": "Create Poll",
 | 
				
			||||||
 | 
					  "pollEdit": "Edit Poll",
 | 
				
			||||||
 | 
					  "pollPreviewJsonDebug": "Debug Preview",
 | 
				
			||||||
 | 
					  "pollTitleRequired": "Title is required",
 | 
				
			||||||
 | 
					  "pollEndDateOptional": "End date & time (optional)",
 | 
				
			||||||
 | 
					  "notSet": "Not set",
 | 
				
			||||||
 | 
					  "pick": "Pick",
 | 
				
			||||||
 | 
					  "clear": "Clear",
 | 
				
			||||||
 | 
					  "questions": "Questions",
 | 
				
			||||||
 | 
					  "pollAddQuestion": "Add question",
 | 
				
			||||||
 | 
					  "pollQuestionTypeSingleChoice": "Single choice",
 | 
				
			||||||
 | 
					  "pollQuestionTypeMultipleChoice": "Multiple choice",
 | 
				
			||||||
 | 
					  "pollQuestionTypeFreeText": "Free text",
 | 
				
			||||||
 | 
					  "pollQuestionTypeYesNo": "Yes / No",
 | 
				
			||||||
 | 
					  "pollQuestionTypeRating": "Rating",
 | 
				
			||||||
 | 
					  "pollNoQuestionsYet": "No questions yet",
 | 
				
			||||||
 | 
					  "pollNoQuestionsHint": "Use \"Add question\" to start building your poll.",
 | 
				
			||||||
 | 
					  "pollDebugPreview": "Debug Preview",
 | 
				
			||||||
 | 
					  "pollUntitledQuestion": "Untitled question",
 | 
				
			||||||
 | 
					  "moveUp": "Move up",
 | 
				
			||||||
 | 
					  "moveDown": "Move down",
 | 
				
			||||||
 | 
					  "required": "Required",
 | 
				
			||||||
 | 
					  "pollQuestionTitle": "Question title",
 | 
				
			||||||
 | 
					  "pollQuestionTitleRequired": "Question title is required",
 | 
				
			||||||
 | 
					  "pollQuestionDescriptionOptional": "Question description (optional)",
 | 
				
			||||||
 | 
					  "options": "Options",
 | 
				
			||||||
 | 
					  "pollAddOption": "Add option",
 | 
				
			||||||
 | 
					  "pollOptionLabel": "Option label",
 | 
				
			||||||
 | 
					  "pollLongTextAnswerPreview": "Long text answer (preview)",
 | 
				
			||||||
 | 
					  "pollShortTextAnswerPreview": "Short text answer (preview)",
 | 
				
			||||||
 | 
					  "messageJumpNotLoaded": "The referenced message was not loaded, unable to jump to it.",
 | 
				
			||||||
 | 
					  "postUnlinkRealm": "No linked realm",
 | 
				
			||||||
 | 
					  "postSlug": "Slug",
 | 
				
			||||||
 | 
					  "postSlugHint": "The slug can be used to access your post via URL in the webpage, it should be publisher-wide unique.",
 | 
				
			||||||
 | 
					  "attachmentOnDevice": "On-device",
 | 
				
			||||||
 | 
					  "attachmentOnCloud": "On-cloud",
 | 
				
			||||||
 | 
					  "attachments": "Attachments",
 | 
				
			||||||
 | 
					  "publisherCollabInvitation": "Collabration invitations",
 | 
				
			||||||
 | 
					  "publisherCollabInvitationCount": {
 | 
				
			||||||
 | 
					    "zero": "No invitation",
 | 
				
			||||||
 | 
					    "one": "{} available invitation",
 | 
				
			||||||
 | 
					    "other": "{} available invitations"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "failedToLoadUserInfo": "Failed to load user info",
 | 
				
			||||||
 | 
					  "failedToLoadUserInfoNetwork": "It seems be network issue, you can tap the button below to try again.",
 | 
				
			||||||
 | 
					  "failedToLoadUserInfoUnauthorized": "It seems your session has been logged out or not available anymore, you can still try agian to fetch the user info if you want.",
 | 
				
			||||||
 | 
					  "okay": "Okay",
 | 
				
			||||||
 | 
					  "postDetails": "Post Details",
 | 
				
			||||||
 | 
					  "postCount": {
 | 
				
			||||||
 | 
					    "zero": "No posts",
 | 
				
			||||||
 | 
					    "one": "{} post",
 | 
				
			||||||
 | 
					    "other": "{} posts"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "mimeType": "MIME Type",
 | 
				
			||||||
 | 
					  "fileSize": "File Size",
 | 
				
			||||||
 | 
					  "fileHash": "File Hash",
 | 
				
			||||||
 | 
					  "exifData": "EXIF Data",
 | 
				
			||||||
 | 
					  "postShuffle": "Shuffle Posts",
 | 
				
			||||||
 | 
					  "leveling": "Leveling",
 | 
				
			||||||
 | 
					  "levelingHistory": "Leveling History",
 | 
				
			||||||
 | 
					  "stellarProgram": "Stellar Program",
 | 
				
			||||||
 | 
					  "socialCredits": "Social Credits",
 | 
				
			||||||
 | 
					  "credits": "Credits",
 | 
				
			||||||
 | 
					  "socialCreditsDescription": "Social Credit is a way for Solar Network to evaluate users. It is calculated based on their behavior and interactions. With a base score of 100, higher scores indicate a user's credibility within the community. Scores change over time to reflect a user's recent behavior. Users with higher credit ratings enjoy more benefits, while users with lower credit ratings may have some functionality restricted.",
 | 
				
			||||||
 | 
					  "socialCreditsLevelPoor": "Poor",
 | 
				
			||||||
 | 
					  "socialCreditsLevelNormal": "Normal",
 | 
				
			||||||
 | 
					  "socialCreditsLevelGood": "Good",
 | 
				
			||||||
 | 
					  "socialCreditsLevelExcellent": "Excellent",
 | 
				
			||||||
 | 
					  "orderByPopularity": "Sort by popularity",
 | 
				
			||||||
 | 
					  "orderByReleaseDate": "Sort by release date",
 | 
				
			||||||
 | 
					  "editBot": "Edit Bot",
 | 
				
			||||||
 | 
					  "botAutomatedBy": "Automated by {}",
 | 
				
			||||||
 | 
					  "botDetails": "Bot Details",
 | 
				
			||||||
 | 
					  "overview": "Overview",
 | 
				
			||||||
 | 
					  "keys": "Keys",
 | 
				
			||||||
 | 
					  "botNotFound": "Bot not found.",
 | 
				
			||||||
 | 
					  "newBotKey": "New Bot Key",
 | 
				
			||||||
 | 
					  "newBotKeyHint": "Enter a name for your new key. The key will be shown only once.",
 | 
				
			||||||
 | 
					  "revokeBotKey": "Revoke Bot Key",
 | 
				
			||||||
 | 
					  "revokeBotKeyHint": "Are you sure you want to revoke this key? This action cannot be undone and any application using this key will stop working.",
 | 
				
			||||||
 | 
					  "noBotKeys": "No bot keys yet.",
 | 
				
			||||||
 | 
					  "revoke": "Revoke",
 | 
				
			||||||
 | 
					  "keyName": "Key Name",
 | 
				
			||||||
 | 
					  "newKeyGenerated": "New Key Generated",
 | 
				
			||||||
 | 
					  "copyKeyHint": "Please copy this key and store it somewhere safe. You will not be able to see it again.",
 | 
				
			||||||
 | 
					  "rotateKey": "Rotate Key",
 | 
				
			||||||
 | 
					  "rotateBotKey": "Rotate Bot Key",
 | 
				
			||||||
 | 
					  "rotateBotKeyHint": "Are you sure you want to rotate this key? The old key will become invalid immediately. This action cannot be undone.",
 | 
				
			||||||
 | 
					  "webFeedArticleCount": {
 | 
				
			||||||
 | 
					    "zero": "No articles",
 | 
				
			||||||
 | 
					    "one": "{} article",
 | 
				
			||||||
 | 
					    "other": "{} articles"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "webFeedSubscribed": "The feed has been subscribed",
 | 
				
			||||||
 | 
					  "webFeedUnsubscribed": "The feed has been unsubscribed",
 | 
				
			||||||
 | 
					  "appDetails": "App Details",
 | 
				
			||||||
 | 
					  "secrets": "Secrets",
 | 
				
			||||||
 | 
					  "appNotFound": "App not found.",
 | 
				
			||||||
 | 
					  "secretCopied": "Secret copied to clipboard.",
 | 
				
			||||||
 | 
					  "deleteSecret": "Delete Secret",
 | 
				
			||||||
 | 
					  "deleteSecretHint": "Are you sure you want to delete this secret? This action cannot be undone.",
 | 
				
			||||||
 | 
					  "generateSecret": "Generate New Secret",
 | 
				
			||||||
 | 
					  "createdAt": "Created at {}",
 | 
				
			||||||
 | 
					  "newSecretGenerated": "New Secret Generated",
 | 
				
			||||||
 | 
					  "copySecretHint": "Please copy this secret and store it somewhere safe. You will not be able to see it again.",
 | 
				
			||||||
 | 
					  "expiresIn": "Expires In (seconds)",
 | 
				
			||||||
 | 
					  "isOidc": "OIDC Compliant"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -46,7 +46,6 @@
 | 
				
			|||||||
  "delete": "删除",
 | 
					  "delete": "删除",
 | 
				
			||||||
  "deletePublisher": "删除发布者",
 | 
					  "deletePublisher": "删除发布者",
 | 
				
			||||||
  "deletePublisherHint": "确定要删除此发布者吗?这也会删除此发布者下的所有帖子和收藏。",
 | 
					  "deletePublisherHint": "确定要删除此发布者吗?这也会删除此发布者下的所有帖子和收藏。",
 | 
				
			||||||
  "somethingWentWrong": "发生了一些错误",
 | 
					 | 
				
			||||||
  "deletePost": "删除帖子",
 | 
					  "deletePost": "删除帖子",
 | 
				
			||||||
  "deletePostHint": "确定要删除这篇帖子吗?",
 | 
					  "deletePostHint": "确定要删除这篇帖子吗?",
 | 
				
			||||||
  "copyLink": "复制链接",
 | 
					  "copyLink": "复制链接",
 | 
				
			||||||
@@ -301,6 +300,7 @@
 | 
				
			|||||||
  "walletCreate": "创建钱包",
 | 
					  "walletCreate": "创建钱包",
 | 
				
			||||||
  "settingsServerUrl": "服务器 URL",
 | 
					  "settingsServerUrl": "服务器 URL",
 | 
				
			||||||
  "settingsApplied": "设置已应用。",
 | 
					  "settingsApplied": "设置已应用。",
 | 
				
			||||||
 | 
					  "settingsCustomFontsHelper": "用逗号分隔。",
 | 
				
			||||||
  "notifications": "通知",
 | 
					  "notifications": "通知",
 | 
				
			||||||
  "posts": "帖子",
 | 
					  "posts": "帖子",
 | 
				
			||||||
  "settingsBackgroundImage": "背景图片",
 | 
					  "settingsBackgroundImage": "背景图片",
 | 
				
			||||||
@@ -349,7 +349,6 @@
 | 
				
			|||||||
  "postContent": "内容",
 | 
					  "postContent": "内容",
 | 
				
			||||||
  "postSettings": "设置",
 | 
					  "postSettings": "设置",
 | 
				
			||||||
  "postPublisherUnselected": "未指定发布者",
 | 
					  "postPublisherUnselected": "未指定发布者",
 | 
				
			||||||
  "postVisibility": "可见性",
 | 
					 | 
				
			||||||
  "postVisibilityPublic": "公开",
 | 
					  "postVisibilityPublic": "公开",
 | 
				
			||||||
  "postVisibilityFriends": "仅好友可见",
 | 
					  "postVisibilityFriends": "仅好友可见",
 | 
				
			||||||
  "postVisibilityUnlisted": "不公开",
 | 
					  "postVisibilityUnlisted": "不公开",
 | 
				
			||||||
@@ -473,7 +472,7 @@
 | 
				
			|||||||
  "description": "描述",
 | 
					  "description": "描述",
 | 
				
			||||||
  "pinCode": "PIN 码",
 | 
					  "pinCode": "PIN 码",
 | 
				
			||||||
  "biometric": "生物识别",
 | 
					  "biometric": "生物识别",
 | 
				
			||||||
  "enterPinToConfirm": "请输入您的 6 位数字 PIN 以确认付款",
 | 
					  "enterPinToConfirm": "请输入您的6位数字 PIN 以确认付款",
 | 
				
			||||||
  "clearPin": "清除 PIN 码",
 | 
					  "clearPin": "清除 PIN 码",
 | 
				
			||||||
  "useBiometricToConfirm": "使用生物特征认证来确认付款",
 | 
					  "useBiometricToConfirm": "使用生物特征认证来确认付款",
 | 
				
			||||||
  "touchSensorToAuthenticate": "触摸传感器进行身份验证",
 | 
					  "touchSensorToAuthenticate": "触摸传感器进行身份验证",
 | 
				
			||||||
@@ -490,20 +489,26 @@
 | 
				
			|||||||
  "paymentError": "付款失败: {error}",
 | 
					  "paymentError": "付款失败: {error}",
 | 
				
			||||||
  "usePinInstead": "使用 PIN 码",
 | 
					  "usePinInstead": "使用 PIN 码",
 | 
				
			||||||
  "levelProgress": "等级进度",
 | 
					  "levelProgress": "等级进度",
 | 
				
			||||||
 | 
					  "unlockedFeatures": "已解锁的功能",
 | 
				
			||||||
 | 
					  "unlockedFeaturesDescription": "在您当前级别上解锁的功能将显示在这里。",
 | 
				
			||||||
  "stellarMembership": "恒星计划",
 | 
					  "stellarMembership": "恒星计划",
 | 
				
			||||||
  "upgradeYourPlan": "升级您的计划",
 | 
					  "upgradeYourPlan": "升级您的计划",
 | 
				
			||||||
  "chooseYourPlan": "选择你的方案",
 | 
					  "chooseYourPlan": "选择你的方案",
 | 
				
			||||||
  "currentMembership": "当前:{}",
 | 
					  "currentMembership": "当前:{}",
 | 
				
			||||||
  "currentMembershipMember": "恒星计划「{}」级会员",
 | 
					 | 
				
			||||||
  "membershipExpires": "过期于:{}",
 | 
					  "membershipExpires": "过期于:{}",
 | 
				
			||||||
  "membershipTierStellar": "恒星",
 | 
					  "membershipTierStellar": "恒星",
 | 
				
			||||||
  "membershipTierNova": "新星",
 | 
					  "membershipTierNova": "新星",
 | 
				
			||||||
  "membershipTierSupernova": "超新星",
 | 
					  "membershipTierSupernova": "超新星",
 | 
				
			||||||
  "membershipTierUnknown": "未知",
 | 
					  "membershipTierUnknown": "未知",
 | 
				
			||||||
  "membershipPriceStellar": "每月 1200 源点,至少需要 3 级",
 | 
					 | 
				
			||||||
  "membershipPriceNova": "每月 2400 源点,至少需要 6 级",
 | 
					 | 
				
			||||||
  "membershipPriceSupernova": "每月 3600 源点,至少需要 9 级",
 | 
					 | 
				
			||||||
  "membershipFeatureBasic": "基础功能",
 | 
					  "membershipFeatureBasic": "基础功能",
 | 
				
			||||||
 | 
					  "membershipFeaturePrioritySupport": "优先支持",
 | 
				
			||||||
 | 
					  "membershipFeatureAdFree": "无广告",
 | 
				
			||||||
 | 
					  "membershipFeatureAllPrimary": "所有主要功能",
 | 
				
			||||||
 | 
					  "membershipFeatureAdvancedCustomization": "高级自定义",
 | 
				
			||||||
 | 
					  "membershipFeatureEarlyAccess": "抢先体验",
 | 
				
			||||||
 | 
					  "membershipFeatureAllNova": "所有「新星」功能",
 | 
				
			||||||
 | 
					  "membershipFeatureExclusiveContent": "限定内容",
 | 
				
			||||||
 | 
					  "membershipFeatureVipSupport": "VIP 支持",
 | 
				
			||||||
  "membershipCurrentBadge": "当前",
 | 
					  "membershipCurrentBadge": "当前",
 | 
				
			||||||
  "restorePurchase": "恢复购买",
 | 
					  "restorePurchase": "恢复购买",
 | 
				
			||||||
  "restorePurchaseDescription": "输入您付款的提供商和订单 ID 以恢复您的购买。",
 | 
					  "restorePurchaseDescription": "输入您付款的提供商和订单 ID 以恢复您的购买。",
 | 
				
			||||||
@@ -512,5 +517,343 @@
 | 
				
			|||||||
  "orderId": "订单 ID",
 | 
					  "orderId": "订单 ID",
 | 
				
			||||||
  "enterOrderId": "输入您的订单 ID",
 | 
					  "enterOrderId": "输入您的订单 ID",
 | 
				
			||||||
  "restore": "恢复",
 | 
					  "restore": "恢复",
 | 
				
			||||||
  "keyboardShortcuts": "键盘快捷键"
 | 
					  "keyboardShortcuts": "键盘快捷键",
 | 
				
			||||||
 | 
					  "safetyReport": "举报",
 | 
				
			||||||
 | 
					  "safetyReportTitle": "举报",
 | 
				
			||||||
 | 
					  "safetyReportDescription": "通过举报不合适的内容和行为来维护我们社区的稳定。",
 | 
				
			||||||
 | 
					  "safetyReportType": "举报类型",
 | 
				
			||||||
 | 
					  "safetyReportReason": "更多证据",
 | 
				
			||||||
 | 
					  "safetyReportReasonHint": "请提供更多证据……",
 | 
				
			||||||
 | 
					  "safetyReportSubmit": "提交举报",
 | 
				
			||||||
 | 
					  "safetyReportSubmitting": "提交中……",
 | 
				
			||||||
 | 
					  "safetyReportSuccess": "举报成功,感谢您参与维护社区健康发展。",
 | 
				
			||||||
 | 
					  "safetyReportError": "举报失败,请稍后重试。",
 | 
				
			||||||
 | 
					  "safetyReportReasonRequired": "请提供举报证据",
 | 
				
			||||||
 | 
					  "safetyReportTypeSpam": "垃圾或导向错误",
 | 
				
			||||||
 | 
					  "safetyReportTypeHarassment": "骚扰或暴力行为",
 | 
				
			||||||
 | 
					  "safetyReportTypeHateSpeech": "歧视言论",
 | 
				
			||||||
 | 
					  "safetyReportTypeViolence": "威胁或暴力内容",
 | 
				
			||||||
 | 
					  "safetyReportTypeAdultContent": "成人内容",
 | 
				
			||||||
 | 
					  "safetyReportTypeIntellectualProperty": "抄袭",
 | 
				
			||||||
 | 
					  "safetyReportTypeOther": "其它",
 | 
				
			||||||
 | 
					  "safetyReportTypeInappropriate": "不良内容",
 | 
				
			||||||
 | 
					  "safetyReportTypeCopyright": "版权侵害",
 | 
				
			||||||
 | 
					  "safetyReportSuccessTitle": "举报成功",
 | 
				
			||||||
 | 
					  "safetyReportErrorTitle": "错误",
 | 
				
			||||||
 | 
					  "discover": "发现",
 | 
				
			||||||
 | 
					  "joinRealm": "加入领域",
 | 
				
			||||||
 | 
					  "removePublisherMember": "移除发布者",
 | 
				
			||||||
 | 
					  "removePublisherMemberHint": "你确定要将这个成员从发布者中移除?",
 | 
				
			||||||
 | 
					  "drafts": "草稿箱",
 | 
				
			||||||
 | 
					  "noDrafts": "无草稿",
 | 
				
			||||||
 | 
					  "articleDrafts": "文章草稿",
 | 
				
			||||||
 | 
					  "postDrafts": "帖子草稿",
 | 
				
			||||||
 | 
					  "saveDraft": "保存草稿",
 | 
				
			||||||
 | 
					  "draftSaved": "草稿已保存",
 | 
				
			||||||
 | 
					  "draftSaveFailed": "保存草稿失败",
 | 
				
			||||||
 | 
					  "clearAllDrafts": "清除全部草稿",
 | 
				
			||||||
 | 
					  "clearAllDraftsConfirm": "你确定要清除全部草稿?这一操作无法撤销。",
 | 
				
			||||||
 | 
					  "clearAll": "清除所有",
 | 
				
			||||||
 | 
					  "untitled": "未命名",
 | 
				
			||||||
 | 
					  "noContent": "内容为空",
 | 
				
			||||||
 | 
					  "justNow": "刚刚",
 | 
				
			||||||
 | 
					  "minutesAgo": "{} 分钟以前",
 | 
				
			||||||
 | 
					  "hoursAgo": "{} 小时以前",
 | 
				
			||||||
 | 
					  "daysAgo": "{} 天以前",
 | 
				
			||||||
 | 
					  "public": "公开的",
 | 
				
			||||||
 | 
					  "unlisted": "不列出",
 | 
				
			||||||
 | 
					  "friends": "朋友",
 | 
				
			||||||
 | 
					  "selected": "选择的",
 | 
				
			||||||
 | 
					  "private": "私密的",
 | 
				
			||||||
 | 
					  "postContentEmpty": "发布的内容不能为空",
 | 
				
			||||||
 | 
					  "share": "分享",
 | 
				
			||||||
 | 
					  "sharePost": "分享帖子",
 | 
				
			||||||
 | 
					  "quickActions": "快捷操作",
 | 
				
			||||||
 | 
					  "post": "发帖",
 | 
				
			||||||
 | 
					  "copy": "复制",
 | 
				
			||||||
 | 
					  "sendToChat": "发送到聊天",
 | 
				
			||||||
 | 
					  "failedToShareToPost": "分享到帖子失败:{}",
 | 
				
			||||||
 | 
					  "shareToChatComingSoon": "分享到聊天功能即将推出",
 | 
				
			||||||
 | 
					  "failedToShareToChat": "分享到聊天失败:{}",
 | 
				
			||||||
 | 
					  "shareToSpecificChatComingSoon": "分享到 {} 功能即将推出",
 | 
				
			||||||
 | 
					  "directChat": "私信",
 | 
				
			||||||
 | 
					  "systemShareComingSoon": "系统分享功能即将推出",
 | 
				
			||||||
 | 
					  "failedToShareToSystem": "分享到系统失败:{}",
 | 
				
			||||||
 | 
					  "failedToCopy": "复制失败:{}",
 | 
				
			||||||
 | 
					  "noChatRoomsAvailable": "无可用聊天室",
 | 
				
			||||||
 | 
					  "failedToLoadChats": "加载聊天失败",
 | 
				
			||||||
 | 
					  "contentToShare": "分享内容:",
 | 
				
			||||||
 | 
					  "unknownChat": "未知聊天",
 | 
				
			||||||
 | 
					  "addAdditionalMessage": "添加附加消息……",
 | 
				
			||||||
 | 
					  "uploadingFiles": "上传文件中……",
 | 
				
			||||||
 | 
					  "sharedSuccessfully": "分享成功!",
 | 
				
			||||||
 | 
					  "shareSuccess": "分享成功!",
 | 
				
			||||||
 | 
					  "shareToSpecificChatSuccess": "成功分享至 {}!",
 | 
				
			||||||
 | 
					  "wouldYouLikeToGoToChat": "是否前往该聊天?",
 | 
				
			||||||
 | 
					  "no": "否",
 | 
				
			||||||
 | 
					  "yes": "是",
 | 
				
			||||||
 | 
					  "navigateToChat": "前往聊天",
 | 
				
			||||||
 | 
					  "abuseReport": "举报",
 | 
				
			||||||
 | 
					  "abuseReportTitle": "举报内容",
 | 
				
			||||||
 | 
					  "abuseReportDescription": "举报不当内容或行为,协助维护社区安全。",
 | 
				
			||||||
 | 
					  "abuseReportType": "举报类型",
 | 
				
			||||||
 | 
					  "abuseReportReason": "补充详情",
 | 
				
			||||||
 | 
					  "abuseReportReasonHint": "请提供更多详情……",
 | 
				
			||||||
 | 
					  "abuseReportSubmit": "提交举报",
 | 
				
			||||||
 | 
					  "abuseReportSuccess": "举报提交成功,感谢你为社区维护作出贡献。",
 | 
				
			||||||
 | 
					  "abuseReportError": "无法提交举报,请稍后再试。",
 | 
				
			||||||
 | 
					  "abuseReportReasonRequired": "请提供关于此事件的细节",
 | 
				
			||||||
 | 
					  "abuseReportSuccessTitle": "举报已提交",
 | 
				
			||||||
 | 
					  "abuseReportErrorTitle": "错误",
 | 
				
			||||||
 | 
					  "abuseReportTypeSpam": "垃圾或错误信息",
 | 
				
			||||||
 | 
					  "abuseReportTypeHarassment": "骚扰或滥用",
 | 
				
			||||||
 | 
					  "abuseReportTypeInappropriate": "不合适的内容",
 | 
				
			||||||
 | 
					  "abuseReportTypeViolence": "暴力或人身威胁",
 | 
				
			||||||
 | 
					  "abuseReportTypeCopyright": "版权侵犯",
 | 
				
			||||||
 | 
					  "abuseReportTypeImpersonation": "冒充",
 | 
				
			||||||
 | 
					  "abuseReportTypeOffensiveContent": "冒犯性内容",
 | 
				
			||||||
 | 
					  "abuseReportTypePrivacyViolation": "隐私侵犯",
 | 
				
			||||||
 | 
					  "abuseReportTypeIllegalContent": "违法内容",
 | 
				
			||||||
 | 
					  "abuseReportTypeOther": "其他",
 | 
				
			||||||
 | 
					  "tags": "标签",
 | 
				
			||||||
 | 
					  "tagsHint": "输入标签,用英文逗号分隔",
 | 
				
			||||||
 | 
					  "categories": "分类",
 | 
				
			||||||
 | 
					  "categoriesHint": "输入分类,由逗号隔开",
 | 
				
			||||||
 | 
					  "chatNotJoined": "你还没有加入这个聊天。",
 | 
				
			||||||
 | 
					  "chatUnableJoin": "由于该聊天的访问设置使你无法加入。",
 | 
				
			||||||
 | 
					  "chatJoin": "加入聊天",
 | 
				
			||||||
 | 
					  "realmJoin": "加入领域",
 | 
				
			||||||
 | 
					  "realmJoinSuccess": "成功加入领域。",
 | 
				
			||||||
 | 
					  "search": "搜索",
 | 
				
			||||||
 | 
					  "publisherMembers": "合作者",
 | 
				
			||||||
 | 
					  "developerHub": "开发者中心",
 | 
				
			||||||
 | 
					  "developerHubUnselectedHint": "选择一名开发者查看总结数据或成为一名。",
 | 
				
			||||||
 | 
					  "enrollDeveloper": "成为一名开发者",
 | 
				
			||||||
 | 
					  "enrollDeveloperHint": "让你的一个发布者成为开发者。",
 | 
				
			||||||
 | 
					  "noPublishersToEnroll": "你没有可以成为开发者的发布者。",
 | 
				
			||||||
 | 
					  "totalCustomApps": "所有应用套件",
 | 
				
			||||||
 | 
					  "customApps": "应用套件",
 | 
				
			||||||
 | 
					  "noCustomApps": "还没有应用套件。",
 | 
				
			||||||
 | 
					  "createCustomApp": "创建应用套件",
 | 
				
			||||||
 | 
					  "editCustomApp": "编辑应用套件",
 | 
				
			||||||
 | 
					  "deleteCustomApp": "删除应用套件",
 | 
				
			||||||
 | 
					  "deleteCustomAppHint": "你确定要删除这个应用套件吗?这一步无法撤销。",
 | 
				
			||||||
 | 
					  "publicRealm": "公开领域",
 | 
				
			||||||
 | 
					  "publicRealmDescription": "所有人都可以预览这个领域的内容。",
 | 
				
			||||||
 | 
					  "communityRealm": "领域",
 | 
				
			||||||
 | 
					  "communityRealmDescription": "所有人都可以加入该领域并参与讨论,并将在发现和反馈页面显示。",
 | 
				
			||||||
 | 
					  "publicChat": "公开聊天",
 | 
				
			||||||
 | 
					  "publicChatDescription": "任何人都可以预览此聊天的内容。包括未加入的机器人。",
 | 
				
			||||||
 | 
					  "communityChat": "社区聊天",
 | 
				
			||||||
 | 
					  "communityChatDescription": "所有人都可以加入该聊天并参与参与讨论。",
 | 
				
			||||||
 | 
					  "appLinks": "应用链接",
 | 
				
			||||||
 | 
					  "homePageUrl": "主页链接",
 | 
				
			||||||
 | 
					  "privacyPolicyUrl": "隐私政策链接",
 | 
				
			||||||
 | 
					  "termsOfServiceUrl": "用户协议链接",
 | 
				
			||||||
 | 
					  "oauthConfig": "OAuth 配置",
 | 
				
			||||||
 | 
					  "clientUri": "客户端 URI",
 | 
				
			||||||
 | 
					  "redirectUris": "重定向 URIs",
 | 
				
			||||||
 | 
					  "addRedirectUri": "添加重定向 URI",
 | 
				
			||||||
 | 
					  "allowedScopes": "允许的范围",
 | 
				
			||||||
 | 
					  "requirePkce": "需要 PKCE",
 | 
				
			||||||
 | 
					  "allowOfflineAccess": "允许离线访问",
 | 
				
			||||||
 | 
					  "redirectUri": "重定向 URI",
 | 
				
			||||||
 | 
					  "redirectUriHint": "重定向 URI 用于 OAuth 认证,但您的项目状态转为线上时我们会验证请求中的重定向 URI 是否符合此配置。",
 | 
				
			||||||
 | 
					  "uriRequired": "这个 URI 是必须填写的。",
 | 
				
			||||||
 | 
					  "uriInvalid": "无效 URI。",
 | 
				
			||||||
 | 
					  "add": "添加",
 | 
				
			||||||
 | 
					  "addScope": "添加范围",
 | 
				
			||||||
 | 
					  "scope": "范围",
 | 
				
			||||||
 | 
					  "publisherFeatures": "功能",
 | 
				
			||||||
 | 
					  "publisherFeatureDevelop": "开发者计划",
 | 
				
			||||||
 | 
					  "publisherFeatureDevelopDescription": "为你的开发者解锁包括应用套件,API 及更多开发功能。",
 | 
				
			||||||
 | 
					  "publisherFeatureDevelopHint": "目前该功能还在开发中,你需要邀请才可解锁。",
 | 
				
			||||||
 | 
					  "learnMore": "了解更多",
 | 
				
			||||||
 | 
					  "discoverWebArticles": "来自站外的文章",
 | 
				
			||||||
 | 
					  "webArticlesStand": "文章亭",
 | 
				
			||||||
 | 
					  "about": "关于",
 | 
				
			||||||
 | 
					  "somethingWentWrong": "发生了一些错误",
 | 
				
			||||||
 | 
					  "editedAt": "编辑于 {}",
 | 
				
			||||||
 | 
					  "addAudio": "添加音频",
 | 
				
			||||||
 | 
					  "recordAudio": "录制音频",
 | 
				
			||||||
 | 
					  "linkAttachment": "链接附件",
 | 
				
			||||||
 | 
					  "fileIdCannotBeEmpty": "文件 ID 不能为空",
 | 
				
			||||||
 | 
					  "fileIdLinkHint": "还没有上传到 Solar Network?点击此处打开 Solar Network Drive,自定义您的上传内容。",
 | 
				
			||||||
 | 
					  "failedToFetchFile": "获取文件失败:{}",
 | 
				
			||||||
 | 
					  "callLeave": "离开",
 | 
				
			||||||
 | 
					  "callEnd": "挂断通话",
 | 
				
			||||||
 | 
					  "postType": "帖子类型",
 | 
				
			||||||
 | 
					  "articleAttachmentHint": "附件必须上传并插入到文章主体中才能显示出来。",
 | 
				
			||||||
 | 
					  "postVisibility": "可见性",
 | 
				
			||||||
 | 
					  "currentMembershipMember": "恒星计划成员 · {}",
 | 
				
			||||||
 | 
					  "membershipPriceStellar": "需要用户等级 3+,每月价格 1200 NSP",
 | 
				
			||||||
 | 
					  "membershipPriceNova": "需要用户等级 6+,每月价格 2400 NSP",
 | 
				
			||||||
 | 
					  "membershipPriceSupernova": "需要用户等级 9+,每月价格 3600 NSP",
 | 
				
			||||||
 | 
					  "sharePostPhoto": "通过图片分享帖子",
 | 
				
			||||||
 | 
					  "wouldYouLikeToNavigateToChat": "你想要前往聊天页面吗?",
 | 
				
			||||||
 | 
					  "abuseReports": "举报",
 | 
				
			||||||
 | 
					  "discoverRealms": "发现领域",
 | 
				
			||||||
 | 
					  "discoverPublishers": "发现发布者",
 | 
				
			||||||
 | 
					  "membershipCancel": "取消会员订阅",
 | 
				
			||||||
 | 
					  "membershipCancelConfirm": "你确定要取消会员订阅吗?",
 | 
				
			||||||
 | 
					  "membershipCancelHint": "你确定要取消会员订阅吗?你将不会再次被扣费。你的会员资格将在当前计费周期结束前保持有效。并且你将无法重新订阅,直到当前订阅结束。",
 | 
				
			||||||
 | 
					  "membershipCancelSuccess": "你的会员订阅已成功取消。",
 | 
				
			||||||
 | 
					  "aboutScreenTitle": "关于",
 | 
				
			||||||
 | 
					  "aboutScreenVersionInfo": "版本 {} ({})",
 | 
				
			||||||
 | 
					  "aboutScreenAppInfoSectionTitle": "应用信息",
 | 
				
			||||||
 | 
					  "aboutScreenPackageNameLabel": "包名",
 | 
				
			||||||
 | 
					  "aboutScreenVersionLabel": "版本",
 | 
				
			||||||
 | 
					  "aboutScreenBuildNumberLabel": "构建编号",
 | 
				
			||||||
 | 
					  "aboutScreenLinksSectionTitle": "链接",
 | 
				
			||||||
 | 
					  "aboutScreenPrivacyPolicyTitle": "隐私政策",
 | 
				
			||||||
 | 
					  "aboutScreenTermsOfServiceTitle": "服务条款",
 | 
				
			||||||
 | 
					  "aboutScreenOpenSourceLicensesTitle": "开源许可",
 | 
				
			||||||
 | 
					  "aboutScreenDeveloperSectionTitle": "开发者",
 | 
				
			||||||
 | 
					  "aboutScreenContactUsTitle": "联系我们",
 | 
				
			||||||
 | 
					  "aboutScreenLicenseTitle": "许可",
 | 
				
			||||||
 | 
					  "aboutScreenLicenseContent": "无法翻译",
 | 
				
			||||||
 | 
					  "aboutScreenCopyright": "版权所有 © Solsynth {}",
 | 
				
			||||||
 | 
					  "aboutScreenMadeWith": "由 Solar Network 团队用 ❤︎️ 制作",
 | 
				
			||||||
 | 
					  "aboutScreenFailedToLoadPackageInfo": "无法加载包信息:{error}",
 | 
				
			||||||
 | 
					  "copiedToClipboard": "已复制到剪贴板",
 | 
				
			||||||
 | 
					  "copyToClipboardTooltip": "复制到剪贴板",
 | 
				
			||||||
 | 
					  "postForwardingTo": "正在转发到",
 | 
				
			||||||
 | 
					  "postReplyingTo": "正在回复",
 | 
				
			||||||
 | 
					  "postReplyPlaceholder": "发表你的回复",
 | 
				
			||||||
 | 
					  "postEditing": "你正在编辑一个现有的帖子",
 | 
				
			||||||
 | 
					  "postArticle": "文章",
 | 
				
			||||||
 | 
					  "aboutDeviceName": "设备名称",
 | 
				
			||||||
 | 
					  "aboutDeviceIdentifier": "设备标识符",
 | 
				
			||||||
 | 
					  "donate": "捐赠",
 | 
				
			||||||
 | 
					  "donateDescription": "支持我们继续开发 Solar Network,并维持服务器运行。",
 | 
				
			||||||
 | 
					  "fileId": "文件 ID",
 | 
				
			||||||
 | 
					  "fileIdHint": "文件 ID 是你通过 Solar Network Drive 上传文件后获得的 ID。",
 | 
				
			||||||
 | 
					  "translate": "翻译",
 | 
				
			||||||
 | 
					  "translating": "正在翻译",
 | 
				
			||||||
 | 
					  "translated": "已翻译",
 | 
				
			||||||
 | 
					  "reactionThumbUp": "赞",
 | 
				
			||||||
 | 
					  "reactionThumbDown": "踩",
 | 
				
			||||||
 | 
					  "reactionJustOkay": "还行",
 | 
				
			||||||
 | 
					  "reactionCry": "哭",
 | 
				
			||||||
 | 
					  "reactionConfuse": "困惑",
 | 
				
			||||||
 | 
					  "reactionClap": "鼓掌",
 | 
				
			||||||
 | 
					  "reactionLaugh": "笑",
 | 
				
			||||||
 | 
					  "reactionAngry": "生气",
 | 
				
			||||||
 | 
					  "reactionParty": "派对",
 | 
				
			||||||
 | 
					  "reactionPray": "祈祷",
 | 
				
			||||||
 | 
					  "reactionHeart": "爱心",
 | 
				
			||||||
 | 
					  "selectMicrophone": "选择麦克风",
 | 
				
			||||||
 | 
					  "selectCamera": "选择摄像头",
 | 
				
			||||||
 | 
					  "switchedTo": "已切换到 {}",
 | 
				
			||||||
 | 
					  "connecting": "正在连接",
 | 
				
			||||||
 | 
					  "reconnecting": "正在重新连接",
 | 
				
			||||||
 | 
					  "disconnected": "已断开连接",
 | 
				
			||||||
 | 
					  "connected": "已连接",
 | 
				
			||||||
 | 
					  "repliesLoadMore": "加载更多回复",
 | 
				
			||||||
 | 
					  "attachmentsRecentUploads": "最近上传",
 | 
				
			||||||
 | 
					  "attachmentsManualInput": "手动输入",
 | 
				
			||||||
 | 
					  "crop": "裁剪",
 | 
				
			||||||
 | 
					  "rename": "重命名",
 | 
				
			||||||
 | 
					  "markAsSensitive": "标记为敏感",
 | 
				
			||||||
 | 
					  "fileName": "文件名",
 | 
				
			||||||
 | 
					  "sensitiveCategories": {
 | 
				
			||||||
 | 
					    "language": "语言",
 | 
				
			||||||
 | 
					    "sexualContent": "色情内容",
 | 
				
			||||||
 | 
					    "violence": "暴力",
 | 
				
			||||||
 | 
					    "profanity": "亵渎",
 | 
				
			||||||
 | 
					    "hateSpeech": "仇恨言论",
 | 
				
			||||||
 | 
					    "racism": "种族主义",
 | 
				
			||||||
 | 
					    "adultContent": "成人内容",
 | 
				
			||||||
 | 
					    "drugAbuse": "药物滥用",
 | 
				
			||||||
 | 
					    "alcoholAbuse": "酗酒",
 | 
				
			||||||
 | 
					    "gambling": "赌博",
 | 
				
			||||||
 | 
					    "selfHarm": "自残",
 | 
				
			||||||
 | 
					    "childAbuse": "虐待儿童",
 | 
				
			||||||
 | 
					    "other": "其他"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "poll": "投票",
 | 
				
			||||||
 | 
					  "pollsRecent": "最近投票",
 | 
				
			||||||
 | 
					  "pollCreateNew": "创建新投票",
 | 
				
			||||||
 | 
					  "pollCreateNewHint": "为你的帖子创建一个新投票。选择一个发布者然后继续。",
 | 
				
			||||||
 | 
					  "publisher": "发布者",
 | 
				
			||||||
 | 
					  "publisherHint": "输入发布者名称",
 | 
				
			||||||
 | 
					  "publisherCannotBeEmpty": "发布者不能为空",
 | 
				
			||||||
 | 
					  "operationFailed": "操作失败:{}",
 | 
				
			||||||
 | 
					  "stickerMarketplace": "贴纸市场",
 | 
				
			||||||
 | 
					  "stickerPackAdded": "贴纸包已添加到你的收藏",
 | 
				
			||||||
 | 
					  "stickerPackRemoved": "贴纸包已从你的收藏中移除",
 | 
				
			||||||
 | 
					  "addPack": "添加贴纸包",
 | 
				
			||||||
 | 
					  "removePack": "移除贴纸包",
 | 
				
			||||||
 | 
					  "browseAndAddStickers": "浏览并添加贴纸包",
 | 
				
			||||||
 | 
					  "stickerPack": "贴纸包",
 | 
				
			||||||
 | 
					  "postCategoryTechnology": "科技",
 | 
				
			||||||
 | 
					  "postCategoryTravel": "旅行",
 | 
				
			||||||
 | 
					  "postCategoryFood": "美食",
 | 
				
			||||||
 | 
					  "postCategoryHealth": "健康",
 | 
				
			||||||
 | 
					  "postCategoryScience": "科学",
 | 
				
			||||||
 | 
					  "postCategorySports": "体育",
 | 
				
			||||||
 | 
					  "postCategoryFinance": "金融",
 | 
				
			||||||
 | 
					  "postCategoryLife": "生活",
 | 
				
			||||||
 | 
					  "postCategoryArt": "艺术",
 | 
				
			||||||
 | 
					  "postCategoryStudy": "学习",
 | 
				
			||||||
 | 
					  "postCategoryGaming": "游戏",
 | 
				
			||||||
 | 
					  "postCategoryProgramming": "编程",
 | 
				
			||||||
 | 
					  "postCategoryMusic": "音乐",
 | 
				
			||||||
 | 
					  "links": "链接",
 | 
				
			||||||
 | 
					  "addLink": "添加链接",
 | 
				
			||||||
 | 
					  "linkKey": "链接名称",
 | 
				
			||||||
 | 
					  "linkValue": "链接",
 | 
				
			||||||
 | 
					  "debugOptions": "调试选项",
 | 
				
			||||||
 | 
					  "joinedAt": "加入于 {}",
 | 
				
			||||||
 | 
					  "searchAccounts": "搜索帐号……",
 | 
				
			||||||
 | 
					  "webFeeds": "订阅源",
 | 
				
			||||||
 | 
					  "polls": "投票",
 | 
				
			||||||
 | 
					  "sharePostSlogan": "加入 Solar Network 以便探索更多",
 | 
				
			||||||
 | 
					  "filesListAdditional": {
 | 
				
			||||||
 | 
					    "one": "+{} 个文件被折叠",
 | 
				
			||||||
 | 
					    "other": "+{} 个文件被折叠"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "messageJumpNotLoaded": "引用的消息没有被加载,无法跳转。",
 | 
				
			||||||
 | 
					  "postUnlinkRealm": "不关联领域",
 | 
				
			||||||
 | 
					  "postSlug": "别名",
 | 
				
			||||||
 | 
					  "postSlugHint": "这个别名可以用于在网页通过 URL 浏览到你的帖子,它应该在同一发布者中是唯一。",
 | 
				
			||||||
 | 
					  "attachmentOnDevice": "离线",
 | 
				
			||||||
 | 
					  "attachmentOnCloud": "在线",
 | 
				
			||||||
 | 
					  "publisherCollabInvitation": "协作邀请",
 | 
				
			||||||
 | 
					  "publisherCollabInvitationCount": {
 | 
				
			||||||
 | 
					    "zero": "无邀请",
 | 
				
			||||||
 | 
					    "one": "{} 个可用邀请",
 | 
				
			||||||
 | 
					    "other": "{} 个可用邀请"
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "failedToLoadUserInfo": "加载用户信息失败",
 | 
				
			||||||
 | 
					  "failedToLoadUserInfoNetwork": "这看起来是个网络问题,你可以按下面的按钮来重试",
 | 
				
			||||||
 | 
					  "failedToLoadUserInfoUnauthorized": "看来您的会话已被注销或不再可用,如果您愿意,您仍然可以再次尝试获取用户信息。",
 | 
				
			||||||
 | 
					  "okay": "了解",
 | 
				
			||||||
 | 
					  "postDetails": "帖子详情",
 | 
				
			||||||
 | 
					  "mimeType": "类型",
 | 
				
			||||||
 | 
					  "fileSize": "大小",
 | 
				
			||||||
 | 
					  "fileHash": "哈希",
 | 
				
			||||||
 | 
					  "exifData": "EXIF 数据",
 | 
				
			||||||
 | 
					  "leveling": "等级",
 | 
				
			||||||
 | 
					  "levelingHistory": "经验记录",
 | 
				
			||||||
 | 
					  "stellarProgram": "恒星计划",
 | 
				
			||||||
 | 
					  "socialCredits": "社会信用点",
 | 
				
			||||||
 | 
					  "credits": "信用",
 | 
				
			||||||
 | 
					  "socialCreditsDescription": "社会信用是 Solar Network 评价用户的一种方式。它基于用户的行为和互动来计算。以 100 分为基准,分数越高表示用户在社区中的信誉越好。分数会随着时间的推移而变化,反映用户的最新行为。信用等级高的用户可以享受到更多的福利,反之的用户部份功能可能受到限制。",
 | 
				
			||||||
 | 
					  "socialCreditsLevelPoor": "糟糕",
 | 
				
			||||||
 | 
					  "socialCreditsLevelNormal": "正常",
 | 
				
			||||||
 | 
					  "socialCreditsLevelGood": "良好",
 | 
				
			||||||
 | 
					  "socialCreditsLevelExcellent": "优秀",
 | 
				
			||||||
 | 
					  "appDetails": "应用详情",
 | 
				
			||||||
 | 
					  "secrets": "密钥",
 | 
				
			||||||
 | 
					  "appNotFound": "应用未找到。",
 | 
				
			||||||
 | 
					  "secretCopied": "密钥已复制到剪贴板。",
 | 
				
			||||||
 | 
					  "deleteSecret": "删除密钥",
 | 
				
			||||||
 | 
					  "deleteSecretHint": "您确定要删除此密钥吗?此操作无法撤销。",
 | 
				
			||||||
 | 
					  "generateSecret": "生成新密钥",
 | 
				
			||||||
 | 
					  "createdAt": "创建于 {}",
 | 
				
			||||||
 | 
					  "newSecretGenerated": "已生成新密钥",
 | 
				
			||||||
 | 
					  "copySecretHint": "请复制此密钥并将其存放在安全的地方。您将无法再次看到它。",
 | 
				
			||||||
 | 
					  "expiresIn": "过期时间(秒)",
 | 
				
			||||||
 | 
					  "isOidc": "OIDC 兼容"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								assets/icons/icon.ico
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/icons/icon.ico
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 108 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								assets/images/media-offline.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								assets/images/media-offline.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 307 KiB  | 
@@ -1 +1 @@
 | 
				
			|||||||
{"flutter":{"platforms":{"android":{"default":{"projectId":"solian-0x001","appId":"1:961776991058:android:a8d3f7995b0b8e86f4188b","fileOutput":"android/app/google-services.json"}},"ios":{"default":{"projectId":"solian-0x001","appId":"1:961776991058:ios:727229d368cc47e1f4188b","uploadDebugSymbols":false,"fileOutput":"ios/Runner/GoogleService-Info.plist"}},"macos":{"default":{"projectId":"solian-0x001","appId":"1:961776991058:ios:727229d368cc47e1f4188b","uploadDebugSymbols":false,"fileOutput":"macos/Runner/GoogleService-Info.plist"}},"dart":{"lib/firebase_options.dart":{"projectId":"solian-0x001","configurations":{"android":"1:961776991058:android:a8d3f7995b0b8e86f4188b","ios":"1:961776991058:ios:727229d368cc47e1f4188b","macos":"1:961776991058:ios:727229d368cc47e1f4188b","web":"1:961776991058:web:b91d12f2892a5609f4188b","windows":"1:961776991058:web:3a912c0eb14028e5f4188b"}}}}}}
 | 
					{"flutter":{"platforms":{"android":{"default":{"projectId":"solian-0x001","appId":"1:961776991058:android:a8d3f7995b0b8e86f4188b","fileOutput":"android/app/google-services.json"}},"ios":{"default":{"projectId":"solian-0x001","appId":"1:961776991058:ios:727229d368cc47e1f4188b","uploadDebugSymbols":false,"fileOutput":"ios/Runner/GoogleService-Info.plist"}},"macos":{"default":{"projectId":"solian-0x001","appId":"1:961776991058:ios:727229d368cc47e1f4188b","uploadDebugSymbols":false,"fileOutput":"macos/Runner/GoogleService-Info.plist"}},"dart":{"lib/firebase_options.dart":{"projectId":"solian-0x001","configurations":{"android":"1:961776991058:android:a8d3f7995b0b8e86f4188b","ios":"1:961776991058:ios:727229d368cc47e1f4188b","macos":"1:961776991058:ios:727229d368cc47e1f4188b","web":"1:961776991058:web:3a912c0eb14028e5f4188b","windows":"1:961776991058:web:3a912c0eb14028e5f4188b"}}}}}}
 | 
				
			||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
# Uncomment this line to define a global platform for your project
 | 
					# Uncomment this line to define a global platform for your project
 | 
				
			||||||
platform :ios, '13.0'
 | 
					platform :ios, '15.0'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
 | 
					# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
 | 
				
			||||||
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
 | 
					ENV['COCOAPODS_DISABLE_STATS'] = 'true'
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										212
									
								
								ios/Podfile.lock
									
									
									
									
									
								
							
							
						
						
									
										212
									
								
								ios/Podfile.lock
									
									
									
									
									
								
							@@ -40,39 +40,91 @@ PODS:
 | 
				
			|||||||
  - file_picker (0.0.1):
 | 
					  - file_picker (0.0.1):
 | 
				
			||||||
    - DKImagePickerController/PhotoGallery
 | 
					    - DKImagePickerController/PhotoGallery
 | 
				
			||||||
    - Flutter
 | 
					    - Flutter
 | 
				
			||||||
  - Firebase/CoreOnly (11.15.0):
 | 
					  - Firebase/CoreOnly (12.0.0):
 | 
				
			||||||
    - FirebaseCore (~> 11.15.0)
 | 
					    - FirebaseCore (~> 12.0.0)
 | 
				
			||||||
  - Firebase/Messaging (11.15.0):
 | 
					  - Firebase/Crashlytics (12.0.0):
 | 
				
			||||||
    - Firebase/CoreOnly
 | 
					    - Firebase/CoreOnly
 | 
				
			||||||
    - FirebaseMessaging (~> 11.15.0)
 | 
					    - FirebaseCrashlytics (~> 12.0.0)
 | 
				
			||||||
  - firebase_core (3.15.0):
 | 
					  - Firebase/Messaging (12.0.0):
 | 
				
			||||||
    - Firebase/CoreOnly (= 11.15.0)
 | 
					    - Firebase/CoreOnly
 | 
				
			||||||
 | 
					    - FirebaseMessaging (~> 12.0.0)
 | 
				
			||||||
 | 
					  - firebase_analytics (12.0.0):
 | 
				
			||||||
 | 
					    - firebase_core
 | 
				
			||||||
 | 
					    - FirebaseAnalytics (= 12.0.0)
 | 
				
			||||||
    - Flutter
 | 
					    - Flutter
 | 
				
			||||||
  - firebase_messaging (15.2.8):
 | 
					  - firebase_core (4.0.0):
 | 
				
			||||||
    - Firebase/Messaging (= 11.15.0)
 | 
					    - Firebase/CoreOnly (= 12.0.0)
 | 
				
			||||||
 | 
					    - Flutter
 | 
				
			||||||
 | 
					  - firebase_crashlytics (5.0.0):
 | 
				
			||||||
 | 
					    - Firebase/Crashlytics (= 12.0.0)
 | 
				
			||||||
    - firebase_core
 | 
					    - firebase_core
 | 
				
			||||||
    - Flutter
 | 
					    - Flutter
 | 
				
			||||||
  - FirebaseCore (11.15.0):
 | 
					  - firebase_messaging (16.0.0):
 | 
				
			||||||
    - FirebaseCoreInternal (~> 11.15.0)
 | 
					    - Firebase/Messaging (= 12.0.0)
 | 
				
			||||||
 | 
					    - firebase_core
 | 
				
			||||||
 | 
					    - Flutter
 | 
				
			||||||
 | 
					  - FirebaseAnalytics (12.0.0):
 | 
				
			||||||
 | 
					    - FirebaseAnalytics/Default (= 12.0.0)
 | 
				
			||||||
 | 
					    - FirebaseCore (~> 12.0.0)
 | 
				
			||||||
 | 
					    - FirebaseInstallations (~> 12.0.0)
 | 
				
			||||||
 | 
					    - GoogleUtilities/AppDelegateSwizzler (~> 8.1)
 | 
				
			||||||
 | 
					    - GoogleUtilities/MethodSwizzler (~> 8.1)
 | 
				
			||||||
 | 
					    - GoogleUtilities/Network (~> 8.1)
 | 
				
			||||||
 | 
					    - "GoogleUtilities/NSData+zlib (~> 8.1)"
 | 
				
			||||||
 | 
					    - nanopb (~> 3.30910.0)
 | 
				
			||||||
 | 
					  - FirebaseAnalytics/Default (12.0.0):
 | 
				
			||||||
 | 
					    - FirebaseCore (~> 12.0.0)
 | 
				
			||||||
 | 
					    - FirebaseInstallations (~> 12.0.0)
 | 
				
			||||||
 | 
					    - GoogleAppMeasurement/Default (= 12.0.0)
 | 
				
			||||||
 | 
					    - GoogleUtilities/AppDelegateSwizzler (~> 8.1)
 | 
				
			||||||
 | 
					    - GoogleUtilities/MethodSwizzler (~> 8.1)
 | 
				
			||||||
 | 
					    - GoogleUtilities/Network (~> 8.1)
 | 
				
			||||||
 | 
					    - "GoogleUtilities/NSData+zlib (~> 8.1)"
 | 
				
			||||||
 | 
					    - nanopb (~> 3.30910.0)
 | 
				
			||||||
 | 
					  - FirebaseCore (12.0.0):
 | 
				
			||||||
 | 
					    - FirebaseCoreInternal (~> 12.0.0)
 | 
				
			||||||
    - GoogleUtilities/Environment (~> 8.1)
 | 
					    - GoogleUtilities/Environment (~> 8.1)
 | 
				
			||||||
    - GoogleUtilities/Logger (~> 8.1)
 | 
					    - GoogleUtilities/Logger (~> 8.1)
 | 
				
			||||||
  - FirebaseCoreInternal (11.15.0):
 | 
					  - FirebaseCoreExtension (12.0.0):
 | 
				
			||||||
 | 
					    - FirebaseCore (~> 12.0.0)
 | 
				
			||||||
 | 
					  - FirebaseCoreInternal (12.0.0):
 | 
				
			||||||
    - "GoogleUtilities/NSData+zlib (~> 8.1)"
 | 
					    - "GoogleUtilities/NSData+zlib (~> 8.1)"
 | 
				
			||||||
  - FirebaseInstallations (11.15.0):
 | 
					  - FirebaseCrashlytics (12.0.0):
 | 
				
			||||||
    - FirebaseCore (~> 11.15.0)
 | 
					    - FirebaseCore (~> 12.0.0)
 | 
				
			||||||
 | 
					    - FirebaseInstallations (~> 12.0.0)
 | 
				
			||||||
 | 
					    - FirebaseRemoteConfigInterop (~> 12.0.0)
 | 
				
			||||||
 | 
					    - FirebaseSessions (~> 12.0.0)
 | 
				
			||||||
 | 
					    - GoogleDataTransport (~> 10.1)
 | 
				
			||||||
 | 
					    - GoogleUtilities/Environment (~> 8.1)
 | 
				
			||||||
 | 
					    - nanopb (~> 3.30910.0)
 | 
				
			||||||
 | 
					    - PromisesObjC (~> 2.4)
 | 
				
			||||||
 | 
					  - FirebaseInstallations (12.0.0):
 | 
				
			||||||
 | 
					    - FirebaseCore (~> 12.0.0)
 | 
				
			||||||
    - GoogleUtilities/Environment (~> 8.1)
 | 
					    - GoogleUtilities/Environment (~> 8.1)
 | 
				
			||||||
    - GoogleUtilities/UserDefaults (~> 8.1)
 | 
					    - GoogleUtilities/UserDefaults (~> 8.1)
 | 
				
			||||||
    - PromisesObjC (~> 2.4)
 | 
					    - PromisesObjC (~> 2.4)
 | 
				
			||||||
  - FirebaseMessaging (11.15.0):
 | 
					  - FirebaseMessaging (12.0.0):
 | 
				
			||||||
    - FirebaseCore (~> 11.15.0)
 | 
					    - FirebaseCore (~> 12.0.0)
 | 
				
			||||||
    - FirebaseInstallations (~> 11.0)
 | 
					    - FirebaseInstallations (~> 12.0.0)
 | 
				
			||||||
    - GoogleDataTransport (~> 10.0)
 | 
					    - GoogleDataTransport (~> 10.1)
 | 
				
			||||||
    - GoogleUtilities/AppDelegateSwizzler (~> 8.1)
 | 
					    - GoogleUtilities/AppDelegateSwizzler (~> 8.1)
 | 
				
			||||||
    - GoogleUtilities/Environment (~> 8.1)
 | 
					    - GoogleUtilities/Environment (~> 8.1)
 | 
				
			||||||
    - GoogleUtilities/Reachability (~> 8.1)
 | 
					    - GoogleUtilities/Reachability (~> 8.1)
 | 
				
			||||||
    - GoogleUtilities/UserDefaults (~> 8.1)
 | 
					    - GoogleUtilities/UserDefaults (~> 8.1)
 | 
				
			||||||
    - nanopb (~> 3.30910.0)
 | 
					    - nanopb (~> 3.30910.0)
 | 
				
			||||||
 | 
					  - FirebaseRemoteConfigInterop (12.0.0)
 | 
				
			||||||
 | 
					  - FirebaseSessions (12.0.0):
 | 
				
			||||||
 | 
					    - FirebaseCore (~> 12.0.0)
 | 
				
			||||||
 | 
					    - FirebaseCoreExtension (~> 12.0.0)
 | 
				
			||||||
 | 
					    - FirebaseInstallations (~> 12.0.0)
 | 
				
			||||||
 | 
					    - GoogleDataTransport (~> 10.1)
 | 
				
			||||||
 | 
					    - GoogleUtilities/Environment (~> 8.1)
 | 
				
			||||||
 | 
					    - GoogleUtilities/UserDefaults (~> 8.1)
 | 
				
			||||||
 | 
					    - nanopb (~> 3.30910.0)
 | 
				
			||||||
 | 
					    - PromisesSwift (~> 2.1)
 | 
				
			||||||
  - Flutter (1.0.0)
 | 
					  - Flutter (1.0.0)
 | 
				
			||||||
 | 
					  - flutter_app_update (0.0.1):
 | 
				
			||||||
 | 
					    - Flutter
 | 
				
			||||||
  - flutter_inappwebview_ios (0.0.1):
 | 
					  - flutter_inappwebview_ios (0.0.1):
 | 
				
			||||||
    - Flutter
 | 
					    - Flutter
 | 
				
			||||||
    - flutter_inappwebview_ios/Core (= 0.0.1)
 | 
					    - flutter_inappwebview_ios/Core (= 0.0.1)
 | 
				
			||||||
@@ -93,12 +145,38 @@ PODS:
 | 
				
			|||||||
  - flutter_udid (0.0.1):
 | 
					  - flutter_udid (0.0.1):
 | 
				
			||||||
    - Flutter
 | 
					    - Flutter
 | 
				
			||||||
    - SAMKeychain
 | 
					    - SAMKeychain
 | 
				
			||||||
  - flutter_webrtc (0.14.0):
 | 
					  - flutter_webrtc (1.0.0):
 | 
				
			||||||
    - Flutter
 | 
					    - Flutter
 | 
				
			||||||
    - WebRTC-SDK (= 125.6422.07)
 | 
					    - WebRTC-SDK (= 137.7151.02)
 | 
				
			||||||
  - gal (1.0.0):
 | 
					  - gal (1.0.0):
 | 
				
			||||||
    - Flutter
 | 
					    - Flutter
 | 
				
			||||||
    - FlutterMacOS
 | 
					    - FlutterMacOS
 | 
				
			||||||
 | 
					  - GoogleAdsOnDeviceConversion (2.1.0):
 | 
				
			||||||
 | 
					    - GoogleUtilities/Logger (~> 8.1)
 | 
				
			||||||
 | 
					    - GoogleUtilities/Network (~> 8.1)
 | 
				
			||||||
 | 
					    - nanopb (~> 3.30910.0)
 | 
				
			||||||
 | 
					  - GoogleAppMeasurement/Core (12.0.0):
 | 
				
			||||||
 | 
					    - GoogleUtilities/AppDelegateSwizzler (~> 8.1)
 | 
				
			||||||
 | 
					    - GoogleUtilities/MethodSwizzler (~> 8.1)
 | 
				
			||||||
 | 
					    - GoogleUtilities/Network (~> 8.1)
 | 
				
			||||||
 | 
					    - "GoogleUtilities/NSData+zlib (~> 8.1)"
 | 
				
			||||||
 | 
					    - nanopb (~> 3.30910.0)
 | 
				
			||||||
 | 
					  - GoogleAppMeasurement/Default (12.0.0):
 | 
				
			||||||
 | 
					    - GoogleAdsOnDeviceConversion (= 2.1.0)
 | 
				
			||||||
 | 
					    - GoogleAppMeasurement/Core (= 12.0.0)
 | 
				
			||||||
 | 
					    - GoogleAppMeasurement/IdentitySupport (= 12.0.0)
 | 
				
			||||||
 | 
					    - GoogleUtilities/AppDelegateSwizzler (~> 8.1)
 | 
				
			||||||
 | 
					    - GoogleUtilities/MethodSwizzler (~> 8.1)
 | 
				
			||||||
 | 
					    - GoogleUtilities/Network (~> 8.1)
 | 
				
			||||||
 | 
					    - "GoogleUtilities/NSData+zlib (~> 8.1)"
 | 
				
			||||||
 | 
					    - nanopb (~> 3.30910.0)
 | 
				
			||||||
 | 
					  - GoogleAppMeasurement/IdentitySupport (12.0.0):
 | 
				
			||||||
 | 
					    - GoogleAppMeasurement/Core (= 12.0.0)
 | 
				
			||||||
 | 
					    - GoogleUtilities/AppDelegateSwizzler (~> 8.1)
 | 
				
			||||||
 | 
					    - GoogleUtilities/MethodSwizzler (~> 8.1)
 | 
				
			||||||
 | 
					    - GoogleUtilities/Network (~> 8.1)
 | 
				
			||||||
 | 
					    - "GoogleUtilities/NSData+zlib (~> 8.1)"
 | 
				
			||||||
 | 
					    - nanopb (~> 3.30910.0)
 | 
				
			||||||
  - GoogleDataTransport (10.1.0):
 | 
					  - GoogleDataTransport (10.1.0):
 | 
				
			||||||
    - nanopb (~> 3.30910.0)
 | 
					    - nanopb (~> 3.30910.0)
 | 
				
			||||||
    - PromisesObjC (~> 2.4)
 | 
					    - PromisesObjC (~> 2.4)
 | 
				
			||||||
@@ -112,6 +190,9 @@ PODS:
 | 
				
			|||||||
  - GoogleUtilities/Logger (8.1.0):
 | 
					  - GoogleUtilities/Logger (8.1.0):
 | 
				
			||||||
    - GoogleUtilities/Environment
 | 
					    - GoogleUtilities/Environment
 | 
				
			||||||
    - GoogleUtilities/Privacy
 | 
					    - GoogleUtilities/Privacy
 | 
				
			||||||
 | 
					  - GoogleUtilities/MethodSwizzler (8.1.0):
 | 
				
			||||||
 | 
					    - GoogleUtilities/Logger
 | 
				
			||||||
 | 
					    - GoogleUtilities/Privacy
 | 
				
			||||||
  - GoogleUtilities/Network (8.1.0):
 | 
					  - GoogleUtilities/Network (8.1.0):
 | 
				
			||||||
    - GoogleUtilities/Logger
 | 
					    - GoogleUtilities/Logger
 | 
				
			||||||
    - "GoogleUtilities/NSData+zlib"
 | 
					    - "GoogleUtilities/NSData+zlib"
 | 
				
			||||||
@@ -130,11 +211,11 @@ PODS:
 | 
				
			|||||||
    - Flutter
 | 
					    - Flutter
 | 
				
			||||||
  - irondash_engine_context (0.0.1):
 | 
					  - irondash_engine_context (0.0.1):
 | 
				
			||||||
    - Flutter
 | 
					    - Flutter
 | 
				
			||||||
  - Kingfisher (8.3.3)
 | 
					  - Kingfisher (8.5.0)
 | 
				
			||||||
  - livekit_client (2.4.9):
 | 
					  - livekit_client (2.5.0):
 | 
				
			||||||
    - Flutter
 | 
					    - Flutter
 | 
				
			||||||
    - flutter_webrtc
 | 
					    - flutter_webrtc
 | 
				
			||||||
    - WebRTC-SDK (= 125.6422.07)
 | 
					    - WebRTC-SDK (= 137.7151.02)
 | 
				
			||||||
  - local_auth_darwin (0.0.1):
 | 
					  - local_auth_darwin (0.0.1):
 | 
				
			||||||
    - Flutter
 | 
					    - Flutter
 | 
				
			||||||
    - FlutterMacOS
 | 
					    - FlutterMacOS
 | 
				
			||||||
@@ -160,9 +241,11 @@ PODS:
 | 
				
			|||||||
  - pointer_interceptor_ios (0.0.1):
 | 
					  - pointer_interceptor_ios (0.0.1):
 | 
				
			||||||
    - Flutter
 | 
					    - Flutter
 | 
				
			||||||
  - PromisesObjC (2.4.0)
 | 
					  - PromisesObjC (2.4.0)
 | 
				
			||||||
 | 
					  - PromisesSwift (2.4.0):
 | 
				
			||||||
 | 
					    - PromisesObjC (= 2.4.0)
 | 
				
			||||||
  - receive_sharing_intent (1.8.1):
 | 
					  - receive_sharing_intent (1.8.1):
 | 
				
			||||||
    - Flutter
 | 
					    - Flutter
 | 
				
			||||||
  - record_ios (1.0.0):
 | 
					  - record_ios (1.1.0):
 | 
				
			||||||
    - Flutter
 | 
					    - Flutter
 | 
				
			||||||
  - SAMKeychain (1.5.3)
 | 
					  - SAMKeychain (1.5.3)
 | 
				
			||||||
  - SDWebImage (5.21.1):
 | 
					  - SDWebImage (5.21.1):
 | 
				
			||||||
@@ -178,28 +261,31 @@ PODS:
 | 
				
			|||||||
  - sqflite_darwin (0.0.4):
 | 
					  - sqflite_darwin (0.0.4):
 | 
				
			||||||
    - Flutter
 | 
					    - Flutter
 | 
				
			||||||
    - FlutterMacOS
 | 
					    - FlutterMacOS
 | 
				
			||||||
  - sqlite3 (3.50.1):
 | 
					  - sqlite3 (3.50.4):
 | 
				
			||||||
    - sqlite3/common (= 3.50.1)
 | 
					    - sqlite3/common (= 3.50.4)
 | 
				
			||||||
  - sqlite3/common (3.50.1)
 | 
					  - sqlite3/common (3.50.4)
 | 
				
			||||||
  - sqlite3/dbstatvtab (3.50.1):
 | 
					  - sqlite3/dbstatvtab (3.50.4):
 | 
				
			||||||
    - sqlite3/common
 | 
					    - sqlite3/common
 | 
				
			||||||
  - sqlite3/fts5 (3.50.1):
 | 
					  - sqlite3/fts5 (3.50.4):
 | 
				
			||||||
    - sqlite3/common
 | 
					    - sqlite3/common
 | 
				
			||||||
  - sqlite3/math (3.50.1):
 | 
					  - sqlite3/math (3.50.4):
 | 
				
			||||||
    - sqlite3/common
 | 
					    - sqlite3/common
 | 
				
			||||||
  - sqlite3/perf-threadsafe (3.50.1):
 | 
					  - sqlite3/perf-threadsafe (3.50.4):
 | 
				
			||||||
    - sqlite3/common
 | 
					    - sqlite3/common
 | 
				
			||||||
  - sqlite3/rtree (3.50.1):
 | 
					  - sqlite3/rtree (3.50.4):
 | 
				
			||||||
 | 
					    - sqlite3/common
 | 
				
			||||||
 | 
					  - sqlite3/session (3.50.4):
 | 
				
			||||||
    - sqlite3/common
 | 
					    - sqlite3/common
 | 
				
			||||||
  - sqlite3_flutter_libs (0.0.1):
 | 
					  - sqlite3_flutter_libs (0.0.1):
 | 
				
			||||||
    - Flutter
 | 
					    - Flutter
 | 
				
			||||||
    - FlutterMacOS
 | 
					    - FlutterMacOS
 | 
				
			||||||
    - sqlite3 (~> 3.50.1)
 | 
					    - sqlite3 (~> 3.50.4)
 | 
				
			||||||
    - sqlite3/dbstatvtab
 | 
					    - sqlite3/dbstatvtab
 | 
				
			||||||
    - sqlite3/fts5
 | 
					    - sqlite3/fts5
 | 
				
			||||||
    - sqlite3/math
 | 
					    - sqlite3/math
 | 
				
			||||||
    - sqlite3/perf-threadsafe
 | 
					    - sqlite3/perf-threadsafe
 | 
				
			||||||
    - sqlite3/rtree
 | 
					    - sqlite3/rtree
 | 
				
			||||||
 | 
					    - sqlite3/session
 | 
				
			||||||
  - super_native_extensions (0.0.1):
 | 
					  - super_native_extensions (0.0.1):
 | 
				
			||||||
    - Flutter
 | 
					    - Flutter
 | 
				
			||||||
  - SwiftyGif (5.4.5)
 | 
					  - SwiftyGif (5.4.5)
 | 
				
			||||||
@@ -209,7 +295,7 @@ PODS:
 | 
				
			|||||||
    - Flutter
 | 
					    - Flutter
 | 
				
			||||||
  - wakelock_plus (0.0.1):
 | 
					  - wakelock_plus (0.0.1):
 | 
				
			||||||
    - Flutter
 | 
					    - Flutter
 | 
				
			||||||
  - WebRTC-SDK (125.6422.07)
 | 
					  - WebRTC-SDK (137.7151.02)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DEPENDENCIES:
 | 
					DEPENDENCIES:
 | 
				
			||||||
  - Alamofire
 | 
					  - Alamofire
 | 
				
			||||||
@@ -217,9 +303,12 @@ DEPENDENCIES:
 | 
				
			|||||||
  - croppy (from `.symlinks/plugins/croppy/ios`)
 | 
					  - croppy (from `.symlinks/plugins/croppy/ios`)
 | 
				
			||||||
  - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
 | 
					  - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
 | 
				
			||||||
  - file_picker (from `.symlinks/plugins/file_picker/ios`)
 | 
					  - file_picker (from `.symlinks/plugins/file_picker/ios`)
 | 
				
			||||||
 | 
					  - firebase_analytics (from `.symlinks/plugins/firebase_analytics/ios`)
 | 
				
			||||||
  - firebase_core (from `.symlinks/plugins/firebase_core/ios`)
 | 
					  - firebase_core (from `.symlinks/plugins/firebase_core/ios`)
 | 
				
			||||||
 | 
					  - firebase_crashlytics (from `.symlinks/plugins/firebase_crashlytics/ios`)
 | 
				
			||||||
  - firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`)
 | 
					  - firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`)
 | 
				
			||||||
  - Flutter (from `Flutter`)
 | 
					  - Flutter (from `Flutter`)
 | 
				
			||||||
 | 
					  - flutter_app_update (from `.symlinks/plugins/flutter_app_update/ios`)
 | 
				
			||||||
  - flutter_inappwebview_ios (from `.symlinks/plugins/flutter_inappwebview_ios/ios`)
 | 
					  - flutter_inappwebview_ios (from `.symlinks/plugins/flutter_inappwebview_ios/ios`)
 | 
				
			||||||
  - flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`)
 | 
					  - flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`)
 | 
				
			||||||
  - flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`)
 | 
					  - flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`)
 | 
				
			||||||
@@ -259,16 +348,24 @@ SPEC REPOS:
 | 
				
			|||||||
    - DKImagePickerController
 | 
					    - DKImagePickerController
 | 
				
			||||||
    - DKPhotoGallery
 | 
					    - DKPhotoGallery
 | 
				
			||||||
    - Firebase
 | 
					    - Firebase
 | 
				
			||||||
 | 
					    - FirebaseAnalytics
 | 
				
			||||||
    - FirebaseCore
 | 
					    - FirebaseCore
 | 
				
			||||||
 | 
					    - FirebaseCoreExtension
 | 
				
			||||||
    - FirebaseCoreInternal
 | 
					    - FirebaseCoreInternal
 | 
				
			||||||
 | 
					    - FirebaseCrashlytics
 | 
				
			||||||
    - FirebaseInstallations
 | 
					    - FirebaseInstallations
 | 
				
			||||||
    - FirebaseMessaging
 | 
					    - FirebaseMessaging
 | 
				
			||||||
 | 
					    - FirebaseRemoteConfigInterop
 | 
				
			||||||
 | 
					    - FirebaseSessions
 | 
				
			||||||
 | 
					    - GoogleAdsOnDeviceConversion
 | 
				
			||||||
 | 
					    - GoogleAppMeasurement
 | 
				
			||||||
    - GoogleDataTransport
 | 
					    - GoogleDataTransport
 | 
				
			||||||
    - GoogleUtilities
 | 
					    - GoogleUtilities
 | 
				
			||||||
    - Kingfisher
 | 
					    - Kingfisher
 | 
				
			||||||
    - nanopb
 | 
					    - nanopb
 | 
				
			||||||
    - OrderedSet
 | 
					    - OrderedSet
 | 
				
			||||||
    - PromisesObjC
 | 
					    - PromisesObjC
 | 
				
			||||||
 | 
					    - PromisesSwift
 | 
				
			||||||
    - SAMKeychain
 | 
					    - SAMKeychain
 | 
				
			||||||
    - SDWebImage
 | 
					    - SDWebImage
 | 
				
			||||||
    - sqlite3
 | 
					    - sqlite3
 | 
				
			||||||
@@ -284,12 +381,18 @@ EXTERNAL SOURCES:
 | 
				
			|||||||
    :path: ".symlinks/plugins/device_info_plus/ios"
 | 
					    :path: ".symlinks/plugins/device_info_plus/ios"
 | 
				
			||||||
  file_picker:
 | 
					  file_picker:
 | 
				
			||||||
    :path: ".symlinks/plugins/file_picker/ios"
 | 
					    :path: ".symlinks/plugins/file_picker/ios"
 | 
				
			||||||
 | 
					  firebase_analytics:
 | 
				
			||||||
 | 
					    :path: ".symlinks/plugins/firebase_analytics/ios"
 | 
				
			||||||
  firebase_core:
 | 
					  firebase_core:
 | 
				
			||||||
    :path: ".symlinks/plugins/firebase_core/ios"
 | 
					    :path: ".symlinks/plugins/firebase_core/ios"
 | 
				
			||||||
 | 
					  firebase_crashlytics:
 | 
				
			||||||
 | 
					    :path: ".symlinks/plugins/firebase_crashlytics/ios"
 | 
				
			||||||
  firebase_messaging:
 | 
					  firebase_messaging:
 | 
				
			||||||
    :path: ".symlinks/plugins/firebase_messaging/ios"
 | 
					    :path: ".symlinks/plugins/firebase_messaging/ios"
 | 
				
			||||||
  Flutter:
 | 
					  Flutter:
 | 
				
			||||||
    :path: Flutter
 | 
					    :path: Flutter
 | 
				
			||||||
 | 
					  flutter_app_update:
 | 
				
			||||||
 | 
					    :path: ".symlinks/plugins/flutter_app_update/ios"
 | 
				
			||||||
  flutter_inappwebview_ios:
 | 
					  flutter_inappwebview_ios:
 | 
				
			||||||
    :path: ".symlinks/plugins/flutter_inappwebview_ios/ios"
 | 
					    :path: ".symlinks/plugins/flutter_inappwebview_ios/ios"
 | 
				
			||||||
  flutter_keyboard_visibility:
 | 
					  flutter_keyboard_visibility:
 | 
				
			||||||
@@ -361,14 +464,22 @@ SPEC CHECKSUMS:
 | 
				
			|||||||
  DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
 | 
					  DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
 | 
				
			||||||
  DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
 | 
					  DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
 | 
				
			||||||
  file_picker: a0560bc09d61de87f12d246fc47d2119e6ef37be
 | 
					  file_picker: a0560bc09d61de87f12d246fc47d2119e6ef37be
 | 
				
			||||||
  Firebase: d99ac19b909cd2c548339c2241ecd0d1599ab02e
 | 
					  Firebase: 800d487043c0557d9faed71477a38d9aafb08a41
 | 
				
			||||||
  firebase_core: c727a02c560a53f1f1e56e18f16515eb5753c492
 | 
					  firebase_analytics: cd56fc56f75c1df30a6ff5290cd56e230996a76d
 | 
				
			||||||
  firebase_messaging: 4158969b04b667f5435731ec9d6e453bb58b0c4c
 | 
					  firebase_core: 633e1851ffe1b9ab875f6467a4f574c79cef02e4
 | 
				
			||||||
  FirebaseCore: efb3893e5b94f32b86e331e3bd6dadf18b66568e
 | 
					  firebase_crashlytics: 2c6c1a17900a38081d938330e9f48e60ec5b255d
 | 
				
			||||||
  FirebaseCoreInternal: 9afa45b1159304c963da48addb78275ef701c6b4
 | 
					  firebase_messaging: d17feef781edc84ebefe62624fb384358ad96361
 | 
				
			||||||
  FirebaseInstallations: 317270fec08a5d418fdbc8429282238cab3ac843
 | 
					  FirebaseAnalytics: 6d790cd1b159b4eb61a99948df0934ce505a34f7
 | 
				
			||||||
  FirebaseMessaging: 3b26e2cee503815e01c3701236b020aa9b576f09
 | 
					  FirebaseCore: 055f4ab117d5964158c833f3d5e7ec6d91648d4a
 | 
				
			||||||
 | 
					  FirebaseCoreExtension: 639afb3de6abd611952be78a794c54a47fa0f361
 | 
				
			||||||
 | 
					  FirebaseCoreInternal: dedc28e569a4be85f38f3d6af1070a2e12018d55
 | 
				
			||||||
 | 
					  FirebaseCrashlytics: db75aa0cab8d00f68406fa247c32fe17ade884d7
 | 
				
			||||||
 | 
					  FirebaseInstallations: d4c7c958f99c8860d7fcece786314ae790e2f988
 | 
				
			||||||
 | 
					  FirebaseMessaging: af49f8d7c0a3d2a017d9302c80946f45a7777dde
 | 
				
			||||||
 | 
					  FirebaseRemoteConfigInterop: bfa0ea72ba3dc5af739777296424e46bd6f42613
 | 
				
			||||||
 | 
					  FirebaseSessions: 4e784acda213108aafef536535cdfc03504acc42
 | 
				
			||||||
  Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
 | 
					  Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
 | 
				
			||||||
 | 
					  flutter_app_update: 816fdb2e30e4832a7c45e3f108d391c42ef040a9
 | 
				
			||||||
  flutter_inappwebview_ios: b89ba3482b96fb25e00c967aae065701b66e9b99
 | 
					  flutter_inappwebview_ios: b89ba3482b96fb25e00c967aae065701b66e9b99
 | 
				
			||||||
  flutter_keyboard_visibility: 4625131e43015dbbe759d9b20daaf77e0e3f6619
 | 
					  flutter_keyboard_visibility: 4625131e43015dbbe759d9b20daaf77e0e3f6619
 | 
				
			||||||
  flutter_native_splash: c32d145d68aeda5502d5f543ee38c192065986cf
 | 
					  flutter_native_splash: c32d145d68aeda5502d5f543ee38c192065986cf
 | 
				
			||||||
@@ -376,15 +487,17 @@ SPEC CHECKSUMS:
 | 
				
			|||||||
  flutter_secure_storage: 1ed9476fba7e7a782b22888f956cce43e2c62f13
 | 
					  flutter_secure_storage: 1ed9476fba7e7a782b22888f956cce43e2c62f13
 | 
				
			||||||
  flutter_timezone: 7c838e17ffd4645d261e87037e5bebf6d38fe544
 | 
					  flutter_timezone: 7c838e17ffd4645d261e87037e5bebf6d38fe544
 | 
				
			||||||
  flutter_udid: f7c3884e6ec2951efe4f9de082257fc77c4d15e9
 | 
					  flutter_udid: f7c3884e6ec2951efe4f9de082257fc77c4d15e9
 | 
				
			||||||
  flutter_webrtc: fd0d3bdef8766a0736dbbe2e5b7e85f1f3c52117
 | 
					  flutter_webrtc: 6f7da106613d52ade777d5b4875a43f48c28b457
 | 
				
			||||||
  gal: baecd024ebfd13c441269ca7404792a7152fde89
 | 
					  gal: baecd024ebfd13c441269ca7404792a7152fde89
 | 
				
			||||||
 | 
					  GoogleAdsOnDeviceConversion: 2be6297a4f048459e0ae17fad9bfd2844e10cf64
 | 
				
			||||||
 | 
					  GoogleAppMeasurement: 8f6ab04ad6ae493b53fcf56bd26323fb2f1384f3
 | 
				
			||||||
  GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
 | 
					  GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7
 | 
				
			||||||
  GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1
 | 
					  GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1
 | 
				
			||||||
  image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a
 | 
					  image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a
 | 
				
			||||||
  irondash_engine_context: 8e58ca8e0212ee9d1c7dc6a42121849986c88486
 | 
					  irondash_engine_context: 8e58ca8e0212ee9d1c7dc6a42121849986c88486
 | 
				
			||||||
  Kingfisher: ff82cb91d9266ddb56cbb2f72d32c26f00d3e5be
 | 
					  Kingfisher: ff0d31a1f07bdff6a1ebb3ba08b8e6e567b6500c
 | 
				
			||||||
  livekit_client: 3f79d79233a5bd13d5b541732624ef959d7c538e
 | 
					  livekit_client: e3b79b99405428aac439b6b76a254cd9a11dbbfb
 | 
				
			||||||
  local_auth_darwin: 553ce4f9b16d3fdfeafce9cf042e7c9f77c1c391
 | 
					  local_auth_darwin: d2e8c53ef0c4f43c646462e3415432c4dab3ae19
 | 
				
			||||||
  media_kit_libs_ios_video: 5a18affdb97d1f5d466dc79988b13eff6c5e2854
 | 
					  media_kit_libs_ios_video: 5a18affdb97d1f5d466dc79988b13eff6c5e2854
 | 
				
			||||||
  media_kit_video: 1746e198cb697d1ffb734b1d05ec429d1fcd1474
 | 
					  media_kit_video: 1746e198cb697d1ffb734b1d05ec429d1fcd1474
 | 
				
			||||||
  nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
 | 
					  nanopb: fad817b59e0457d11a5dfbde799381cd727c1275
 | 
				
			||||||
@@ -395,23 +508,24 @@ SPEC CHECKSUMS:
 | 
				
			|||||||
  path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564
 | 
					  path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564
 | 
				
			||||||
  pointer_interceptor_ios: ec847ef8b0915778bed2b2cef636f4d177fa8eed
 | 
					  pointer_interceptor_ios: ec847ef8b0915778bed2b2cef636f4d177fa8eed
 | 
				
			||||||
  PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
 | 
					  PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
 | 
				
			||||||
 | 
					  PromisesSwift: 9d77319bbe72ebf6d872900551f7eeba9bce2851
 | 
				
			||||||
  receive_sharing_intent: 222384f00ffe7e952bbfabaa9e3967cb87e5fe00
 | 
					  receive_sharing_intent: 222384f00ffe7e952bbfabaa9e3967cb87e5fe00
 | 
				
			||||||
  record_ios: fee1c924aa4879b882ebca2b4bce6011bcfc3d8b
 | 
					  record_ios: f75fa1d57f840012775c0e93a38a7f3ceea1a374
 | 
				
			||||||
  SAMKeychain: 483e1c9f32984d50ca961e26818a534283b4cd5c
 | 
					  SAMKeychain: 483e1c9f32984d50ca961e26818a534283b4cd5c
 | 
				
			||||||
  SDWebImage: f29024626962457f3470184232766516dee8dfea
 | 
					  SDWebImage: f29024626962457f3470184232766516dee8dfea
 | 
				
			||||||
  share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a
 | 
					  share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a
 | 
				
			||||||
  shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7
 | 
					  shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7
 | 
				
			||||||
  sign_in_with_apple: c5dcc141574c8c54d5ac99dd2163c0c72ad22418
 | 
					  sign_in_with_apple: c5dcc141574c8c54d5ac99dd2163c0c72ad22418
 | 
				
			||||||
  sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0
 | 
					  sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0
 | 
				
			||||||
  sqlite3: 1d85290c3321153511f6e900ede7a1608718bbd5
 | 
					  sqlite3: 73513155ec6979715d3904ef53a8d68892d4032b
 | 
				
			||||||
  sqlite3_flutter_libs: e7fc8c9ea2200ff3271f08f127842131746b70e2
 | 
					  sqlite3_flutter_libs: 83f8e9f5b6554077f1d93119fe20ebaa5f3a9ef1
 | 
				
			||||||
  super_native_extensions: b763c02dc3a8fd078389f410bf15149179020cb4
 | 
					  super_native_extensions: b763c02dc3a8fd078389f410bf15149179020cb4
 | 
				
			||||||
  SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
 | 
					  SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
 | 
				
			||||||
  url_launcher_ios: 694010445543906933d732453a59da0a173ae33d
 | 
					  url_launcher_ios: 694010445543906933d732453a59da0a173ae33d
 | 
				
			||||||
  volume_controller: 3657a1f65bedb98fa41ff7dc5793537919f31b12
 | 
					  volume_controller: 3657a1f65bedb98fa41ff7dc5793537919f31b12
 | 
				
			||||||
  wakelock_plus: e29112ab3ef0b318e58cfa5c32326458be66b556
 | 
					  wakelock_plus: e29112ab3ef0b318e58cfa5c32326458be66b556
 | 
				
			||||||
  WebRTC-SDK: dff00a3892bc570b6014e046297782084071657e
 | 
					  WebRTC-SDK: d20de357dcbf7c9696b124b39f3ff62125107e4b
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PODFILE CHECKSUM: f6df17c2a0cbd7af89692fd3877231eaea40230f
 | 
					PODFILE CHECKSUM: c818292390b02fa379036ea099713a332bd7193f
 | 
				
			||||||
 | 
					
 | 
				
			||||||
COCOAPODS: 1.16.2
 | 
					COCOAPODS: 1.16.2
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,6 +10,8 @@
 | 
				
			|||||||
		1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
 | 
							1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
 | 
				
			||||||
		331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
 | 
							331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; };
 | 
				
			||||||
		3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
 | 
							3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
 | 
				
			||||||
 | 
							73ACDFAD2E3D0E6100B63535 /* ReplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73ACDFAC2E3D0E6100B63535 /* ReplayKit.framework */; };
 | 
				
			||||||
 | 
							73ACDFC32E3D0E6100B63535 /* SolianBroadcastExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 73ACDFAB2E3D0E6100B63535 /* SolianBroadcastExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
 | 
				
			||||||
		73C305D82E0BE878009035B9 /* SolianShareExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 73C305CE2E0BE878009035B9 /* SolianShareExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
 | 
							73C305D82E0BE878009035B9 /* SolianShareExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 73C305CE2E0BE878009035B9 /* SolianShareExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
 | 
				
			||||||
		73CDD6812DEC00480059D95D /* SolianNotificationService.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 73CDD67A2DEC00480059D95D /* SolianNotificationService.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
 | 
							73CDD6812DEC00480059D95D /* SolianNotificationService.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 73CDD67A2DEC00480059D95D /* SolianNotificationService.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
 | 
				
			||||||
		73D4264B2DEB815D006C0AAE /* NotifyDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73D4264A2DEB815D006C0AAE /* NotifyDelegate.swift */; };
 | 
							73D4264B2DEB815D006C0AAE /* NotifyDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73D4264A2DEB815D006C0AAE /* NotifyDelegate.swift */; };
 | 
				
			||||||
@@ -32,6 +34,13 @@
 | 
				
			|||||||
			remoteGlobalIDString = 97C146ED1CF9000F007C117D;
 | 
								remoteGlobalIDString = 97C146ED1CF9000F007C117D;
 | 
				
			||||||
			remoteInfo = Runner;
 | 
								remoteInfo = Runner;
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
 | 
							73ACDFC12E3D0E6100B63535 /* PBXContainerItemProxy */ = {
 | 
				
			||||||
 | 
								isa = PBXContainerItemProxy;
 | 
				
			||||||
 | 
								containerPortal = 97C146E61CF9000F007C117D /* Project object */;
 | 
				
			||||||
 | 
								proxyType = 1;
 | 
				
			||||||
 | 
								remoteGlobalIDString = 73ACDFAA2E3D0E6100B63535;
 | 
				
			||||||
 | 
								remoteInfo = SolianBroadcastExtension;
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
		73C305D62E0BE878009035B9 /* PBXContainerItemProxy */ = {
 | 
							73C305D62E0BE878009035B9 /* PBXContainerItemProxy */ = {
 | 
				
			||||||
			isa = PBXContainerItemProxy;
 | 
								isa = PBXContainerItemProxy;
 | 
				
			||||||
			containerPortal = 97C146E61CF9000F007C117D /* Project object */;
 | 
								containerPortal = 97C146E61CF9000F007C117D /* Project object */;
 | 
				
			||||||
@@ -55,6 +64,7 @@
 | 
				
			|||||||
			dstPath = "";
 | 
								dstPath = "";
 | 
				
			||||||
			dstSubfolderSpec = 13;
 | 
								dstSubfolderSpec = 13;
 | 
				
			||||||
			files = (
 | 
								files = (
 | 
				
			||||||
 | 
									73ACDFC32E3D0E6100B63535 /* SolianBroadcastExtension.appex in Embed Foundation Extensions */,
 | 
				
			||||||
				73C305D82E0BE878009035B9 /* SolianShareExtension.appex in Embed Foundation Extensions */,
 | 
									73C305D82E0BE878009035B9 /* SolianShareExtension.appex in Embed Foundation Extensions */,
 | 
				
			||||||
				73CDD6812DEC00480059D95D /* SolianNotificationService.appex in Embed Foundation Extensions */,
 | 
									73CDD6812DEC00480059D95D /* SolianNotificationService.appex in Embed Foundation Extensions */,
 | 
				
			||||||
			);
 | 
								);
 | 
				
			||||||
@@ -91,6 +101,9 @@
 | 
				
			|||||||
		3A1C47BD29CC6AC2587D4DBE /* 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 = "<group>"; };
 | 
							3A1C47BD29CC6AC2587D4DBE /* 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 = "<group>"; };
 | 
				
			||||||
		3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
 | 
							3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = "<group>"; };
 | 
				
			||||||
		737E920B2DB6A9FF00BE9CDB /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
 | 
							737E920B2DB6A9FF00BE9CDB /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
 | 
				
			||||||
 | 
							73ACDFAB2E3D0E6100B63535 /* SolianBroadcastExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = SolianBroadcastExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
 | 
				
			||||||
 | 
							73ACDFAC2E3D0E6100B63535 /* ReplayKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ReplayKit.framework; path = System/Library/Frameworks/ReplayKit.framework; sourceTree = SDKROOT; };
 | 
				
			||||||
 | 
							73ACDFB82E3D0E6100B63535 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
 | 
				
			||||||
		73C305CE2E0BE878009035B9 /* SolianShareExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = SolianShareExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
 | 
							73C305CE2E0BE878009035B9 /* SolianShareExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = SolianShareExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
 | 
				
			||||||
		73CDD67A2DEC00480059D95D /* SolianNotificationService.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = SolianNotificationService.appex; sourceTree = BUILT_PRODUCTS_DIR; };
 | 
							73CDD67A2DEC00480059D95D /* SolianNotificationService.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = SolianNotificationService.appex; sourceTree = BUILT_PRODUCTS_DIR; };
 | 
				
			||||||
		73D4264A2DEB815D006C0AAE /* NotifyDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotifyDelegate.swift; sourceTree = "<group>"; };
 | 
							73D4264A2DEB815D006C0AAE /* NotifyDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotifyDelegate.swift; sourceTree = "<group>"; };
 | 
				
			||||||
@@ -117,6 +130,13 @@
 | 
				
			|||||||
/* End PBXFileReference section */
 | 
					/* End PBXFileReference section */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */
 | 
					/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */
 | 
				
			||||||
 | 
							73ACDFCA2E3D0E6100B63535 /* Exceptions for "SolianBroadcastExtension" folder in "SolianBroadcastExtension" target */ = {
 | 
				
			||||||
 | 
								isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
 | 
				
			||||||
 | 
								membershipExceptions = (
 | 
				
			||||||
 | 
									Info.plist,
 | 
				
			||||||
 | 
								);
 | 
				
			||||||
 | 
								target = 73ACDFAA2E3D0E6100B63535 /* SolianBroadcastExtension */;
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
		73C305DC2E0BE878009035B9 /* Exceptions for "SolianShareExtension" folder in "SolianShareExtension" target */ = {
 | 
							73C305DC2E0BE878009035B9 /* Exceptions for "SolianShareExtension" folder in "SolianShareExtension" target */ = {
 | 
				
			||||||
			isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
 | 
								isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
 | 
				
			||||||
			membershipExceptions = (
 | 
								membershipExceptions = (
 | 
				
			||||||
@@ -150,6 +170,14 @@
 | 
				
			|||||||
			path = Services;
 | 
								path = Services;
 | 
				
			||||||
			sourceTree = "<group>";
 | 
								sourceTree = "<group>";
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
 | 
							73ACDFAE2E3D0E6100B63535 /* SolianBroadcastExtension */ = {
 | 
				
			||||||
 | 
								isa = PBXFileSystemSynchronizedRootGroup;
 | 
				
			||||||
 | 
								exceptions = (
 | 
				
			||||||
 | 
									73ACDFCA2E3D0E6100B63535 /* Exceptions for "SolianBroadcastExtension" folder in "SolianBroadcastExtension" target */,
 | 
				
			||||||
 | 
								);
 | 
				
			||||||
 | 
								path = SolianBroadcastExtension;
 | 
				
			||||||
 | 
								sourceTree = "<group>";
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
		73C305CF2E0BE878009035B9 /* SolianShareExtension */ = {
 | 
							73C305CF2E0BE878009035B9 /* SolianShareExtension */ = {
 | 
				
			||||||
			isa = PBXFileSystemSynchronizedRootGroup;
 | 
								isa = PBXFileSystemSynchronizedRootGroup;
 | 
				
			||||||
			exceptions = (
 | 
								exceptions = (
 | 
				
			||||||
@@ -177,6 +205,14 @@
 | 
				
			|||||||
			);
 | 
								);
 | 
				
			||||||
			runOnlyForDeploymentPostprocessing = 0;
 | 
								runOnlyForDeploymentPostprocessing = 0;
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
 | 
							73ACDFA82E3D0E6100B63535 /* Frameworks */ = {
 | 
				
			||||||
 | 
								isa = PBXFrameworksBuildPhase;
 | 
				
			||||||
 | 
								buildActionMask = 2147483647;
 | 
				
			||||||
 | 
								files = (
 | 
				
			||||||
 | 
									73ACDFAD2E3D0E6100B63535 /* ReplayKit.framework in Frameworks */,
 | 
				
			||||||
 | 
								);
 | 
				
			||||||
 | 
								runOnlyForDeploymentPostprocessing = 0;
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
		73C305CB2E0BE878009035B9 /* Frameworks */ = {
 | 
							73C305CB2E0BE878009035B9 /* Frameworks */ = {
 | 
				
			||||||
			isa = PBXFrameworksBuildPhase;
 | 
								isa = PBXFrameworksBuildPhase;
 | 
				
			||||||
			buildActionMask = 2147483647;
 | 
								buildActionMask = 2147483647;
 | 
				
			||||||
@@ -220,6 +256,8 @@
 | 
				
			|||||||
				AA0CA8A3E15DEE023BB27438 /* Pods_NotificationService.framework */,
 | 
									AA0CA8A3E15DEE023BB27438 /* Pods_NotificationService.framework */,
 | 
				
			||||||
				39FE4CC6223F0D3C0E1FFD04 /* Pods_SolianNotificationService.framework */,
 | 
									39FE4CC6223F0D3C0E1FFD04 /* Pods_SolianNotificationService.framework */,
 | 
				
			||||||
				7B40764A2C4CC0E7DC70A0D3 /* Pods_SolianShareExtension.framework */,
 | 
									7B40764A2C4CC0E7DC70A0D3 /* Pods_SolianShareExtension.framework */,
 | 
				
			||||||
 | 
									73ACDFAC2E3D0E6100B63535 /* ReplayKit.framework */,
 | 
				
			||||||
 | 
									73ACDFB82E3D0E6100B63535 /* UIKit.framework */,
 | 
				
			||||||
			);
 | 
								);
 | 
				
			||||||
			name = Frameworks;
 | 
								name = Frameworks;
 | 
				
			||||||
			sourceTree = "<group>";
 | 
								sourceTree = "<group>";
 | 
				
			||||||
@@ -264,6 +302,7 @@
 | 
				
			|||||||
				97C146F01CF9000F007C117D /* Runner */,
 | 
									97C146F01CF9000F007C117D /* Runner */,
 | 
				
			||||||
				73CDD67B2DEC00480059D95D /* SolianNotificationService */,
 | 
									73CDD67B2DEC00480059D95D /* SolianNotificationService */,
 | 
				
			||||||
				73C305CF2E0BE878009035B9 /* SolianShareExtension */,
 | 
									73C305CF2E0BE878009035B9 /* SolianShareExtension */,
 | 
				
			||||||
 | 
									73ACDFAE2E3D0E6100B63535 /* SolianBroadcastExtension */,
 | 
				
			||||||
				97C146EF1CF9000F007C117D /* Products */,
 | 
									97C146EF1CF9000F007C117D /* Products */,
 | 
				
			||||||
				331C8082294A63A400263BE5 /* RunnerTests */,
 | 
									331C8082294A63A400263BE5 /* RunnerTests */,
 | 
				
			||||||
				91E124CE95BCB4DCD890160D /* Pods */,
 | 
									91E124CE95BCB4DCD890160D /* Pods */,
 | 
				
			||||||
@@ -279,6 +318,7 @@
 | 
				
			|||||||
				331C8081294A63A400263BE5 /* RunnerTests.xctest */,
 | 
									331C8081294A63A400263BE5 /* RunnerTests.xctest */,
 | 
				
			||||||
				73CDD67A2DEC00480059D95D /* SolianNotificationService.appex */,
 | 
									73CDD67A2DEC00480059D95D /* SolianNotificationService.appex */,
 | 
				
			||||||
				73C305CE2E0BE878009035B9 /* SolianShareExtension.appex */,
 | 
									73C305CE2E0BE878009035B9 /* SolianShareExtension.appex */,
 | 
				
			||||||
 | 
									73ACDFAB2E3D0E6100B63535 /* SolianBroadcastExtension.appex */,
 | 
				
			||||||
			);
 | 
								);
 | 
				
			||||||
			name = Products;
 | 
								name = Products;
 | 
				
			||||||
			sourceTree = "<group>";
 | 
								sourceTree = "<group>";
 | 
				
			||||||
@@ -323,6 +363,26 @@
 | 
				
			|||||||
			productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */;
 | 
								productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */;
 | 
				
			||||||
			productType = "com.apple.product-type.bundle.unit-test";
 | 
								productType = "com.apple.product-type.bundle.unit-test";
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
 | 
							73ACDFAA2E3D0E6100B63535 /* SolianBroadcastExtension */ = {
 | 
				
			||||||
 | 
								isa = PBXNativeTarget;
 | 
				
			||||||
 | 
								buildConfigurationList = 73ACDFCB2E3D0E6100B63535 /* Build configuration list for PBXNativeTarget "SolianBroadcastExtension" */;
 | 
				
			||||||
 | 
								buildPhases = (
 | 
				
			||||||
 | 
									73ACDFA72E3D0E6100B63535 /* Sources */,
 | 
				
			||||||
 | 
									73ACDFA82E3D0E6100B63535 /* Frameworks */,
 | 
				
			||||||
 | 
									73ACDFA92E3D0E6100B63535 /* Resources */,
 | 
				
			||||||
 | 
								);
 | 
				
			||||||
 | 
								buildRules = (
 | 
				
			||||||
 | 
								);
 | 
				
			||||||
 | 
								dependencies = (
 | 
				
			||||||
 | 
								);
 | 
				
			||||||
 | 
								fileSystemSynchronizedGroups = (
 | 
				
			||||||
 | 
									73ACDFAE2E3D0E6100B63535 /* SolianBroadcastExtension */,
 | 
				
			||||||
 | 
								);
 | 
				
			||||||
 | 
								name = SolianBroadcastExtension;
 | 
				
			||||||
 | 
								productName = SolianBroadcastExtension;
 | 
				
			||||||
 | 
								productReference = 73ACDFAB2E3D0E6100B63535 /* SolianBroadcastExtension.appex */;
 | 
				
			||||||
 | 
								productType = "com.apple.product-type.app-extension";
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
		73C305CD2E0BE878009035B9 /* SolianShareExtension */ = {
 | 
							73C305CD2E0BE878009035B9 /* SolianShareExtension */ = {
 | 
				
			||||||
			isa = PBXNativeTarget;
 | 
								isa = PBXNativeTarget;
 | 
				
			||||||
			buildConfigurationList = 73C305DD2E0BE878009035B9 /* Build configuration list for PBXNativeTarget "SolianShareExtension" */;
 | 
								buildConfigurationList = 73C305DD2E0BE878009035B9 /* Build configuration list for PBXNativeTarget "SolianShareExtension" */;
 | 
				
			||||||
@@ -379,12 +439,14 @@
 | 
				
			|||||||
				3B06AD1E1E4923F5004D2608 /* Thin Binary */,
 | 
									3B06AD1E1E4923F5004D2608 /* Thin Binary */,
 | 
				
			||||||
				8C0351B03869BBF493808288 /* [CP] Embed Pods Frameworks */,
 | 
									8C0351B03869BBF493808288 /* [CP] Embed Pods Frameworks */,
 | 
				
			||||||
				5E7D6EF29B671AC7EDBA5649 /* [CP] Copy Pods Resources */,
 | 
									5E7D6EF29B671AC7EDBA5649 /* [CP] Copy Pods Resources */,
 | 
				
			||||||
 | 
									E86CDE9D6464F4F52B910856 /* FlutterFire: "flutterfire upload-crashlytics-symbols" */,
 | 
				
			||||||
			);
 | 
								);
 | 
				
			||||||
			buildRules = (
 | 
								buildRules = (
 | 
				
			||||||
			);
 | 
								);
 | 
				
			||||||
			dependencies = (
 | 
								dependencies = (
 | 
				
			||||||
				73CDD6802DEC00480059D95D /* PBXTargetDependency */,
 | 
									73CDD6802DEC00480059D95D /* PBXTargetDependency */,
 | 
				
			||||||
				73C305D72E0BE878009035B9 /* PBXTargetDependency */,
 | 
									73C305D72E0BE878009035B9 /* PBXTargetDependency */,
 | 
				
			||||||
 | 
									73ACDFC22E3D0E6100B63535 /* PBXTargetDependency */,
 | 
				
			||||||
			);
 | 
								);
 | 
				
			||||||
			fileSystemSynchronizedGroups = (
 | 
								fileSystemSynchronizedGroups = (
 | 
				
			||||||
				73268D272DEB012A0076E970 /* Services */,
 | 
									73268D272DEB012A0076E970 /* Services */,
 | 
				
			||||||
@@ -409,6 +471,9 @@
 | 
				
			|||||||
						CreatedOnToolsVersion = 14.0;
 | 
											CreatedOnToolsVersion = 14.0;
 | 
				
			||||||
						TestTargetID = 97C146ED1CF9000F007C117D;
 | 
											TestTargetID = 97C146ED1CF9000F007C117D;
 | 
				
			||||||
					};
 | 
										};
 | 
				
			||||||
 | 
										73ACDFAA2E3D0E6100B63535 = {
 | 
				
			||||||
 | 
											CreatedOnToolsVersion = 16.4;
 | 
				
			||||||
 | 
										};
 | 
				
			||||||
					73C305CD2E0BE878009035B9 = {
 | 
										73C305CD2E0BE878009035B9 = {
 | 
				
			||||||
						CreatedOnToolsVersion = 16.4;
 | 
											CreatedOnToolsVersion = 16.4;
 | 
				
			||||||
					};
 | 
										};
 | 
				
			||||||
@@ -438,6 +503,7 @@
 | 
				
			|||||||
				331C8080294A63A400263BE5 /* RunnerTests */,
 | 
									331C8080294A63A400263BE5 /* RunnerTests */,
 | 
				
			||||||
				73CDD6792DEC00480059D95D /* SolianNotificationService */,
 | 
									73CDD6792DEC00480059D95D /* SolianNotificationService */,
 | 
				
			||||||
				73C305CD2E0BE878009035B9 /* SolianShareExtension */,
 | 
									73C305CD2E0BE878009035B9 /* SolianShareExtension */,
 | 
				
			||||||
 | 
									73ACDFAA2E3D0E6100B63535 /* SolianBroadcastExtension */,
 | 
				
			||||||
			);
 | 
								);
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
/* End PBXProject section */
 | 
					/* End PBXProject section */
 | 
				
			||||||
@@ -450,6 +516,13 @@
 | 
				
			|||||||
			);
 | 
								);
 | 
				
			||||||
			runOnlyForDeploymentPostprocessing = 0;
 | 
								runOnlyForDeploymentPostprocessing = 0;
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
 | 
							73ACDFA92E3D0E6100B63535 /* Resources */ = {
 | 
				
			||||||
 | 
								isa = PBXResourcesBuildPhase;
 | 
				
			||||||
 | 
								buildActionMask = 2147483647;
 | 
				
			||||||
 | 
								files = (
 | 
				
			||||||
 | 
								);
 | 
				
			||||||
 | 
								runOnlyForDeploymentPostprocessing = 0;
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
		73C305CC2E0BE878009035B9 /* Resources */ = {
 | 
							73C305CC2E0BE878009035B9 /* Resources */ = {
 | 
				
			||||||
			isa = PBXResourcesBuildPhase;
 | 
								isa = PBXResourcesBuildPhase;
 | 
				
			||||||
			buildActionMask = 2147483647;
 | 
								buildActionMask = 2147483647;
 | 
				
			||||||
@@ -610,6 +683,24 @@
 | 
				
			|||||||
			shellPath = /bin/sh;
 | 
								shellPath = /bin/sh;
 | 
				
			||||||
			shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
 | 
								shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
 | 
							E86CDE9D6464F4F52B910856 /* 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:${PUB_CACHE}/bin:$HOME/.pub-cache/bin\"\n\nif [ -z \"$PODS_ROOT\" ] || [ ! -d \"$PODS_ROOT/FirebaseCrashlytics\" ]; then\n  # Cannot use \"BUILD_DIR%/Build/*\" as per Firebase documentation, it points to \"flutter-project/build/ios/*\" path which doesn't have run script\n  DERIVED_DATA_PATH=$(echo \"$BUILD_ROOT\" | sed -E 's|(.*DerivedData/[^/]+).*|\\1|')\n  PATH_TO_CRASHLYTICS_UPLOAD_SCRIPT=\"${DERIVED_DATA_PATH}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run\"\nelse\n  PATH_TO_CRASHLYTICS_UPLOAD_SCRIPT=\"$PODS_ROOT/FirebaseCrashlytics/run\"\nfi\n\n# Command to upload symbols script used to upload symbols to Firebase server\nflutterfire upload-crashlytics-symbols --upload-symbols-script-path=\"$PATH_TO_CRASHLYTICS_UPLOAD_SCRIPT\" --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";
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
		E947029FCA058878F9B63890 /* [CP] Check Pods Manifest.lock */ = {
 | 
							E947029FCA058878F9B63890 /* [CP] Check Pods Manifest.lock */ = {
 | 
				
			||||||
			isa = PBXShellScriptBuildPhase;
 | 
								isa = PBXShellScriptBuildPhase;
 | 
				
			||||||
			buildActionMask = 2147483647;
 | 
								buildActionMask = 2147483647;
 | 
				
			||||||
@@ -643,6 +734,13 @@
 | 
				
			|||||||
			);
 | 
								);
 | 
				
			||||||
			runOnlyForDeploymentPostprocessing = 0;
 | 
								runOnlyForDeploymentPostprocessing = 0;
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
 | 
							73ACDFA72E3D0E6100B63535 /* Sources */ = {
 | 
				
			||||||
 | 
								isa = PBXSourcesBuildPhase;
 | 
				
			||||||
 | 
								buildActionMask = 2147483647;
 | 
				
			||||||
 | 
								files = (
 | 
				
			||||||
 | 
								);
 | 
				
			||||||
 | 
								runOnlyForDeploymentPostprocessing = 0;
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
		73C305CA2E0BE878009035B9 /* Sources */ = {
 | 
							73C305CA2E0BE878009035B9 /* Sources */ = {
 | 
				
			||||||
			isa = PBXSourcesBuildPhase;
 | 
								isa = PBXSourcesBuildPhase;
 | 
				
			||||||
			buildActionMask = 2147483647;
 | 
								buildActionMask = 2147483647;
 | 
				
			||||||
@@ -675,6 +773,11 @@
 | 
				
			|||||||
			target = 97C146ED1CF9000F007C117D /* Runner */;
 | 
								target = 97C146ED1CF9000F007C117D /* Runner */;
 | 
				
			||||||
			targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */;
 | 
								targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */;
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
 | 
							73ACDFC22E3D0E6100B63535 /* PBXTargetDependency */ = {
 | 
				
			||||||
 | 
								isa = PBXTargetDependency;
 | 
				
			||||||
 | 
								target = 73ACDFAA2E3D0E6100B63535 /* SolianBroadcastExtension */;
 | 
				
			||||||
 | 
								targetProxy = 73ACDFC12E3D0E6100B63535 /* PBXContainerItemProxy */;
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
		73C305D72E0BE878009035B9 /* PBXTargetDependency */ = {
 | 
							73C305D72E0BE878009035B9 /* PBXTargetDependency */ = {
 | 
				
			||||||
			isa = PBXTargetDependency;
 | 
								isa = PBXTargetDependency;
 | 
				
			||||||
			target = 73C305CD2E0BE878009035B9 /* SolianShareExtension */;
 | 
								target = 73C305CD2E0BE878009035B9 /* SolianShareExtension */;
 | 
				
			||||||
@@ -772,7 +875,8 @@
 | 
				
			|||||||
				ENABLE_BITCODE = NO;
 | 
									ENABLE_BITCODE = NO;
 | 
				
			||||||
				INFOPLIST_FILE = Runner/Info.plist;
 | 
									INFOPLIST_FILE = Runner/Info.plist;
 | 
				
			||||||
				INFOPLIST_KEY_CFBundleDisplayName = Solian;
 | 
									INFOPLIST_KEY_CFBundleDisplayName = Solian;
 | 
				
			||||||
				IPHONEOS_DEPLOYMENT_TARGET = 13.0;
 | 
									INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
 | 
				
			||||||
 | 
									IPHONEOS_DEPLOYMENT_TARGET = 15.0;
 | 
				
			||||||
				LD_RUNPATH_SEARCH_PATHS = (
 | 
									LD_RUNPATH_SEARCH_PATHS = (
 | 
				
			||||||
					"$(inherited)",
 | 
										"$(inherited)",
 | 
				
			||||||
					"@executable_path/Frameworks",
 | 
										"@executable_path/Frameworks",
 | 
				
			||||||
@@ -835,6 +939,123 @@
 | 
				
			|||||||
			};
 | 
								};
 | 
				
			||||||
			name = Profile;
 | 
								name = Profile;
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
 | 
							73ACDFC42E3D0E6100B63535 /* Debug */ = {
 | 
				
			||||||
 | 
								isa = XCBuildConfiguration;
 | 
				
			||||||
 | 
								buildSettings = {
 | 
				
			||||||
 | 
									ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
 | 
				
			||||||
 | 
									CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
 | 
				
			||||||
 | 
									CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
 | 
				
			||||||
 | 
									CLANG_ENABLE_OBJC_WEAK = YES;
 | 
				
			||||||
 | 
									CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
 | 
				
			||||||
 | 
									CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
 | 
				
			||||||
 | 
									CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
 | 
				
			||||||
 | 
									CODE_SIGN_ENTITLEMENTS = SolianBroadcastExtension/SolianBroadcastExtension.entitlements;
 | 
				
			||||||
 | 
									CODE_SIGN_STYLE = Automatic;
 | 
				
			||||||
 | 
									CURRENT_PROJECT_VERSION = 1;
 | 
				
			||||||
 | 
									DEVELOPMENT_TEAM = W7HPZ53V6B;
 | 
				
			||||||
 | 
									ENABLE_USER_SCRIPT_SANDBOXING = YES;
 | 
				
			||||||
 | 
									GCC_C_LANGUAGE_STANDARD = gnu17;
 | 
				
			||||||
 | 
									GENERATE_INFOPLIST_FILE = YES;
 | 
				
			||||||
 | 
									INFOPLIST_FILE = SolianBroadcastExtension/Info.plist;
 | 
				
			||||||
 | 
									INFOPLIST_KEY_CFBundleDisplayName = SolianBroadcastExtension;
 | 
				
			||||||
 | 
									INFOPLIST_KEY_NSHumanReadableCopyright = "";
 | 
				
			||||||
 | 
									IPHONEOS_DEPLOYMENT_TARGET = 15.0;
 | 
				
			||||||
 | 
									LD_RUNPATH_SEARCH_PATHS = (
 | 
				
			||||||
 | 
										"$(inherited)",
 | 
				
			||||||
 | 
										"@executable_path/Frameworks",
 | 
				
			||||||
 | 
										"@executable_path/../../Frameworks",
 | 
				
			||||||
 | 
									);
 | 
				
			||||||
 | 
									LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
 | 
				
			||||||
 | 
									MARKETING_VERSION = 1.0;
 | 
				
			||||||
 | 
									MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
 | 
				
			||||||
 | 
									MTL_FAST_MATH = YES;
 | 
				
			||||||
 | 
									PRODUCT_BUNDLE_IDENTIFIER = dev.solsynth.solian.SolianBroadcastExtension;
 | 
				
			||||||
 | 
									PRODUCT_NAME = "$(TARGET_NAME)";
 | 
				
			||||||
 | 
									SKIP_INSTALL = YES;
 | 
				
			||||||
 | 
									SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
 | 
				
			||||||
 | 
									SWIFT_EMIT_LOC_STRINGS = YES;
 | 
				
			||||||
 | 
									SWIFT_OPTIMIZATION_LEVEL = "-Onone";
 | 
				
			||||||
 | 
									SWIFT_VERSION = 5.0;
 | 
				
			||||||
 | 
									TARGETED_DEVICE_FAMILY = "1,2";
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
								name = Debug;
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
							73ACDFC52E3D0E6100B63535 /* Release */ = {
 | 
				
			||||||
 | 
								isa = XCBuildConfiguration;
 | 
				
			||||||
 | 
								buildSettings = {
 | 
				
			||||||
 | 
									ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
 | 
				
			||||||
 | 
									CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
 | 
				
			||||||
 | 
									CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
 | 
				
			||||||
 | 
									CLANG_ENABLE_OBJC_WEAK = YES;
 | 
				
			||||||
 | 
									CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
 | 
				
			||||||
 | 
									CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
 | 
				
			||||||
 | 
									CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
 | 
				
			||||||
 | 
									CODE_SIGN_ENTITLEMENTS = SolianBroadcastExtension/SolianBroadcastExtension.entitlements;
 | 
				
			||||||
 | 
									CODE_SIGN_STYLE = Automatic;
 | 
				
			||||||
 | 
									CURRENT_PROJECT_VERSION = 1;
 | 
				
			||||||
 | 
									DEVELOPMENT_TEAM = W7HPZ53V6B;
 | 
				
			||||||
 | 
									ENABLE_USER_SCRIPT_SANDBOXING = YES;
 | 
				
			||||||
 | 
									GCC_C_LANGUAGE_STANDARD = gnu17;
 | 
				
			||||||
 | 
									GENERATE_INFOPLIST_FILE = YES;
 | 
				
			||||||
 | 
									INFOPLIST_FILE = SolianBroadcastExtension/Info.plist;
 | 
				
			||||||
 | 
									INFOPLIST_KEY_CFBundleDisplayName = SolianBroadcastExtension;
 | 
				
			||||||
 | 
									INFOPLIST_KEY_NSHumanReadableCopyright = "";
 | 
				
			||||||
 | 
									IPHONEOS_DEPLOYMENT_TARGET = 15.0;
 | 
				
			||||||
 | 
									LD_RUNPATH_SEARCH_PATHS = (
 | 
				
			||||||
 | 
										"$(inherited)",
 | 
				
			||||||
 | 
										"@executable_path/Frameworks",
 | 
				
			||||||
 | 
										"@executable_path/../../Frameworks",
 | 
				
			||||||
 | 
									);
 | 
				
			||||||
 | 
									LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
 | 
				
			||||||
 | 
									MARKETING_VERSION = 1.0;
 | 
				
			||||||
 | 
									MTL_FAST_MATH = YES;
 | 
				
			||||||
 | 
									PRODUCT_BUNDLE_IDENTIFIER = dev.solsynth.solian.SolianBroadcastExtension;
 | 
				
			||||||
 | 
									PRODUCT_NAME = "$(TARGET_NAME)";
 | 
				
			||||||
 | 
									SKIP_INSTALL = YES;
 | 
				
			||||||
 | 
									SWIFT_EMIT_LOC_STRINGS = YES;
 | 
				
			||||||
 | 
									SWIFT_VERSION = 5.0;
 | 
				
			||||||
 | 
									TARGETED_DEVICE_FAMILY = "1,2";
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
								name = Release;
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
 | 
							73ACDFC62E3D0E6100B63535 /* Profile */ = {
 | 
				
			||||||
 | 
								isa = XCBuildConfiguration;
 | 
				
			||||||
 | 
								buildSettings = {
 | 
				
			||||||
 | 
									ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
 | 
				
			||||||
 | 
									CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
 | 
				
			||||||
 | 
									CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
 | 
				
			||||||
 | 
									CLANG_ENABLE_OBJC_WEAK = YES;
 | 
				
			||||||
 | 
									CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
 | 
				
			||||||
 | 
									CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
 | 
				
			||||||
 | 
									CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
 | 
				
			||||||
 | 
									CODE_SIGN_ENTITLEMENTS = SolianBroadcastExtension/SolianBroadcastExtension.entitlements;
 | 
				
			||||||
 | 
									CODE_SIGN_STYLE = Automatic;
 | 
				
			||||||
 | 
									CURRENT_PROJECT_VERSION = 1;
 | 
				
			||||||
 | 
									DEVELOPMENT_TEAM = W7HPZ53V6B;
 | 
				
			||||||
 | 
									ENABLE_USER_SCRIPT_SANDBOXING = YES;
 | 
				
			||||||
 | 
									GCC_C_LANGUAGE_STANDARD = gnu17;
 | 
				
			||||||
 | 
									GENERATE_INFOPLIST_FILE = YES;
 | 
				
			||||||
 | 
									INFOPLIST_FILE = SolianBroadcastExtension/Info.plist;
 | 
				
			||||||
 | 
									INFOPLIST_KEY_CFBundleDisplayName = SolianBroadcastExtension;
 | 
				
			||||||
 | 
									INFOPLIST_KEY_NSHumanReadableCopyright = "";
 | 
				
			||||||
 | 
									IPHONEOS_DEPLOYMENT_TARGET = 15.0;
 | 
				
			||||||
 | 
									LD_RUNPATH_SEARCH_PATHS = (
 | 
				
			||||||
 | 
										"$(inherited)",
 | 
				
			||||||
 | 
										"@executable_path/Frameworks",
 | 
				
			||||||
 | 
										"@executable_path/../../Frameworks",
 | 
				
			||||||
 | 
									);
 | 
				
			||||||
 | 
									LOCALIZATION_PREFERS_STRING_CATALOGS = YES;
 | 
				
			||||||
 | 
									MARKETING_VERSION = 1.0;
 | 
				
			||||||
 | 
									MTL_FAST_MATH = YES;
 | 
				
			||||||
 | 
									PRODUCT_BUNDLE_IDENTIFIER = dev.solsynth.solian.SolianBroadcastExtension;
 | 
				
			||||||
 | 
									PRODUCT_NAME = "$(TARGET_NAME)";
 | 
				
			||||||
 | 
									SKIP_INSTALL = YES;
 | 
				
			||||||
 | 
									SWIFT_EMIT_LOC_STRINGS = YES;
 | 
				
			||||||
 | 
									SWIFT_VERSION = 5.0;
 | 
				
			||||||
 | 
									TARGETED_DEVICE_FAMILY = "1,2";
 | 
				
			||||||
 | 
								};
 | 
				
			||||||
 | 
								name = Profile;
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
		73C305D92E0BE878009035B9 /* Debug */ = {
 | 
							73C305D92E0BE878009035B9 /* Debug */ = {
 | 
				
			||||||
			isa = XCBuildConfiguration;
 | 
								isa = XCBuildConfiguration;
 | 
				
			||||||
			baseConfigurationReference = 17FAB080A9C53193ABD9C15B /* Pods-SolianShareExtension.debug.xcconfig */;
 | 
								baseConfigurationReference = 17FAB080A9C53193ABD9C15B /* Pods-SolianShareExtension.debug.xcconfig */;
 | 
				
			||||||
@@ -1202,7 +1423,8 @@
 | 
				
			|||||||
				ENABLE_BITCODE = NO;
 | 
									ENABLE_BITCODE = NO;
 | 
				
			||||||
				INFOPLIST_FILE = Runner/Info.plist;
 | 
									INFOPLIST_FILE = Runner/Info.plist;
 | 
				
			||||||
				INFOPLIST_KEY_CFBundleDisplayName = Solian;
 | 
									INFOPLIST_KEY_CFBundleDisplayName = Solian;
 | 
				
			||||||
				IPHONEOS_DEPLOYMENT_TARGET = 13.0;
 | 
									INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
 | 
				
			||||||
 | 
									IPHONEOS_DEPLOYMENT_TARGET = 15.0;
 | 
				
			||||||
				LD_RUNPATH_SEARCH_PATHS = (
 | 
									LD_RUNPATH_SEARCH_PATHS = (
 | 
				
			||||||
					"$(inherited)",
 | 
										"$(inherited)",
 | 
				
			||||||
					"@executable_path/Frameworks",
 | 
										"@executable_path/Frameworks",
 | 
				
			||||||
@@ -1229,7 +1451,8 @@
 | 
				
			|||||||
				ENABLE_BITCODE = NO;
 | 
									ENABLE_BITCODE = NO;
 | 
				
			||||||
				INFOPLIST_FILE = Runner/Info.plist;
 | 
									INFOPLIST_FILE = Runner/Info.plist;
 | 
				
			||||||
				INFOPLIST_KEY_CFBundleDisplayName = Solian;
 | 
									INFOPLIST_KEY_CFBundleDisplayName = Solian;
 | 
				
			||||||
				IPHONEOS_DEPLOYMENT_TARGET = 13.0;
 | 
									INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking";
 | 
				
			||||||
 | 
									IPHONEOS_DEPLOYMENT_TARGET = 15.0;
 | 
				
			||||||
				LD_RUNPATH_SEARCH_PATHS = (
 | 
									LD_RUNPATH_SEARCH_PATHS = (
 | 
				
			||||||
					"$(inherited)",
 | 
										"$(inherited)",
 | 
				
			||||||
					"@executable_path/Frameworks",
 | 
										"@executable_path/Frameworks",
 | 
				
			||||||
@@ -1255,6 +1478,16 @@
 | 
				
			|||||||
			defaultConfigurationIsVisible = 0;
 | 
								defaultConfigurationIsVisible = 0;
 | 
				
			||||||
			defaultConfigurationName = Release;
 | 
								defaultConfigurationName = Release;
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
 | 
							73ACDFCB2E3D0E6100B63535 /* Build configuration list for PBXNativeTarget "SolianBroadcastExtension" */ = {
 | 
				
			||||||
 | 
								isa = XCConfigurationList;
 | 
				
			||||||
 | 
								buildConfigurations = (
 | 
				
			||||||
 | 
									73ACDFC42E3D0E6100B63535 /* Debug */,
 | 
				
			||||||
 | 
									73ACDFC52E3D0E6100B63535 /* Release */,
 | 
				
			||||||
 | 
									73ACDFC62E3D0E6100B63535 /* Profile */,
 | 
				
			||||||
 | 
								);
 | 
				
			||||||
 | 
								defaultConfigurationIsVisible = 0;
 | 
				
			||||||
 | 
								defaultConfigurationName = Release;
 | 
				
			||||||
 | 
							};
 | 
				
			||||||
		73C305DD2E0BE878009035B9 /* Build configuration list for PBXNativeTarget "SolianShareExtension" */ = {
 | 
							73C305DD2E0BE878009035B9 /* Build configuration list for PBXNativeTarget "SolianShareExtension" */ = {
 | 
				
			||||||
			isa = XCConfigurationList;
 | 
								isa = XCConfigurationList;
 | 
				
			||||||
			buildConfigurations = (
 | 
								buildConfigurations = (
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,6 +27,7 @@ import UIKit
 | 
				
			|||||||
        UNUserNotificationCenter.current().setNotificationCategories([replyableMessageCategory])
 | 
					        UNUserNotificationCenter.current().setNotificationCategories([replyableMessageCategory])
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        GeneratedPluginRegistrant.register(with: self)
 | 
					        GeneratedPluginRegistrant.register(with: self)
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
        return super.application(application, didFinishLaunchingWithOptions: launchOptions)
 | 
					        return super.application(application, didFinishLaunchingWithOptions: launchOptions)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,8 +1,10 @@
 | 
				
			|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="BYZ-38-t0r">
 | 
					<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="23727" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
 | 
				
			||||||
 | 
					    <device id="retina6_12" orientation="portrait" appearance="light"/>
 | 
				
			||||||
    <dependencies>
 | 
					    <dependencies>
 | 
				
			||||||
        <deployment identifier="iOS"/>
 | 
					        <deployment identifier="iOS"/>
 | 
				
			||||||
        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
 | 
					        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="23721"/>
 | 
				
			||||||
 | 
					        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
 | 
				
			||||||
    </dependencies>
 | 
					    </dependencies>
 | 
				
			||||||
    <scenes>
 | 
					    <scenes>
 | 
				
			||||||
        <!--Flutter View Controller-->
 | 
					        <!--Flutter View Controller-->
 | 
				
			||||||
@@ -14,13 +16,14 @@
 | 
				
			|||||||
                        <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
 | 
					                        <viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
 | 
				
			||||||
                    </layoutGuides>
 | 
					                    </layoutGuides>
 | 
				
			||||||
                    <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
 | 
					                    <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
 | 
				
			||||||
                        <rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
 | 
					                        <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
 | 
				
			||||||
                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
 | 
					                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
 | 
				
			||||||
                        <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
 | 
					                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
 | 
				
			||||||
                    </view>
 | 
					                    </view>
 | 
				
			||||||
                </viewController>
 | 
					                </viewController>
 | 
				
			||||||
                <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
 | 
					                <placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
 | 
				
			||||||
            </objects>
 | 
					            </objects>
 | 
				
			||||||
 | 
					            <point key="canvasLocation" x="-26" y="-76"/>
 | 
				
			||||||
        </scene>
 | 
					        </scene>
 | 
				
			||||||
    </scenes>
 | 
					    </scenes>
 | 
				
			||||||
</document>
 | 
					</document>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,6 +2,12 @@
 | 
				
			|||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 | 
					<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 | 
				
			||||||
<plist version="1.0">
 | 
					<plist version="1.0">
 | 
				
			||||||
<dict>
 | 
					<dict>
 | 
				
			||||||
 | 
						<key>CLIENT_ID</key>
 | 
				
			||||||
 | 
						<string>961776991058-stt7et4qvn3cpscl4r61gl1hnlatqkig.apps.googleusercontent.com</string>
 | 
				
			||||||
 | 
						<key>REVERSED_CLIENT_ID</key>
 | 
				
			||||||
 | 
						<string>com.googleusercontent.apps.961776991058-stt7et4qvn3cpscl4r61gl1hnlatqkig</string>
 | 
				
			||||||
 | 
						<key>ANDROID_CLIENT_ID</key>
 | 
				
			||||||
 | 
						<string>961776991058-r4iv9qoio57ul7utbfpgfrda2etvtch8.apps.googleusercontent.com</string>
 | 
				
			||||||
	<key>API_KEY</key>
 | 
						<key>API_KEY</key>
 | 
				
			||||||
	<string>AIzaSyCzQIyiYKoYHTpGXhN-IjgMML8z797WVD8</string>
 | 
						<string>AIzaSyCzQIyiYKoYHTpGXhN-IjgMML8z797WVD8</string>
 | 
				
			||||||
	<key>GCM_SENDER_ID</key>
 | 
						<key>GCM_SENDER_ID</key>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,16 +2,10 @@
 | 
				
			|||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 | 
					<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 | 
				
			||||||
<plist version="1.0">
 | 
					<plist version="1.0">
 | 
				
			||||||
<dict>
 | 
					<dict>
 | 
				
			||||||
	<key>CLIENT_ID</key>
 | 
						<key>AppGroupId</key>
 | 
				
			||||||
	<string>961776991058-stt7et4qvn3cpscl4r61gl1hnlatqkig.apps.googleusercontent.com</string>
 | 
						<string>$(CUSTOM_GROUP_ID)</string>
 | 
				
			||||||
	<key>REVERSED_CLIENT_ID</key>
 | 
					 | 
				
			||||||
	<string>com.googleusercontent.apps.961776991058-stt7et4qvn3cpscl4r61gl1hnlatqkig</string>
 | 
					 | 
				
			||||||
	<key>PLIST_VERSION</key>
 | 
					 | 
				
			||||||
	<string>1</string>
 | 
					 | 
				
			||||||
	<key>BUNDLE_ID</key>
 | 
						<key>BUNDLE_ID</key>
 | 
				
			||||||
	<string>dev.solsynth.solian</string>
 | 
						<string>dev.solsynth.solian</string>
 | 
				
			||||||
	<key>ITSAppUsesNonExemptEncryption</key>
 | 
					 | 
				
			||||||
	<false/>
 | 
					 | 
				
			||||||
	<key>CADisableMinimumFrameDurationOnPhone</key>
 | 
						<key>CADisableMinimumFrameDurationOnPhone</key>
 | 
				
			||||||
	<true/>
 | 
						<true/>
 | 
				
			||||||
	<key>CFBundleDevelopmentRegion</key>
 | 
						<key>CFBundleDevelopmentRegion</key>
 | 
				
			||||||
@@ -32,31 +26,46 @@
 | 
				
			|||||||
	<string>$(FLUTTER_BUILD_NAME)</string>
 | 
						<string>$(FLUTTER_BUILD_NAME)</string>
 | 
				
			||||||
	<key>CFBundleSignature</key>
 | 
						<key>CFBundleSignature</key>
 | 
				
			||||||
	<string>????</string>
 | 
						<string>????</string>
 | 
				
			||||||
 | 
						<key>CFBundleURLTypes</key>
 | 
				
			||||||
 | 
						<array>
 | 
				
			||||||
 | 
							<dict>
 | 
				
			||||||
 | 
								<key>CFBundleTypeRole</key>
 | 
				
			||||||
 | 
								<string>Editor</string>
 | 
				
			||||||
 | 
								<key>CFBundleURLSchemes</key>
 | 
				
			||||||
 | 
								<array>
 | 
				
			||||||
 | 
									<string>ShareMedia-$(PRODUCT_BUNDLE_IDENTIFIER)</string>
 | 
				
			||||||
 | 
								</array>
 | 
				
			||||||
 | 
							</dict>
 | 
				
			||||||
 | 
						</array>
 | 
				
			||||||
	<key>CFBundleVersion</key>
 | 
						<key>CFBundleVersion</key>
 | 
				
			||||||
	<string>$(FLUTTER_BUILD_NUMBER)</string>
 | 
						<string>$(FLUTTER_BUILD_NUMBER)</string>
 | 
				
			||||||
    <key>CFBundleURLTypes</key>
 | 
						<key>CLIENT_ID</key>
 | 
				
			||||||
    <array>
 | 
						<string>961776991058-stt7et4qvn3cpscl4r61gl1hnlatqkig.apps.googleusercontent.com</string>
 | 
				
			||||||
        <dict>
 | 
						<key>ITSAppUsesNonExemptEncryption</key>
 | 
				
			||||||
            <key>CFBundleTypeRole</key>
 | 
						<false/>
 | 
				
			||||||
            <string>Editor</string>
 | 
					 | 
				
			||||||
            <key>CFBundleURLSchemes</key>
 | 
					 | 
				
			||||||
            <array>
 | 
					 | 
				
			||||||
                <string>ShareMedia-$(PRODUCT_BUNDLE_IDENTIFIER)</string>
 | 
					 | 
				
			||||||
            </array>
 | 
					 | 
				
			||||||
        </dict>
 | 
					 | 
				
			||||||
    </array>
 | 
					 | 
				
			||||||
	<key>LSRequiresIPhoneOS</key>
 | 
						<key>LSRequiresIPhoneOS</key>
 | 
				
			||||||
	<true/>
 | 
						<true/>
 | 
				
			||||||
	<key>NSCalendarsUsageDescription</key>
 | 
						<key>NSCalendarsUsageDescription</key>
 | 
				
			||||||
	<string>Grant access to Calander help us to shows Solar Calander with your own events.</string>
 | 
						<string>Grant access to Calander help us to shows Solar Calander with your own events.</string>
 | 
				
			||||||
	<key>NSCameraUsageDescription</key>
 | 
						<key>NSCameraUsageDescription</key>
 | 
				
			||||||
	<string>Grant access to Camera will allow Solian take photo or video for your post.</string>
 | 
						<string>Grant access to Camera will allow Solian take photo or video for your post.</string>
 | 
				
			||||||
 | 
						<key>NSFaceIDUsageDescription</key>
 | 
				
			||||||
 | 
						<string>Allow the Solar Network verify your ownership of the logged in account and continue your action quickly.</string>
 | 
				
			||||||
	<key>NSMicrophoneUsageDescription</key>
 | 
						<key>NSMicrophoneUsageDescription</key>
 | 
				
			||||||
	<string>Grant access to Microphone will allow Solian record audio for your post.</string>
 | 
						<string>Grant access to Microphone will allow Solian record audio for your post.</string>
 | 
				
			||||||
	<key>NSPhotoLibraryAddUsageDescription</key>
 | 
						<key>NSPhotoLibraryAddUsageDescription</key>
 | 
				
			||||||
	<string>Grant access to Photo Library will allow Solian download photo to album for you.</string>
 | 
						<string>Grant access to Photo Library will allow Solian download photo to album for you.</string>
 | 
				
			||||||
	<key>NSPhotoLibraryUsageDescription</key>
 | 
						<key>NSPhotoLibraryUsageDescription</key>
 | 
				
			||||||
	<string>Grant access to Photo Library will allow Solian upload photo or video for your post.</string>
 | 
						<string>Grant access to Photo Library will allow Solian upload photo or video for your post.</string>
 | 
				
			||||||
 | 
						<key>NSUserActivityTypes</key>
 | 
				
			||||||
 | 
						<array>
 | 
				
			||||||
 | 
							<string>INStartCallIntent</string>
 | 
				
			||||||
 | 
							<string>INSendMessageIntent</string>
 | 
				
			||||||
 | 
						</array>
 | 
				
			||||||
 | 
						<key>PLIST_VERSION</key>
 | 
				
			||||||
 | 
						<string>1</string>
 | 
				
			||||||
 | 
						<key>REVERSED_CLIENT_ID</key>
 | 
				
			||||||
 | 
						<string>com.googleusercontent.apps.961776991058-stt7et4qvn3cpscl4r61gl1hnlatqkig</string>
 | 
				
			||||||
	<key>UIApplicationSupportsIndirectInputEvents</key>
 | 
						<key>UIApplicationSupportsIndirectInputEvents</key>
 | 
				
			||||||
	<true/>
 | 
						<true/>
 | 
				
			||||||
	<key>UIBackgroundModes</key>
 | 
						<key>UIBackgroundModes</key>
 | 
				
			||||||
@@ -74,25 +83,16 @@
 | 
				
			|||||||
	<false/>
 | 
						<false/>
 | 
				
			||||||
	<key>UISupportedInterfaceOrientations</key>
 | 
						<key>UISupportedInterfaceOrientations</key>
 | 
				
			||||||
	<array>
 | 
						<array>
 | 
				
			||||||
		<string>UIInterfaceOrientationPortrait</string>
 | 
					 | 
				
			||||||
		<string>UIInterfaceOrientationLandscapeLeft</string>
 | 
							<string>UIInterfaceOrientationLandscapeLeft</string>
 | 
				
			||||||
		<string>UIInterfaceOrientationLandscapeRight</string>
 | 
							<string>UIInterfaceOrientationLandscapeRight</string>
 | 
				
			||||||
 | 
							<string>UIInterfaceOrientationPortrait</string>
 | 
				
			||||||
	</array>
 | 
						</array>
 | 
				
			||||||
	<key>UISupportedInterfaceOrientations~ipad</key>
 | 
						<key>UISupportedInterfaceOrientations~ipad</key>
 | 
				
			||||||
	<array>
 | 
						<array>
 | 
				
			||||||
		<string>UIInterfaceOrientationPortrait</string>
 | 
					 | 
				
			||||||
		<string>UIInterfaceOrientationPortraitUpsideDown</string>
 | 
					 | 
				
			||||||
		<string>UIInterfaceOrientationLandscapeLeft</string>
 | 
							<string>UIInterfaceOrientationLandscapeLeft</string>
 | 
				
			||||||
		<string>UIInterfaceOrientationLandscapeRight</string>
 | 
							<string>UIInterfaceOrientationLandscapeRight</string>
 | 
				
			||||||
	</array>
 | 
							<string>UIInterfaceOrientationPortrait</string>
 | 
				
			||||||
	<key>NSFaceIDUsageDescription</key>
 | 
							<string>UIInterfaceOrientationPortraitUpsideDown</string>
 | 
				
			||||||
	<string>Allow the Solar Network verify your ownership of the logged in account and continue your action quickly.</string>
 | 
					 | 
				
			||||||
	<key>AppGroupId</key>
 | 
					 | 
				
			||||||
	<string>$(CUSTOM_GROUP_ID)</string>
 | 
					 | 
				
			||||||
	<key>NSUserActivityTypes</key>
 | 
					 | 
				
			||||||
	<array>
 | 
					 | 
				
			||||||
		<string>INStartCallIntent</string>
 | 
					 | 
				
			||||||
		<string>INSendMessageIntent</string>
 | 
					 | 
				
			||||||
	</array>
 | 
						</array>
 | 
				
			||||||
</dict>
 | 
					</dict>
 | 
				
			||||||
</plist>
 | 
					</plist>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -34,7 +34,7 @@ class NotifyDelegate: UIResponder, UNUserNotificationCenterDelegate {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        let serverUrl = UserDefaults.standard.getServerUrl()
 | 
					        let serverUrl = UserDefaults.standard.getServerUrl()
 | 
				
			||||||
        let url = "\(serverUrl)/chat/\(metadata["room_id"] ?? "")/messages"
 | 
					        let url = "\(serverUrl)/sphere/chat/\(metadata["room_id"] ?? "")/messages"
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
        let parameters: [String: Any?] = [
 | 
					        let parameters: [String: Any?] = [
 | 
				
			||||||
            "content": textResponse.userText,
 | 
					            "content": textResponse.userText,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@
 | 
				
			|||||||
import Foundation
 | 
					import Foundation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func getAttachmentUrl(for identifier: String) -> String {
 | 
					func getAttachmentUrl(for identifier: String) -> String {
 | 
				
			||||||
    let serverBaseUrl = "https://nt.solian.app"
 | 
					    let serverBaseUrl = "https://api.solian.app"
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    return identifier.starts(with: "http") ? identifier : "\(serverBaseUrl)/files/\(identifier)"
 | 
					    return identifier.starts(with: "http") ? identifier : "\(serverBaseUrl)/drive/files/\(identifier)"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										37
									
								
								ios/SolianBroadcastExtension/Atomic.swift
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								ios/SolianBroadcastExtension/Atomic.swift
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
				
			|||||||
 | 
					//
 | 
				
			||||||
 | 
					//  Atomic.swift
 | 
				
			||||||
 | 
					//  Broadcast Extension
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//  Created by Maksym Shcheglov.
 | 
				
			||||||
 | 
					//  https://www.onswiftwings.com/posts/atomic-property-wrapper/
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import Foundation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@propertyWrapper
 | 
				
			||||||
 | 
					struct Atomic<Value> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private var value: Value
 | 
				
			||||||
 | 
					    private let lock = NSLock()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    init(wrappedValue value: Value) {
 | 
				
			||||||
 | 
					        self.value = value
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    var wrappedValue: Value {
 | 
				
			||||||
 | 
					        get { load() }
 | 
				
			||||||
 | 
					        set { store(newValue: newValue) }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    func load() -> Value {
 | 
				
			||||||
 | 
					        lock.lock()
 | 
				
			||||||
 | 
					        defer { lock.unlock() }
 | 
				
			||||||
 | 
					        return value
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    mutating func store(newValue: Value) {
 | 
				
			||||||
 | 
					        lock.lock()
 | 
				
			||||||
 | 
					        defer { lock.unlock() }
 | 
				
			||||||
 | 
					        value = newValue
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										29
									
								
								ios/SolianBroadcastExtension/DarwinNotification.swift
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								ios/SolianBroadcastExtension/DarwinNotification.swift
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					//
 | 
				
			||||||
 | 
					//  DarwinNotificationCenter.swift
 | 
				
			||||||
 | 
					//  Broadcast Extension
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//  Created by Alex-Dan Bumbu on 23/03/2021.
 | 
				
			||||||
 | 
					//  Copyright © 2021 8x8, Inc. All rights reserved.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import Foundation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum DarwinNotification: String {
 | 
				
			||||||
 | 
					    case broadcastStarted = "iOS_BroadcastStarted"
 | 
				
			||||||
 | 
					    case broadcastStopped = "iOS_BroadcastStopped"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class DarwinNotificationCenter {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    static let shared = DarwinNotificationCenter()
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    private let notificationCenter: CFNotificationCenter
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    init() {
 | 
				
			||||||
 | 
					        notificationCenter = CFNotificationCenterGetDarwinNotifyCenter()
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    func postNotification(_ name: DarwinNotification) {
 | 
				
			||||||
 | 
					        CFNotificationCenterPostNotification(notificationCenter, CFNotificationName(rawValue: name.rawValue as CFString), nil, nil, true)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										15
									
								
								ios/SolianBroadcastExtension/Info.plist
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								ios/SolianBroadcastExtension/Info.plist
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 | 
				
			||||||
 | 
					<plist version="1.0">
 | 
				
			||||||
 | 
					<dict>
 | 
				
			||||||
 | 
						<key>NSExtension</key>
 | 
				
			||||||
 | 
						<dict>
 | 
				
			||||||
 | 
							<key>NSExtensionPointIdentifier</key>
 | 
				
			||||||
 | 
							<string>com.apple.broadcast-services-upload</string>
 | 
				
			||||||
 | 
							<key>NSExtensionPrincipalClass</key>
 | 
				
			||||||
 | 
							<string>$(PRODUCT_MODULE_NAME).SampleHandler</string>
 | 
				
			||||||
 | 
							<key>RPBroadcastProcessMode</key>
 | 
				
			||||||
 | 
							<string>RPBroadcastProcessModeSampleBuffer</string>
 | 
				
			||||||
 | 
						</dict>
 | 
				
			||||||
 | 
					</dict>
 | 
				
			||||||
 | 
					</plist>
 | 
				
			||||||
							
								
								
									
										103
									
								
								ios/SolianBroadcastExtension/SampleHandler.swift
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								ios/SolianBroadcastExtension/SampleHandler.swift
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,103 @@
 | 
				
			|||||||
 | 
					//
 | 
				
			||||||
 | 
					//  SampleHandler.swift
 | 
				
			||||||
 | 
					//  Broadcast Extension
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//  Created by Alex-Dan Bumbu on 04.06.2021.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import ReplayKit
 | 
				
			||||||
 | 
					import OSLog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					let broadcastLogger = OSLog(subsystem: "dev.solsynth.solian", category: "Broadcast")
 | 
				
			||||||
 | 
					private enum Constants {
 | 
				
			||||||
 | 
					    // the App Group ID value that the app and the broadcast extension targets are setup with. It differs for each app.
 | 
				
			||||||
 | 
					    static let appGroupIdentifier = "group.solsynth.solian"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class SampleHandler: RPBroadcastSampleHandler {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private var clientConnection: SocketConnection?
 | 
				
			||||||
 | 
					    private var uploader: SampleUploader?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private var frameCount: Int = 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    var socketFilePath: String {
 | 
				
			||||||
 | 
					      let sharedContainer = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: Constants.appGroupIdentifier)
 | 
				
			||||||
 | 
					        return sharedContainer?.appendingPathComponent("rtc_SSFD").path ?? ""
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    override init() {
 | 
				
			||||||
 | 
					      super.init()
 | 
				
			||||||
 | 
					        if let connection = SocketConnection(filePath: socketFilePath) {
 | 
				
			||||||
 | 
					          clientConnection = connection
 | 
				
			||||||
 | 
					          setupConnection()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					          uploader = SampleUploader(connection: connection)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        os_log(.debug, log: broadcastLogger, "%{public}s", socketFilePath)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    override func broadcastStarted(withSetupInfo setupInfo: [String: NSObject]?) {
 | 
				
			||||||
 | 
					        // User has requested to start the broadcast. Setup info from the UI extension can be supplied but optional.
 | 
				
			||||||
 | 
					        frameCount = 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        DarwinNotificationCenter.shared.postNotification(.broadcastStarted)
 | 
				
			||||||
 | 
					        openConnection()
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    override func broadcastPaused() {
 | 
				
			||||||
 | 
					        // User has requested to pause the broadcast. Samples will stop being delivered.
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    override func broadcastResumed() {
 | 
				
			||||||
 | 
					        // User has requested to resume the broadcast. Samples delivery will resume.
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    override func broadcastFinished() {
 | 
				
			||||||
 | 
					        // User has requested to finish the broadcast.
 | 
				
			||||||
 | 
					        DarwinNotificationCenter.shared.postNotification(.broadcastStopped)
 | 
				
			||||||
 | 
					        clientConnection?.close()
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    override func processSampleBuffer(_ sampleBuffer: CMSampleBuffer, with sampleBufferType: RPSampleBufferType) {
 | 
				
			||||||
 | 
					        switch sampleBufferType {
 | 
				
			||||||
 | 
					        case RPSampleBufferType.video:
 | 
				
			||||||
 | 
					            uploader?.send(sample: sampleBuffer)
 | 
				
			||||||
 | 
					        default:
 | 
				
			||||||
 | 
					            break
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private extension SampleHandler {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    func setupConnection() {
 | 
				
			||||||
 | 
					        clientConnection?.didClose = { [weak self] error in
 | 
				
			||||||
 | 
					            os_log(.debug, log: broadcastLogger, "client connection did close \(String(describing: error))")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if let error = error {
 | 
				
			||||||
 | 
					                self?.finishBroadcastWithError(error)
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                // the displayed failure message is more user friendly when using NSError instead of Error
 | 
				
			||||||
 | 
					                let JMScreenSharingStopped = 10001
 | 
				
			||||||
 | 
					                let customError = NSError(domain: RPRecordingErrorDomain, code: JMScreenSharingStopped, userInfo: [NSLocalizedDescriptionKey: "Screen sharing stopped"])
 | 
				
			||||||
 | 
					                self?.finishBroadcastWithError(customError)
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    func openConnection() {
 | 
				
			||||||
 | 
					        let queue = DispatchQueue(label: "broadcast.connectTimer")
 | 
				
			||||||
 | 
					        let timer = DispatchSource.makeTimerSource(queue: queue)
 | 
				
			||||||
 | 
					        timer.schedule(deadline: .now(), repeating: .milliseconds(100), leeway: .milliseconds(500))
 | 
				
			||||||
 | 
					        timer.setEventHandler { [weak self] in
 | 
				
			||||||
 | 
					            guard self?.clientConnection?.open() == true else {
 | 
				
			||||||
 | 
					                return
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            timer.cancel()
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        timer.resume()
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										147
									
								
								ios/SolianBroadcastExtension/SampleUploader.swift
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										147
									
								
								ios/SolianBroadcastExtension/SampleUploader.swift
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,147 @@
 | 
				
			|||||||
 | 
					//
 | 
				
			||||||
 | 
					//  SampleUploader.swift
 | 
				
			||||||
 | 
					//  Broadcast Extension
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//  Created by Alex-Dan Bumbu on 22/03/2021.
 | 
				
			||||||
 | 
					//  Copyright © 2021 8x8, Inc. All rights reserved.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import Foundation
 | 
				
			||||||
 | 
					import ReplayKit
 | 
				
			||||||
 | 
					import OSLog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private enum Constants {
 | 
				
			||||||
 | 
					    static let bufferMaxLength = 10240
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class SampleUploader {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    private static var imageContext = CIContext(options: nil)
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @Atomic private var isReady = false
 | 
				
			||||||
 | 
					    private var connection: SocketConnection
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					    private var dataToSend: Data?
 | 
				
			||||||
 | 
					    private var byteIndex = 0
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					    private let serialQueue: DispatchQueue
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    init(connection: SocketConnection) {
 | 
				
			||||||
 | 
					        self.connection = connection
 | 
				
			||||||
 | 
					        self.serialQueue = DispatchQueue(label: "org.jitsi.meet.broadcast.sampleUploader")
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					        setupConnection()
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					    @discardableResult func send(sample buffer: CMSampleBuffer) -> Bool {
 | 
				
			||||||
 | 
					        guard isReady else {
 | 
				
			||||||
 | 
					            return false
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        isReady = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        dataToSend = prepare(sample: buffer)
 | 
				
			||||||
 | 
					        byteIndex = 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        serialQueue.async { [weak self] in
 | 
				
			||||||
 | 
					            self?.sendDataChunk()
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        return true
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private extension SampleUploader {
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    func setupConnection() {
 | 
				
			||||||
 | 
					        connection.didOpen = { [weak self] in
 | 
				
			||||||
 | 
					            self?.isReady = true
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        connection.streamHasSpaceAvailable = { [weak self] in
 | 
				
			||||||
 | 
					            self?.serialQueue.async {
 | 
				
			||||||
 | 
					                if let success = self?.sendDataChunk() {
 | 
				
			||||||
 | 
					                    self?.isReady = !success
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @discardableResult func sendDataChunk() -> Bool {
 | 
				
			||||||
 | 
					        guard let dataToSend = dataToSend else {
 | 
				
			||||||
 | 
					            return false
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					        var bytesLeft = dataToSend.count - byteIndex
 | 
				
			||||||
 | 
					        var length = bytesLeft > Constants.bufferMaxLength ? Constants.bufferMaxLength : bytesLeft
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        length = dataToSend[byteIndex..<(byteIndex + length)].withUnsafeBytes {
 | 
				
			||||||
 | 
					            guard let ptr = $0.bindMemory(to: UInt8.self).baseAddress else {
 | 
				
			||||||
 | 
					                return 0
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return connection.writeToStream(buffer: ptr, maxLength: length)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if length > 0 {
 | 
				
			||||||
 | 
					            byteIndex += length
 | 
				
			||||||
 | 
					            bytesLeft -= length
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if bytesLeft == 0 {
 | 
				
			||||||
 | 
					                self.dataToSend = nil
 | 
				
			||||||
 | 
					                byteIndex = 0
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            os_log(.debug, log: broadcastLogger, "writeBufferToStream failure")
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					        return true
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    func prepare(sample buffer: CMSampleBuffer) -> Data? {
 | 
				
			||||||
 | 
					        guard let imageBuffer = CMSampleBufferGetImageBuffer(buffer) else {
 | 
				
			||||||
 | 
					            os_log(.debug, log: broadcastLogger, "image buffer not available")
 | 
				
			||||||
 | 
					            return nil
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        CVPixelBufferLockBaseAddress(imageBuffer, .readOnly)
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        let scaleFactor = 1.0
 | 
				
			||||||
 | 
					        let width = CVPixelBufferGetWidth(imageBuffer)/Int(scaleFactor)
 | 
				
			||||||
 | 
					        let height = CVPixelBufferGetHeight(imageBuffer)/Int(scaleFactor)
 | 
				
			||||||
 | 
					        let orientation = CMGetAttachment(buffer, key: RPVideoSampleOrientationKey as CFString, attachmentModeOut: nil)?.uintValue ?? 0
 | 
				
			||||||
 | 
					                                    
 | 
				
			||||||
 | 
					        let scaleTransform = CGAffineTransform(scaleX: CGFloat(1.0/scaleFactor), y: CGFloat(1.0/scaleFactor))
 | 
				
			||||||
 | 
					        let bufferData = self.jpegData(from: imageBuffer, scale: scaleTransform)
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        CVPixelBufferUnlockBaseAddress(imageBuffer, .readOnly)
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        guard let messageData = bufferData else {
 | 
				
			||||||
 | 
					            os_log(.debug, log: broadcastLogger, "corrupted image buffer")
 | 
				
			||||||
 | 
					            return nil
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					              
 | 
				
			||||||
 | 
					        let httpResponse = CFHTTPMessageCreateResponse(nil, 200, nil, kCFHTTPVersion1_1).takeRetainedValue()
 | 
				
			||||||
 | 
					        CFHTTPMessageSetHeaderFieldValue(httpResponse, "Content-Length" as CFString, String(messageData.count) as CFString)
 | 
				
			||||||
 | 
					        CFHTTPMessageSetHeaderFieldValue(httpResponse, "Buffer-Width" as CFString, String(width) as CFString)
 | 
				
			||||||
 | 
					        CFHTTPMessageSetHeaderFieldValue(httpResponse, "Buffer-Height" as CFString, String(height) as CFString)
 | 
				
			||||||
 | 
					        CFHTTPMessageSetHeaderFieldValue(httpResponse, "Buffer-Orientation" as CFString, String(orientation) as CFString)
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        CFHTTPMessageSetBody(httpResponse, messageData as CFData)
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        let serializedMessage = CFHTTPMessageCopySerializedMessage(httpResponse)?.takeRetainedValue() as Data?
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					        return serializedMessage
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    func jpegData(from buffer: CVPixelBuffer, scale scaleTransform: CGAffineTransform) -> Data? {
 | 
				
			||||||
 | 
					        let image = CIImage(cvPixelBuffer: buffer).transformed(by: scaleTransform)
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        guard let colorSpace = image.colorSpace else {
 | 
				
			||||||
 | 
					            return nil
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					        let options: [CIImageRepresentationOption: Float] = [kCGImageDestinationLossyCompressionQuality as CIImageRepresentationOption: 1.0]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return SampleUploader.imageContext.jpegRepresentation(of: image, colorSpace: colorSpace, options: options)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										199
									
								
								ios/SolianBroadcastExtension/SocketConnection.swift
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										199
									
								
								ios/SolianBroadcastExtension/SocketConnection.swift
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,199 @@
 | 
				
			|||||||
 | 
					//
 | 
				
			||||||
 | 
					//  SocketConnection.swift
 | 
				
			||||||
 | 
					//  Broadcast Extension
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					//  Created by Alex-Dan Bumbu on 22/03/2021.
 | 
				
			||||||
 | 
					//  Copyright © 2021 Atlassian Inc. All rights reserved.
 | 
				
			||||||
 | 
					//
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import Foundation
 | 
				
			||||||
 | 
					import OSLog
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class SocketConnection: NSObject {
 | 
				
			||||||
 | 
					    var didOpen: (() -> Void)?
 | 
				
			||||||
 | 
					    var didClose: ((Error?) -> Void)?
 | 
				
			||||||
 | 
					    var streamHasSpaceAvailable: (() -> Void)?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private let filePath: String
 | 
				
			||||||
 | 
					    private var socketHandle: Int32 = -1
 | 
				
			||||||
 | 
					    private var address: sockaddr_un?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private var inputStream: InputStream?
 | 
				
			||||||
 | 
					    private var outputStream: OutputStream?
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    private var networkQueue: DispatchQueue?
 | 
				
			||||||
 | 
					    private var shouldKeepRunning = false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    init?(filePath path: String) {
 | 
				
			||||||
 | 
					        filePath = path
 | 
				
			||||||
 | 
					        socketHandle = Darwin.socket(AF_UNIX, SOCK_STREAM, 0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        guard socketHandle != -1 else {
 | 
				
			||||||
 | 
					            os_log(.debug, log: broadcastLogger, "failure: create socket")
 | 
				
			||||||
 | 
					            return nil
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    func open() -> Bool {
 | 
				
			||||||
 | 
					        os_log(.debug, log: broadcastLogger, "open socket connection")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        guard FileManager.default.fileExists(atPath: filePath) else {
 | 
				
			||||||
 | 
					            os_log(.debug, log: broadcastLogger, "failure: socket file missing")
 | 
				
			||||||
 | 
					            return false
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      
 | 
				
			||||||
 | 
					        guard setupAddress() == true else {
 | 
				
			||||||
 | 
					            return false
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        guard connectSocket() == true else {
 | 
				
			||||||
 | 
					            return false
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        setupStreams()
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        inputStream?.open()
 | 
				
			||||||
 | 
					        outputStream?.open()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return true
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    func close() {
 | 
				
			||||||
 | 
					        unscheduleStreams()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        inputStream?.delegate = nil
 | 
				
			||||||
 | 
					        outputStream?.delegate = nil
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        inputStream?.close()
 | 
				
			||||||
 | 
					        outputStream?.close()
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        inputStream = nil
 | 
				
			||||||
 | 
					        outputStream = nil
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    func writeToStream(buffer: UnsafePointer<UInt8>, maxLength length: Int) -> Int {
 | 
				
			||||||
 | 
					        outputStream?.write(buffer, maxLength: length) ?? 0
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					extension SocketConnection: StreamDelegate {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    func stream(_ aStream: Stream, handle eventCode: Stream.Event) {
 | 
				
			||||||
 | 
					        switch eventCode {
 | 
				
			||||||
 | 
					        case .openCompleted:
 | 
				
			||||||
 | 
					            os_log(.debug, log: broadcastLogger, "client stream open completed")
 | 
				
			||||||
 | 
					            if aStream == outputStream {
 | 
				
			||||||
 | 
					                didOpen?()
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        case .hasBytesAvailable:
 | 
				
			||||||
 | 
					            if aStream == inputStream {
 | 
				
			||||||
 | 
					                var buffer: UInt8 = 0
 | 
				
			||||||
 | 
					                let numberOfBytesRead = inputStream?.read(&buffer, maxLength: 1)
 | 
				
			||||||
 | 
					                if numberOfBytesRead == 0 && aStream.streamStatus == .atEnd {
 | 
				
			||||||
 | 
					                    os_log(.debug, log: broadcastLogger, "server socket closed")
 | 
				
			||||||
 | 
					                    close()
 | 
				
			||||||
 | 
					                    notifyDidClose(error: nil)
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        case .hasSpaceAvailable:
 | 
				
			||||||
 | 
					            if aStream == outputStream {
 | 
				
			||||||
 | 
					                streamHasSpaceAvailable?()
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        case .errorOccurred:
 | 
				
			||||||
 | 
					            os_log(.debug, log: broadcastLogger, "client stream error occured: \(String(describing: aStream.streamError))")
 | 
				
			||||||
 | 
					            close()
 | 
				
			||||||
 | 
					            notifyDidClose(error: aStream.streamError)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        default:
 | 
				
			||||||
 | 
					            break
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					private extension SocketConnection {
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					    func setupAddress() -> Bool {
 | 
				
			||||||
 | 
					        var addr = sockaddr_un()
 | 
				
			||||||
 | 
					        guard filePath.count < MemoryLayout.size(ofValue: addr.sun_path) else {
 | 
				
			||||||
 | 
					            os_log(.debug, log: broadcastLogger, "failure: fd path is too long")
 | 
				
			||||||
 | 
					            return false
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        _ = withUnsafeMutablePointer(to: &addr.sun_path.0) { ptr in
 | 
				
			||||||
 | 
					            filePath.withCString {
 | 
				
			||||||
 | 
					                strncpy(ptr, $0, filePath.count)
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        address = addr
 | 
				
			||||||
 | 
					        return true
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    func connectSocket() -> Bool {
 | 
				
			||||||
 | 
					        guard var addr = address else {
 | 
				
			||||||
 | 
					            return false
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        let status = withUnsafePointer(to: &addr) { ptr in
 | 
				
			||||||
 | 
					            ptr.withMemoryRebound(to: sockaddr.self, capacity: 1) {
 | 
				
			||||||
 | 
					                Darwin.connect(socketHandle, $0, socklen_t(MemoryLayout<sockaddr_un>.size))
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        guard status == noErr else {
 | 
				
			||||||
 | 
					            os_log(.debug, log: broadcastLogger, "failure: \(status)")
 | 
				
			||||||
 | 
					            return false
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        return true
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    func setupStreams() {
 | 
				
			||||||
 | 
					        var readStream: Unmanaged<CFReadStream>?
 | 
				
			||||||
 | 
					        var writeStream: Unmanaged<CFWriteStream>?
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        CFStreamCreatePairWithSocket(kCFAllocatorDefault, socketHandle, &readStream, &writeStream)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        inputStream = readStream?.takeRetainedValue()
 | 
				
			||||||
 | 
					        inputStream?.delegate = self
 | 
				
			||||||
 | 
					        inputStream?.setProperty(kCFBooleanTrue, forKey: Stream.PropertyKey(kCFStreamPropertyShouldCloseNativeSocket as String))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        outputStream = writeStream?.takeRetainedValue()
 | 
				
			||||||
 | 
					        outputStream?.delegate = self
 | 
				
			||||||
 | 
					        outputStream?.setProperty(kCFBooleanTrue, forKey: Stream.PropertyKey(kCFStreamPropertyShouldCloseNativeSocket as String))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        scheduleStreams()
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					    func scheduleStreams() {
 | 
				
			||||||
 | 
					        shouldKeepRunning = true
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        networkQueue = DispatchQueue.global(qos: .userInitiated)
 | 
				
			||||||
 | 
					        networkQueue?.async { [weak self] in
 | 
				
			||||||
 | 
					            self?.inputStream?.schedule(in: .current, forMode: .common)
 | 
				
			||||||
 | 
					            self?.outputStream?.schedule(in: .current, forMode: .common)
 | 
				
			||||||
 | 
					            RunLoop.current.run()
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					            var isRunning = false
 | 
				
			||||||
 | 
					                        
 | 
				
			||||||
 | 
					            repeat {
 | 
				
			||||||
 | 
					                isRunning = self?.shouldKeepRunning ?? false && RunLoop.current.run(mode: .default, before: .distantFuture)
 | 
				
			||||||
 | 
					            } while (isRunning)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    func unscheduleStreams() {
 | 
				
			||||||
 | 
					        networkQueue?.sync { [weak self] in
 | 
				
			||||||
 | 
					            self?.inputStream?.remove(from: .current, forMode: .common)
 | 
				
			||||||
 | 
					            self?.outputStream?.remove(from: .current, forMode: .common)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        shouldKeepRunning = false
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    func notifyDidClose(error: Error?) {
 | 
				
			||||||
 | 
					        if didClose != nil {
 | 
				
			||||||
 | 
					            didClose?(error)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,10 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 | 
				
			||||||
 | 
					<plist version="1.0">
 | 
				
			||||||
 | 
					<dict>
 | 
				
			||||||
 | 
						<key>com.apple.security.application-groups</key>
 | 
				
			||||||
 | 
						<array>
 | 
				
			||||||
 | 
							<string>group.solsynth.solian</string>
 | 
				
			||||||
 | 
						</array>
 | 
				
			||||||
 | 
					</dict>
 | 
				
			||||||
 | 
					</plist>
 | 
				
			||||||
@@ -49,8 +49,7 @@ class AppDatabase extends _$AppDatabase {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Future<int> updateMessage(ChatMessagesCompanion message) {
 | 
					  Future<int> updateMessage(ChatMessagesCompanion message) {
 | 
				
			||||||
    return (update(chatMessages)
 | 
					    return into(chatMessages).insert(message, mode: InsertMode.insertOrReplace);
 | 
				
			||||||
      ..where((m) => m.id.equals(message.id.value))).write(message);
 | 
					 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Future<int> updateMessageStatus(String id, MessageStatus status) {
 | 
					  Future<int> updateMessageStatus(String id, MessageStatus status) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,484 +0,0 @@
 | 
				
			|||||||
import 'package:dio/dio.dart';
 | 
					 | 
				
			||||||
import 'package:island/database/drift_db.dart';
 | 
					 | 
				
			||||||
import 'package:island/database/message.dart';
 | 
					 | 
				
			||||||
import 'package:island/models/chat.dart';
 | 
					 | 
				
			||||||
import 'package:island/models/file.dart';
 | 
					 | 
				
			||||||
import 'package:island/services/file.dart';
 | 
					 | 
				
			||||||
import 'package:island/widgets/alert.dart';
 | 
					 | 
				
			||||||
import 'package:uuid/uuid.dart';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class MessageRepository {
 | 
					 | 
				
			||||||
  final SnChatRoom room;
 | 
					 | 
				
			||||||
  final SnChatMember identity;
 | 
					 | 
				
			||||||
  final Dio _apiClient;
 | 
					 | 
				
			||||||
  final AppDatabase _database;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  final Map<String, LocalChatMessage> pendingMessages = {};
 | 
					 | 
				
			||||||
  final Map<String, Map<int, double>> fileUploadProgress = {};
 | 
					 | 
				
			||||||
  int? _totalCount;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  MessageRepository(this.room, this.identity, this._apiClient, this._database);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  Future<LocalChatMessage?> getLastMessages() async {
 | 
					 | 
				
			||||||
    final dbMessages = await _database.getMessagesForRoom(
 | 
					 | 
				
			||||||
      room.id,
 | 
					 | 
				
			||||||
      offset: 0,
 | 
					 | 
				
			||||||
      limit: 1,
 | 
					 | 
				
			||||||
    );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (dbMessages.isEmpty) {
 | 
					 | 
				
			||||||
      return null;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return _database.companionToMessage(dbMessages.first);
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  Future<bool> syncMessages() async {
 | 
					 | 
				
			||||||
    final lastMessage = await getLastMessages();
 | 
					 | 
				
			||||||
    if (lastMessage == null) return false;
 | 
					 | 
				
			||||||
    try {
 | 
					 | 
				
			||||||
      final resp = await _apiClient.post(
 | 
					 | 
				
			||||||
        '/chat/${room.id}/sync',
 | 
					 | 
				
			||||||
        data: {
 | 
					 | 
				
			||||||
          'last_sync_timestamp':
 | 
					 | 
				
			||||||
              lastMessage.toRemoteMessage().updatedAt.millisecondsSinceEpoch,
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
      );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      final response = MessageSyncResponse.fromJson(resp.data);
 | 
					 | 
				
			||||||
      for (final change in response.changes) {
 | 
					 | 
				
			||||||
        switch (change.action) {
 | 
					 | 
				
			||||||
          case MessageChangeAction.create:
 | 
					 | 
				
			||||||
            await receiveMessage(change.message!);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
          case MessageChangeAction.update:
 | 
					 | 
				
			||||||
            await receiveMessageUpdate(change.message!);
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
          case MessageChangeAction.delete:
 | 
					 | 
				
			||||||
            await receiveMessageDeletion(change.messageId.toString());
 | 
					 | 
				
			||||||
            break;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    } catch (err) {
 | 
					 | 
				
			||||||
      showErrorAlert(err);
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    return true;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  Future<List<LocalChatMessage>> listMessages({
 | 
					 | 
				
			||||||
    int offset = 0,
 | 
					 | 
				
			||||||
    int take = 20,
 | 
					 | 
				
			||||||
    bool synced = false,
 | 
					 | 
				
			||||||
  }) async {
 | 
					 | 
				
			||||||
    try {
 | 
					 | 
				
			||||||
      // For initial load, fetch latest messages in the background to sync.
 | 
					 | 
				
			||||||
      if (offset == 0 && !synced) {
 | 
					 | 
				
			||||||
        // Not awaiting this is intentional, for a quicker UI response.
 | 
					 | 
				
			||||||
        // The UI should rely on a stream from the database to get updates.
 | 
					 | 
				
			||||||
        _fetchAndCacheMessages(room.id, offset: 0, take: take).catchError((_) {
 | 
					 | 
				
			||||||
          // Best effort, errors will be handled by later fetches.
 | 
					 | 
				
			||||||
          return <LocalChatMessage>[];
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      final localMessages = await _getCachedMessages(
 | 
					 | 
				
			||||||
        room.id,
 | 
					 | 
				
			||||||
        offset: offset,
 | 
					 | 
				
			||||||
        take: take,
 | 
					 | 
				
			||||||
      );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      // If local cache has messages, return them. This is the common case for scrolling up.
 | 
					 | 
				
			||||||
      if (localMessages.isNotEmpty) {
 | 
					 | 
				
			||||||
        return localMessages;
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      // If local cache is empty, we've probably reached the end of cached history.
 | 
					 | 
				
			||||||
      // Fetch from remote. This will also be hit on first load if cache is empty.
 | 
					 | 
				
			||||||
      return await _fetchAndCacheMessages(room.id, offset: offset, take: take);
 | 
					 | 
				
			||||||
    } catch (e) {
 | 
					 | 
				
			||||||
      // Final fallback to cache in case of network errors during fetch.
 | 
					 | 
				
			||||||
      final localMessages = await _getCachedMessages(
 | 
					 | 
				
			||||||
        room.id,
 | 
					 | 
				
			||||||
        offset: offset,
 | 
					 | 
				
			||||||
        take: take,
 | 
					 | 
				
			||||||
      );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      if (localMessages.isNotEmpty) {
 | 
					 | 
				
			||||||
        return localMessages;
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      rethrow;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  Future<List<LocalChatMessage>> _getCachedMessages(
 | 
					 | 
				
			||||||
    String roomId, {
 | 
					 | 
				
			||||||
    int offset = 0,
 | 
					 | 
				
			||||||
    int take = 20,
 | 
					 | 
				
			||||||
  }) async {
 | 
					 | 
				
			||||||
    // Get messages from local database
 | 
					 | 
				
			||||||
    final dbMessages = await _database.getMessagesForRoom(
 | 
					 | 
				
			||||||
      roomId,
 | 
					 | 
				
			||||||
      offset: offset,
 | 
					 | 
				
			||||||
      limit: take,
 | 
					 | 
				
			||||||
    );
 | 
					 | 
				
			||||||
    final dbLocalMessages =
 | 
					 | 
				
			||||||
        dbMessages.map(_database.companionToMessage).toList();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Combine with pending messages for the first page
 | 
					 | 
				
			||||||
    if (offset == 0) {
 | 
					 | 
				
			||||||
      final pendingForRoom =
 | 
					 | 
				
			||||||
          pendingMessages.values.where((msg) => msg.roomId == roomId).toList();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      final allMessages = [...pendingForRoom, ...dbLocalMessages];
 | 
					 | 
				
			||||||
      allMessages.sort((a, b) => b.createdAt.compareTo(a.createdAt));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      // Remove duplicates by ID, preserving the order
 | 
					 | 
				
			||||||
      final uniqueMessages = <LocalChatMessage>[];
 | 
					 | 
				
			||||||
      final seenIds = <String>{};
 | 
					 | 
				
			||||||
      for (final message in allMessages) {
 | 
					 | 
				
			||||||
        if (seenIds.add(message.id)) {
 | 
					 | 
				
			||||||
          uniqueMessages.add(message);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
      return uniqueMessages;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return dbLocalMessages;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  Future<List<LocalChatMessage>> _fetchAndCacheMessages(
 | 
					 | 
				
			||||||
    String roomId, {
 | 
					 | 
				
			||||||
    int offset = 0,
 | 
					 | 
				
			||||||
    int take = 20,
 | 
					 | 
				
			||||||
  }) async {
 | 
					 | 
				
			||||||
    // Use cached total count if available, otherwise fetch it
 | 
					 | 
				
			||||||
    if (_totalCount == null) {
 | 
					 | 
				
			||||||
      final response = await _apiClient.get(
 | 
					 | 
				
			||||||
        '/chat/$roomId/messages',
 | 
					 | 
				
			||||||
        queryParameters: {'offset': 0, 'take': 1},
 | 
					 | 
				
			||||||
      );
 | 
					 | 
				
			||||||
      _totalCount = int.parse(response.headers['x-total']?.firstOrNull ?? '0');
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (offset >= _totalCount!) {
 | 
					 | 
				
			||||||
      return [];
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    final response = await _apiClient.get(
 | 
					 | 
				
			||||||
      '/chat/$roomId/messages',
 | 
					 | 
				
			||||||
      queryParameters: {'offset': offset, 'take': take},
 | 
					 | 
				
			||||||
    );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    final List<dynamic> data = response.data;
 | 
					 | 
				
			||||||
    // Update total count from response headers
 | 
					 | 
				
			||||||
    _totalCount = int.parse(response.headers['x-total']?.firstOrNull ?? '0');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    final messages =
 | 
					 | 
				
			||||||
        data.map((json) {
 | 
					 | 
				
			||||||
          final remoteMessage = SnChatMessage.fromJson(json);
 | 
					 | 
				
			||||||
          return LocalChatMessage.fromRemoteMessage(
 | 
					 | 
				
			||||||
            remoteMessage,
 | 
					 | 
				
			||||||
            MessageStatus.sent,
 | 
					 | 
				
			||||||
          );
 | 
					 | 
				
			||||||
        }).toList();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    for (final message in messages) {
 | 
					 | 
				
			||||||
      await _database.saveMessage(_database.messageToCompanion(message));
 | 
					 | 
				
			||||||
      if (message.nonce != null) {
 | 
					 | 
				
			||||||
        pendingMessages.removeWhere(
 | 
					 | 
				
			||||||
          (_, pendingMsg) => pendingMsg.nonce == message.nonce,
 | 
					 | 
				
			||||||
        );
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return messages;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  Future<LocalChatMessage> sendMessage(
 | 
					 | 
				
			||||||
    String token,
 | 
					 | 
				
			||||||
    String baseUrl,
 | 
					 | 
				
			||||||
    String roomId,
 | 
					 | 
				
			||||||
    String content,
 | 
					 | 
				
			||||||
    String nonce, {
 | 
					 | 
				
			||||||
    required List<UniversalFile> attachments,
 | 
					 | 
				
			||||||
    Map<String, dynamic>? meta,
 | 
					 | 
				
			||||||
    SnChatMessage? replyingTo,
 | 
					 | 
				
			||||||
    SnChatMessage? forwardingTo,
 | 
					 | 
				
			||||||
    SnChatMessage? editingTo,
 | 
					 | 
				
			||||||
    Function(LocalChatMessage)? onPending,
 | 
					 | 
				
			||||||
    Function(String, Map<int, double>)? onProgress,
 | 
					 | 
				
			||||||
  }) async {
 | 
					 | 
				
			||||||
    // Generate a unique nonce for this message
 | 
					 | 
				
			||||||
    final nonce = const Uuid().v4();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Create a local message with pending status
 | 
					 | 
				
			||||||
    final mockMessage = SnChatMessage(
 | 
					 | 
				
			||||||
      id: 'pending_$nonce',
 | 
					 | 
				
			||||||
      chatRoomId: roomId,
 | 
					 | 
				
			||||||
      senderId: identity.id,
 | 
					 | 
				
			||||||
      content: content,
 | 
					 | 
				
			||||||
      createdAt: DateTime.now(),
 | 
					 | 
				
			||||||
      updatedAt: DateTime.now(),
 | 
					 | 
				
			||||||
      nonce: nonce,
 | 
					 | 
				
			||||||
      sender: identity,
 | 
					 | 
				
			||||||
    );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    final localMessage = LocalChatMessage.fromRemoteMessage(
 | 
					 | 
				
			||||||
      mockMessage,
 | 
					 | 
				
			||||||
      MessageStatus.pending,
 | 
					 | 
				
			||||||
    );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Store in memory and database
 | 
					 | 
				
			||||||
    pendingMessages[localMessage.id] = localMessage;
 | 
					 | 
				
			||||||
    fileUploadProgress[localMessage.id] = {};
 | 
					 | 
				
			||||||
    await _database.saveMessage(_database.messageToCompanion(localMessage));
 | 
					 | 
				
			||||||
    onPending?.call(localMessage);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    try {
 | 
					 | 
				
			||||||
      var cloudAttachments = List.empty(growable: true);
 | 
					 | 
				
			||||||
      // Upload files
 | 
					 | 
				
			||||||
      for (var idx = 0; idx < attachments.length; idx++) {
 | 
					 | 
				
			||||||
        final cloudFile =
 | 
					 | 
				
			||||||
            await putMediaToCloud(
 | 
					 | 
				
			||||||
              fileData: attachments[idx],
 | 
					 | 
				
			||||||
              atk: token,
 | 
					 | 
				
			||||||
              baseUrl: baseUrl,
 | 
					 | 
				
			||||||
              filename: attachments[idx].data.name ?? 'Post media',
 | 
					 | 
				
			||||||
              mimetype:
 | 
					 | 
				
			||||||
                  attachments[idx].data.mimeType ??
 | 
					 | 
				
			||||||
                  switch (attachments[idx].type) {
 | 
					 | 
				
			||||||
                    UniversalFileType.image => 'image/unknown',
 | 
					 | 
				
			||||||
                    UniversalFileType.video => 'video/unknown',
 | 
					 | 
				
			||||||
                    UniversalFileType.audio => 'audio/unknown',
 | 
					 | 
				
			||||||
                    UniversalFileType.file => 'application/octet-stream',
 | 
					 | 
				
			||||||
                  },
 | 
					 | 
				
			||||||
              onProgress: (progress, _) {
 | 
					 | 
				
			||||||
                fileUploadProgress[localMessage.id]?[idx] = progress;
 | 
					 | 
				
			||||||
                onProgress?.call(
 | 
					 | 
				
			||||||
                  localMessage.id,
 | 
					 | 
				
			||||||
                  fileUploadProgress[localMessage.id] ?? {},
 | 
					 | 
				
			||||||
                );
 | 
					 | 
				
			||||||
              },
 | 
					 | 
				
			||||||
            ).future;
 | 
					 | 
				
			||||||
        if (cloudFile == null) {
 | 
					 | 
				
			||||||
          throw ArgumentError('Failed to upload the file...');
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        cloudAttachments.add(cloudFile);
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      // Send to server
 | 
					 | 
				
			||||||
      final response = await _apiClient.request(
 | 
					 | 
				
			||||||
        editingTo == null
 | 
					 | 
				
			||||||
            ? '/chat/$roomId/messages'
 | 
					 | 
				
			||||||
            : '/chat/$roomId/messages/${editingTo.id}',
 | 
					 | 
				
			||||||
        data: {
 | 
					 | 
				
			||||||
          'content': content,
 | 
					 | 
				
			||||||
          'attachments_id': cloudAttachments.map((e) => e.id).toList(),
 | 
					 | 
				
			||||||
          'replied_message_id': replyingTo?.id,
 | 
					 | 
				
			||||||
          'forwarded_message_id': forwardingTo?.id,
 | 
					 | 
				
			||||||
          'meta': meta,
 | 
					 | 
				
			||||||
          'nonce': nonce,
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
        options: Options(method: editingTo == null ? 'POST' : 'PATCH'),
 | 
					 | 
				
			||||||
      );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      // Update with server response
 | 
					 | 
				
			||||||
      final remoteMessage = SnChatMessage.fromJson(response.data);
 | 
					 | 
				
			||||||
      final updatedMessage = LocalChatMessage.fromRemoteMessage(
 | 
					 | 
				
			||||||
        remoteMessage,
 | 
					 | 
				
			||||||
        MessageStatus.sent,
 | 
					 | 
				
			||||||
      );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      // Remove from pending and update in database
 | 
					 | 
				
			||||||
      pendingMessages.remove(localMessage.id);
 | 
					 | 
				
			||||||
      await _database.deleteMessage(localMessage.id);
 | 
					 | 
				
			||||||
      await _database.saveMessage(_database.messageToCompanion(updatedMessage));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      return updatedMessage;
 | 
					 | 
				
			||||||
    } catch (e) {
 | 
					 | 
				
			||||||
      // Update status to failed
 | 
					 | 
				
			||||||
      localMessage.status = MessageStatus.failed;
 | 
					 | 
				
			||||||
      pendingMessages[localMessage.id] = localMessage;
 | 
					 | 
				
			||||||
      await _database.updateMessageStatus(
 | 
					 | 
				
			||||||
        localMessage.id,
 | 
					 | 
				
			||||||
        MessageStatus.failed,
 | 
					 | 
				
			||||||
      );
 | 
					 | 
				
			||||||
      rethrow;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  Future<LocalChatMessage> retryMessage(String pendingMessageId) async {
 | 
					 | 
				
			||||||
    final message = await getMessageById(pendingMessageId);
 | 
					 | 
				
			||||||
    if (message == null) {
 | 
					 | 
				
			||||||
      throw Exception('Message not found');
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Update status back to pending
 | 
					 | 
				
			||||||
    message.status = MessageStatus.pending;
 | 
					 | 
				
			||||||
    pendingMessages[pendingMessageId] = message;
 | 
					 | 
				
			||||||
    await _database.updateMessageStatus(
 | 
					 | 
				
			||||||
      pendingMessageId,
 | 
					 | 
				
			||||||
      MessageStatus.pending,
 | 
					 | 
				
			||||||
    );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    try {
 | 
					 | 
				
			||||||
      // Send to server
 | 
					 | 
				
			||||||
      var remoteMessage = message.toRemoteMessage();
 | 
					 | 
				
			||||||
      final response = await _apiClient.post(
 | 
					 | 
				
			||||||
        '/chat/${message.roomId}/messages',
 | 
					 | 
				
			||||||
        data: {
 | 
					 | 
				
			||||||
          'content': remoteMessage.content,
 | 
					 | 
				
			||||||
          'attachments_id': remoteMessage.attachments,
 | 
					 | 
				
			||||||
          'meta': remoteMessage.meta,
 | 
					 | 
				
			||||||
          'nonce': message.nonce,
 | 
					 | 
				
			||||||
        },
 | 
					 | 
				
			||||||
      );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      // Update with server response
 | 
					 | 
				
			||||||
      remoteMessage = SnChatMessage.fromJson(response.data);
 | 
					 | 
				
			||||||
      final updatedMessage = LocalChatMessage.fromRemoteMessage(
 | 
					 | 
				
			||||||
        remoteMessage,
 | 
					 | 
				
			||||||
        MessageStatus.sent,
 | 
					 | 
				
			||||||
      );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      // Remove from pending and update in database
 | 
					 | 
				
			||||||
      pendingMessages.remove(pendingMessageId);
 | 
					 | 
				
			||||||
      await _database.deleteMessage(pendingMessageId);
 | 
					 | 
				
			||||||
      await _database.saveMessage(_database.messageToCompanion(updatedMessage));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      return updatedMessage;
 | 
					 | 
				
			||||||
    } catch (e) {
 | 
					 | 
				
			||||||
      // Update status to failed
 | 
					 | 
				
			||||||
      message.status = MessageStatus.failed;
 | 
					 | 
				
			||||||
      pendingMessages[pendingMessageId] = message;
 | 
					 | 
				
			||||||
      await _database.updateMessageStatus(
 | 
					 | 
				
			||||||
        pendingMessageId,
 | 
					 | 
				
			||||||
        MessageStatus.failed,
 | 
					 | 
				
			||||||
      );
 | 
					 | 
				
			||||||
      rethrow;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  Future<LocalChatMessage> receiveMessage(SnChatMessage remoteMessage) async {
 | 
					 | 
				
			||||||
    final localMessage = LocalChatMessage.fromRemoteMessage(
 | 
					 | 
				
			||||||
      remoteMessage,
 | 
					 | 
				
			||||||
      MessageStatus.sent,
 | 
					 | 
				
			||||||
    );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (remoteMessage.nonce != null) {
 | 
					 | 
				
			||||||
      pendingMessages.removeWhere(
 | 
					 | 
				
			||||||
        (_, pendingMsg) => pendingMsg.nonce == remoteMessage.nonce,
 | 
					 | 
				
			||||||
      );
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    await _database.saveMessage(_database.messageToCompanion(localMessage));
 | 
					 | 
				
			||||||
    return localMessage;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  Future<LocalChatMessage> receiveMessageUpdate(
 | 
					 | 
				
			||||||
    SnChatMessage remoteMessage,
 | 
					 | 
				
			||||||
  ) async {
 | 
					 | 
				
			||||||
    final localMessage = LocalChatMessage.fromRemoteMessage(
 | 
					 | 
				
			||||||
      remoteMessage,
 | 
					 | 
				
			||||||
      MessageStatus.sent,
 | 
					 | 
				
			||||||
    );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    await _database.updateMessage(_database.messageToCompanion(localMessage));
 | 
					 | 
				
			||||||
    return localMessage;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  Future<void> receiveMessageDeletion(String messageId) async {
 | 
					 | 
				
			||||||
    // Remove from pending messages if exists
 | 
					 | 
				
			||||||
    pendingMessages.remove(messageId);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Delete from local database
 | 
					 | 
				
			||||||
    await _database.deleteMessage(messageId);
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  Future<LocalChatMessage> updateMessage(
 | 
					 | 
				
			||||||
    String messageId,
 | 
					 | 
				
			||||||
    String content, {
 | 
					 | 
				
			||||||
    List<SnCloudFile>? attachments,
 | 
					 | 
				
			||||||
    Map<String, dynamic>? meta,
 | 
					 | 
				
			||||||
  }) async {
 | 
					 | 
				
			||||||
    final message = pendingMessages[messageId];
 | 
					 | 
				
			||||||
    if (message != null) {
 | 
					 | 
				
			||||||
      // Update pending message
 | 
					 | 
				
			||||||
      final rmMessage = message.toRemoteMessage();
 | 
					 | 
				
			||||||
      final updatedRemoteMessage = rmMessage.copyWith(
 | 
					 | 
				
			||||||
        content: content,
 | 
					 | 
				
			||||||
        meta: meta ?? rmMessage.meta,
 | 
					 | 
				
			||||||
      );
 | 
					 | 
				
			||||||
      final updatedLocalMessage = LocalChatMessage.fromRemoteMessage(
 | 
					 | 
				
			||||||
        updatedRemoteMessage,
 | 
					 | 
				
			||||||
        MessageStatus.pending,
 | 
					 | 
				
			||||||
      );
 | 
					 | 
				
			||||||
      pendingMessages[messageId] = updatedLocalMessage;
 | 
					 | 
				
			||||||
      await _database.updateMessage(
 | 
					 | 
				
			||||||
        _database.messageToCompanion(updatedLocalMessage),
 | 
					 | 
				
			||||||
      );
 | 
					 | 
				
			||||||
      return message;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    try {
 | 
					 | 
				
			||||||
      // Update on server
 | 
					 | 
				
			||||||
      final response = await _apiClient.put(
 | 
					 | 
				
			||||||
        '/chat/${room.id}/messages/$messageId',
 | 
					 | 
				
			||||||
        data: {'content': content, 'attachments': attachments, 'meta': meta},
 | 
					 | 
				
			||||||
      );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      // Update local copy
 | 
					 | 
				
			||||||
      final remoteMessage = SnChatMessage.fromJson(response.data);
 | 
					 | 
				
			||||||
      final updatedMessage = LocalChatMessage.fromRemoteMessage(
 | 
					 | 
				
			||||||
        remoteMessage,
 | 
					 | 
				
			||||||
        MessageStatus.sent,
 | 
					 | 
				
			||||||
      );
 | 
					 | 
				
			||||||
      await _database.updateMessage(
 | 
					 | 
				
			||||||
        _database.messageToCompanion(updatedMessage),
 | 
					 | 
				
			||||||
      );
 | 
					 | 
				
			||||||
      return updatedMessage;
 | 
					 | 
				
			||||||
    } catch (e) {
 | 
					 | 
				
			||||||
      rethrow;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  Future<void> deleteMessage(String messageId) async {
 | 
					 | 
				
			||||||
    try {
 | 
					 | 
				
			||||||
      await _apiClient.delete('/chat/${room.id}/messages/$messageId');
 | 
					 | 
				
			||||||
      pendingMessages.remove(messageId);
 | 
					 | 
				
			||||||
      await _database.deleteMessage(messageId);
 | 
					 | 
				
			||||||
    } catch (e) {
 | 
					 | 
				
			||||||
      rethrow;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  Future<LocalChatMessage?> getMessageById(String messageId) async {
 | 
					 | 
				
			||||||
    try {
 | 
					 | 
				
			||||||
      // Attempt to get the message from the local database
 | 
					 | 
				
			||||||
      final localMessage =
 | 
					 | 
				
			||||||
          await (_database.select(_database.chatMessages)
 | 
					 | 
				
			||||||
            ..where((tbl) => tbl.id.equals(messageId))).getSingleOrNull();
 | 
					 | 
				
			||||||
      if (localMessage != null) {
 | 
					 | 
				
			||||||
        return _database.companionToMessage(localMessage);
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      // If not found locally, fetch from the server
 | 
					 | 
				
			||||||
      final response = await _apiClient.get(
 | 
					 | 
				
			||||||
        '/chat/${room.id}/messages/$messageId',
 | 
					 | 
				
			||||||
      );
 | 
					 | 
				
			||||||
      final remoteMessage = SnChatMessage.fromJson(response.data);
 | 
					 | 
				
			||||||
      final message = LocalChatMessage.fromRemoteMessage(
 | 
					 | 
				
			||||||
        remoteMessage,
 | 
					 | 
				
			||||||
        MessageStatus.sent,
 | 
					 | 
				
			||||||
      );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      // Save the fetched message to the local database
 | 
					 | 
				
			||||||
      await _database.saveMessage(_database.messageToCompanion(message));
 | 
					 | 
				
			||||||
      return message;
 | 
					 | 
				
			||||||
    } catch (e) {
 | 
					 | 
				
			||||||
      if (e is DioException) return null;
 | 
					 | 
				
			||||||
      // Handle errors
 | 
					 | 
				
			||||||
      rethrow;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -29,10 +29,7 @@ class DefaultFirebaseOptions {
 | 
				
			|||||||
      case TargetPlatform.windows:
 | 
					      case TargetPlatform.windows:
 | 
				
			||||||
        return windows;
 | 
					        return windows;
 | 
				
			||||||
      case TargetPlatform.linux:
 | 
					      case TargetPlatform.linux:
 | 
				
			||||||
        throw UnsupportedError(
 | 
					        return windows;
 | 
				
			||||||
          'DefaultFirebaseOptions have not been configured for linux - '
 | 
					 | 
				
			||||||
          'you can reconfigure this by running the FlutterFire CLI again.',
 | 
					 | 
				
			||||||
        );
 | 
					 | 
				
			||||||
      default:
 | 
					      default:
 | 
				
			||||||
        throw UnsupportedError(
 | 
					        throw UnsupportedError(
 | 
				
			||||||
          'DefaultFirebaseOptions are not supported for this platform.',
 | 
					          'DefaultFirebaseOptions are not supported for this platform.',
 | 
				
			||||||
@@ -41,13 +38,13 @@ class DefaultFirebaseOptions {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  static const FirebaseOptions web = FirebaseOptions(
 | 
					  static const FirebaseOptions web = FirebaseOptions(
 | 
				
			||||||
    apiKey: 'AIzaSyBKfIQpTouj5rXnlzkEieSlbAzepm4mgJE',
 | 
					    apiKey: 'AIzaSyCfgOdlcr7h8x8j0WKx_S2wXnGkOopq320',
 | 
				
			||||||
    appId: '1:961776991058:web:b91d12f2892a5609f4188b',
 | 
					    appId: '1:961776991058:web:3a912c0eb14028e5f4188b',
 | 
				
			||||||
    messagingSenderId: '961776991058',
 | 
					    messagingSenderId: '961776991058',
 | 
				
			||||||
    projectId: 'solian-0x001',
 | 
					    projectId: 'solian-0x001',
 | 
				
			||||||
    authDomain: 'solian-0x001.firebaseapp.com',
 | 
					    authDomain: 'solian-0x001.firebaseapp.com',
 | 
				
			||||||
    storageBucket: 'solian-0x001.firebasestorage.app',
 | 
					    storageBucket: 'solian-0x001.firebasestorage.app',
 | 
				
			||||||
    measurementId: 'G-XY3HHKG0PE',
 | 
					    measurementId: 'G-JD1YEG9D6F',
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  static const FirebaseOptions android = FirebaseOptions(
 | 
					  static const FirebaseOptions android = FirebaseOptions(
 | 
				
			||||||
@@ -64,6 +61,8 @@ class DefaultFirebaseOptions {
 | 
				
			|||||||
    messagingSenderId: '961776991058',
 | 
					    messagingSenderId: '961776991058',
 | 
				
			||||||
    projectId: 'solian-0x001',
 | 
					    projectId: 'solian-0x001',
 | 
				
			||||||
    storageBucket: 'solian-0x001.firebasestorage.app',
 | 
					    storageBucket: 'solian-0x001.firebasestorage.app',
 | 
				
			||||||
 | 
					    androidClientId: '961776991058-r4iv9qoio57ul7utbfpgfrda2etvtch8.apps.googleusercontent.com',
 | 
				
			||||||
 | 
					    iosClientId: '961776991058-stt7et4qvn3cpscl4r61gl1hnlatqkig.apps.googleusercontent.com',
 | 
				
			||||||
    iosBundleId: 'dev.solsynth.solian',
 | 
					    iosBundleId: 'dev.solsynth.solian',
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -73,6 +72,8 @@ class DefaultFirebaseOptions {
 | 
				
			|||||||
    messagingSenderId: '961776991058',
 | 
					    messagingSenderId: '961776991058',
 | 
				
			||||||
    projectId: 'solian-0x001',
 | 
					    projectId: 'solian-0x001',
 | 
				
			||||||
    storageBucket: 'solian-0x001.firebasestorage.app',
 | 
					    storageBucket: 'solian-0x001.firebasestorage.app',
 | 
				
			||||||
 | 
					    androidClientId: '961776991058-r4iv9qoio57ul7utbfpgfrda2etvtch8.apps.googleusercontent.com',
 | 
				
			||||||
 | 
					    iosClientId: '961776991058-stt7et4qvn3cpscl4r61gl1hnlatqkig.apps.googleusercontent.com',
 | 
				
			||||||
    iosBundleId: 'dev.solsynth.solian',
 | 
					    iosBundleId: 'dev.solsynth.solian',
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,6 +4,7 @@ import 'dart:io';
 | 
				
			|||||||
import 'package:croppy/croppy.dart';
 | 
					import 'package:croppy/croppy.dart';
 | 
				
			||||||
import 'package:easy_localization/easy_localization.dart' hide TextDirection;
 | 
					import 'package:easy_localization/easy_localization.dart' hide TextDirection;
 | 
				
			||||||
import 'package:firebase_core/firebase_core.dart';
 | 
					import 'package:firebase_core/firebase_core.dart';
 | 
				
			||||||
 | 
					import 'package:firebase_crashlytics/firebase_crashlytics.dart';
 | 
				
			||||||
import 'package:firebase_messaging/firebase_messaging.dart';
 | 
					import 'package:firebase_messaging/firebase_messaging.dart';
 | 
				
			||||||
import 'package:flutter/foundation.dart';
 | 
					import 'package:flutter/foundation.dart';
 | 
				
			||||||
import 'package:flutter/material.dart';
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
@@ -20,7 +21,6 @@ import 'package:bitsdojo_window/bitsdojo_window.dart';
 | 
				
			|||||||
import 'package:island/pods/userinfo.dart';
 | 
					import 'package:island/pods/userinfo.dart';
 | 
				
			||||||
import 'package:island/pods/websocket.dart';
 | 
					import 'package:island/pods/websocket.dart';
 | 
				
			||||||
import 'package:island/route.dart';
 | 
					import 'package:island/route.dart';
 | 
				
			||||||
 | 
					 | 
				
			||||||
import 'package:island/services/notify.dart';
 | 
					import 'package:island/services/notify.dart';
 | 
				
			||||||
import 'package:island/services/timezone.dart';
 | 
					import 'package:island/services/timezone.dart';
 | 
				
			||||||
import 'package:island/widgets/alert.dart';
 | 
					import 'package:island/widgets/alert.dart';
 | 
				
			||||||
@@ -30,6 +30,7 @@ import 'package:shared_preferences/shared_preferences.dart';
 | 
				
			|||||||
import 'package:image_picker_platform_interface/image_picker_platform_interface.dart';
 | 
					import 'package:image_picker_platform_interface/image_picker_platform_interface.dart';
 | 
				
			||||||
import 'package:flutter_native_splash/flutter_native_splash.dart';
 | 
					import 'package:flutter_native_splash/flutter_native_splash.dart';
 | 
				
			||||||
import 'package:url_launcher/url_launcher_string.dart';
 | 
					import 'package:url_launcher/url_launcher_string.dart';
 | 
				
			||||||
 | 
					import 'package:flutter_langdetect/flutter_langdetect.dart' as langdetect;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@pragma('vm:entry-point')
 | 
					@pragma('vm:entry-point')
 | 
				
			||||||
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
 | 
					Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
 | 
				
			||||||
@@ -51,11 +52,29 @@ void main() async {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  try {
 | 
					  try {
 | 
				
			||||||
 | 
					    await langdetect.initLangDetect();
 | 
				
			||||||
    await EasyLocalization.ensureInitialized();
 | 
					    await EasyLocalization.ensureInitialized();
 | 
				
			||||||
    await Firebase.initializeApp(
 | 
					
 | 
				
			||||||
      options: DefaultFirebaseOptions.currentPlatform,
 | 
					    if (kIsWeb || !Platform.isLinux) {
 | 
				
			||||||
    );
 | 
					      await Firebase.initializeApp(
 | 
				
			||||||
    FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
 | 
					        options: DefaultFirebaseOptions.currentPlatform,
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					      FirebaseMessaging.onBackgroundMessage(
 | 
				
			||||||
 | 
					        _firebaseMessagingBackgroundHandler,
 | 
				
			||||||
 | 
					      );
 | 
				
			||||||
 | 
					      // Although previous if case checked this. Still check is web or not
 | 
				
			||||||
 | 
					      // Otherwise the web platform will broke due to there is no Platform api on the web
 | 
				
			||||||
 | 
					      // Skip crashlytics setup on debug mode to prevent unexpected report to firebase
 | 
				
			||||||
 | 
					      if ((kIsWeb || !Platform.isWindows) && !kDebugMode) {
 | 
				
			||||||
 | 
					        FlutterError.onError =
 | 
				
			||||||
 | 
					            FirebaseCrashlytics.instance.recordFlutterFatalError;
 | 
				
			||||||
 | 
					        PlatformDispatcher.instance.onError = (error, stack) {
 | 
				
			||||||
 | 
					          FirebaseCrashlytics.instance.recordError(error, stack, fatal: true);
 | 
				
			||||||
 | 
					          return true;
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    log("[SplashScreen] Firebase is ready!");
 | 
					    log("[SplashScreen] Firebase is ready!");
 | 
				
			||||||
  } catch (err) {
 | 
					  } catch (err) {
 | 
				
			||||||
    showErrorAlert(err);
 | 
					    showErrorAlert(err);
 | 
				
			||||||
@@ -164,6 +183,9 @@ class IslandApp extends HookConsumerWidget {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    useEffect(() {
 | 
					    useEffect(() {
 | 
				
			||||||
 | 
					      if (!kIsWeb && Platform.isLinux) {
 | 
				
			||||||
 | 
					        return null;
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
      const channel = MethodChannel('dev.solsynth.solian/notifications');
 | 
					      const channel = MethodChannel('dev.solsynth.solian/notifications');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      Future<void> handleInitialLink() async {
 | 
					      Future<void> handleInitialLink() async {
 | 
				
			||||||
@@ -221,7 +243,7 @@ class IslandApp extends HookConsumerWidget {
 | 
				
			|||||||
      Future(() {
 | 
					      Future(() {
 | 
				
			||||||
        userNotifier.fetchUser().then((_) {
 | 
					        userNotifier.fetchUser().then((_) {
 | 
				
			||||||
          final user = ref.watch(userInfoProvider);
 | 
					          final user = ref.watch(userInfoProvider);
 | 
				
			||||||
          if (user.hasValue) {
 | 
					          if (user.value != null) {
 | 
				
			||||||
            final apiClient = ref.read(apiClientProvider);
 | 
					            final apiClient = ref.read(apiClientProvider);
 | 
				
			||||||
            subscribePushNotification(apiClient);
 | 
					            subscribePushNotification(apiClient);
 | 
				
			||||||
            final wsNotifier = ref.read(websocketStateProvider.notifier);
 | 
					            final wsNotifier = ref.read(websocketStateProvider.notifier);
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										23
									
								
								lib/models/abuse_report.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								lib/models/abuse_report.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					import 'package:freezed_annotation/freezed_annotation.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					part 'abuse_report.freezed.dart';
 | 
				
			||||||
 | 
					part 'abuse_report.g.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@freezed
 | 
				
			||||||
 | 
					sealed class SnAbuseReport with _$SnAbuseReport {
 | 
				
			||||||
 | 
					  const factory SnAbuseReport({
 | 
				
			||||||
 | 
					    required String id,
 | 
				
			||||||
 | 
					    required String resourceIdentifier,
 | 
				
			||||||
 | 
					    required int type,
 | 
				
			||||||
 | 
					    required String reason,
 | 
				
			||||||
 | 
					    required DateTime? resolvedAt,
 | 
				
			||||||
 | 
					    required String? resolution,
 | 
				
			||||||
 | 
					    required String accountId,
 | 
				
			||||||
 | 
					    required DateTime createdAt,
 | 
				
			||||||
 | 
					    required DateTime updatedAt,
 | 
				
			||||||
 | 
					    required DateTime? deletedAt,
 | 
				
			||||||
 | 
					  }) = _SnAbuseReport;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory SnAbuseReport.fromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					      _$SnAbuseReportFromJson(json);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										298
									
								
								lib/models/abuse_report.freezed.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										298
									
								
								lib/models/abuse_report.freezed.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,298 @@
 | 
				
			|||||||
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					// coverage:ignore-file
 | 
				
			||||||
 | 
					// ignore_for_file: type=lint
 | 
				
			||||||
 | 
					// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					part of 'abuse_report.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					// FreezedGenerator
 | 
				
			||||||
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// dart format off
 | 
				
			||||||
 | 
					T _$identity<T>(T value) => value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// @nodoc
 | 
				
			||||||
 | 
					mixin _$SnAbuseReport {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 String get id; String get resourceIdentifier; int get type; String get reason; DateTime? get resolvedAt; String? get resolution; String get accountId; DateTime get createdAt; DateTime get updatedAt; DateTime? get deletedAt;
 | 
				
			||||||
 | 
					/// Create a copy of SnAbuseReport
 | 
				
			||||||
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
 | 
					@pragma('vm:prefer-inline')
 | 
				
			||||||
 | 
					$SnAbuseReportCopyWith<SnAbuseReport> get copyWith => _$SnAbuseReportCopyWithImpl<SnAbuseReport>(this as SnAbuseReport, _$identity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /// Serializes this SnAbuseReport to a JSON map.
 | 
				
			||||||
 | 
					  Map<String, dynamic> toJson();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					bool operator ==(Object other) {
 | 
				
			||||||
 | 
					  return identical(this, other) || (other.runtimeType == runtimeType&&other is SnAbuseReport&&(identical(other.id, id) || other.id == id)&&(identical(other.resourceIdentifier, resourceIdentifier) || other.resourceIdentifier == resourceIdentifier)&&(identical(other.type, type) || other.type == type)&&(identical(other.reason, reason) || other.reason == reason)&&(identical(other.resolvedAt, resolvedAt) || other.resolvedAt == resolvedAt)&&(identical(other.resolution, resolution) || other.resolution == resolution)&&(identical(other.accountId, accountId) || other.accountId == accountId)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.updatedAt, updatedAt) || other.updatedAt == updatedAt)&&(identical(other.deletedAt, deletedAt) || other.deletedAt == deletedAt));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					int get hashCode => Object.hash(runtimeType,id,resourceIdentifier,type,reason,resolvedAt,resolution,accountId,createdAt,updatedAt,deletedAt);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					String toString() {
 | 
				
			||||||
 | 
					  return 'SnAbuseReport(id: $id, resourceIdentifier: $resourceIdentifier, type: $type, reason: $reason, resolvedAt: $resolvedAt, resolution: $resolution, accountId: $accountId, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt)';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// @nodoc
 | 
				
			||||||
 | 
					abstract mixin class $SnAbuseReportCopyWith<$Res>  {
 | 
				
			||||||
 | 
					  factory $SnAbuseReportCopyWith(SnAbuseReport value, $Res Function(SnAbuseReport) _then) = _$SnAbuseReportCopyWithImpl;
 | 
				
			||||||
 | 
					@useResult
 | 
				
			||||||
 | 
					$Res call({
 | 
				
			||||||
 | 
					 String id, String resourceIdentifier, int type, String reason, DateTime? resolvedAt, String? resolution, String accountId, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// @nodoc
 | 
				
			||||||
 | 
					class _$SnAbuseReportCopyWithImpl<$Res>
 | 
				
			||||||
 | 
					    implements $SnAbuseReportCopyWith<$Res> {
 | 
				
			||||||
 | 
					  _$SnAbuseReportCopyWithImpl(this._self, this._then);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  final SnAbuseReport _self;
 | 
				
			||||||
 | 
					  final $Res Function(SnAbuseReport) _then;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Create a copy of SnAbuseReport
 | 
				
			||||||
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
 | 
					@pragma('vm:prefer-inline') @override $Res call({Object? id = null,Object? resourceIdentifier = null,Object? type = null,Object? reason = null,Object? resolvedAt = freezed,Object? resolution = freezed,Object? accountId = null,Object? createdAt = null,Object? updatedAt = null,Object? deletedAt = freezed,}) {
 | 
				
			||||||
 | 
					  return _then(_self.copyWith(
 | 
				
			||||||
 | 
					id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String,resourceIdentifier: null == resourceIdentifier ? _self.resourceIdentifier : resourceIdentifier // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String,type: null == type ? _self.type : type // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as int,reason: null == reason ? _self.reason : reason // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String,resolvedAt: freezed == resolvedAt ? _self.resolvedAt : resolvedAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as DateTime?,resolution: freezed == resolution ? _self.resolution : resolution // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String?,accountId: null == accountId ? _self.accountId : accountId // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String,createdAt: null == createdAt ? _self.createdAt : createdAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as DateTime,updatedAt: null == updatedAt ? _self.updatedAt : updatedAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as DateTime,deletedAt: freezed == deletedAt ? _self.deletedAt : deletedAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as DateTime?,
 | 
				
			||||||
 | 
					  ));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnAbuseReport].
 | 
				
			||||||
 | 
					extension SnAbuseReportPatterns on SnAbuseReport {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnAbuseReport value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAbuseReport() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnAbuseReport value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAbuseReport():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnAbuseReport value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAbuseReport() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  String resourceIdentifier,  int type,  String reason,  DateTime? resolvedAt,  String? resolution,  String accountId,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAbuseReport() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.resourceIdentifier,_that.type,_that.reason,_that.resolvedAt,_that.resolution,_that.accountId,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  String resourceIdentifier,  int type,  String reason,  DateTime? resolvedAt,  String? resolution,  String accountId,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAbuseReport():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.resourceIdentifier,_that.type,_that.reason,_that.resolvedAt,_that.resolution,_that.accountId,_that.createdAt,_that.updatedAt,_that.deletedAt);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  String resourceIdentifier,  int type,  String reason,  DateTime? resolvedAt,  String? resolution,  String accountId,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAbuseReport() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.resourceIdentifier,_that.type,_that.reason,_that.resolvedAt,_that.resolution,_that.accountId,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// @nodoc
 | 
				
			||||||
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class _SnAbuseReport implements SnAbuseReport {
 | 
				
			||||||
 | 
					  const _SnAbuseReport({required this.id, required this.resourceIdentifier, required this.type, required this.reason, required this.resolvedAt, required this.resolution, required this.accountId, required this.createdAt, required this.updatedAt, required this.deletedAt});
 | 
				
			||||||
 | 
					  factory _SnAbuseReport.fromJson(Map<String, dynamic> json) => _$SnAbuseReportFromJson(json);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override final  String id;
 | 
				
			||||||
 | 
					@override final  String resourceIdentifier;
 | 
				
			||||||
 | 
					@override final  int type;
 | 
				
			||||||
 | 
					@override final  String reason;
 | 
				
			||||||
 | 
					@override final  DateTime? resolvedAt;
 | 
				
			||||||
 | 
					@override final  String? resolution;
 | 
				
			||||||
 | 
					@override final  String accountId;
 | 
				
			||||||
 | 
					@override final  DateTime createdAt;
 | 
				
			||||||
 | 
					@override final  DateTime updatedAt;
 | 
				
			||||||
 | 
					@override final  DateTime? deletedAt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Create a copy of SnAbuseReport
 | 
				
			||||||
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
 | 
					@override @JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
 | 
					@pragma('vm:prefer-inline')
 | 
				
			||||||
 | 
					_$SnAbuseReportCopyWith<_SnAbuseReport> get copyWith => __$SnAbuseReportCopyWithImpl<_SnAbuseReport>(this, _$identity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					Map<String, dynamic> toJson() {
 | 
				
			||||||
 | 
					  return _$SnAbuseReportToJson(this, );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					bool operator ==(Object other) {
 | 
				
			||||||
 | 
					  return identical(this, other) || (other.runtimeType == runtimeType&&other is _SnAbuseReport&&(identical(other.id, id) || other.id == id)&&(identical(other.resourceIdentifier, resourceIdentifier) || other.resourceIdentifier == resourceIdentifier)&&(identical(other.type, type) || other.type == type)&&(identical(other.reason, reason) || other.reason == reason)&&(identical(other.resolvedAt, resolvedAt) || other.resolvedAt == resolvedAt)&&(identical(other.resolution, resolution) || other.resolution == resolution)&&(identical(other.accountId, accountId) || other.accountId == accountId)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.updatedAt, updatedAt) || other.updatedAt == updatedAt)&&(identical(other.deletedAt, deletedAt) || other.deletedAt == deletedAt));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					int get hashCode => Object.hash(runtimeType,id,resourceIdentifier,type,reason,resolvedAt,resolution,accountId,createdAt,updatedAt,deletedAt);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					String toString() {
 | 
				
			||||||
 | 
					  return 'SnAbuseReport(id: $id, resourceIdentifier: $resourceIdentifier, type: $type, reason: $reason, resolvedAt: $resolvedAt, resolution: $resolution, accountId: $accountId, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt)';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// @nodoc
 | 
				
			||||||
 | 
					abstract mixin class _$SnAbuseReportCopyWith<$Res> implements $SnAbuseReportCopyWith<$Res> {
 | 
				
			||||||
 | 
					  factory _$SnAbuseReportCopyWith(_SnAbuseReport value, $Res Function(_SnAbuseReport) _then) = __$SnAbuseReportCopyWithImpl;
 | 
				
			||||||
 | 
					@override @useResult
 | 
				
			||||||
 | 
					$Res call({
 | 
				
			||||||
 | 
					 String id, String resourceIdentifier, int type, String reason, DateTime? resolvedAt, String? resolution, String accountId, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// @nodoc
 | 
				
			||||||
 | 
					class __$SnAbuseReportCopyWithImpl<$Res>
 | 
				
			||||||
 | 
					    implements _$SnAbuseReportCopyWith<$Res> {
 | 
				
			||||||
 | 
					  __$SnAbuseReportCopyWithImpl(this._self, this._then);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  final _SnAbuseReport _self;
 | 
				
			||||||
 | 
					  final $Res Function(_SnAbuseReport) _then;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Create a copy of SnAbuseReport
 | 
				
			||||||
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
 | 
					@override @pragma('vm:prefer-inline') $Res call({Object? id = null,Object? resourceIdentifier = null,Object? type = null,Object? reason = null,Object? resolvedAt = freezed,Object? resolution = freezed,Object? accountId = null,Object? createdAt = null,Object? updatedAt = null,Object? deletedAt = freezed,}) {
 | 
				
			||||||
 | 
					  return _then(_SnAbuseReport(
 | 
				
			||||||
 | 
					id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String,resourceIdentifier: null == resourceIdentifier ? _self.resourceIdentifier : resourceIdentifier // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String,type: null == type ? _self.type : type // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as int,reason: null == reason ? _self.reason : reason // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String,resolvedAt: freezed == resolvedAt ? _self.resolvedAt : resolvedAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as DateTime?,resolution: freezed == resolution ? _self.resolution : resolution // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String?,accountId: null == accountId ? _self.accountId : accountId // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String,createdAt: null == createdAt ? _self.createdAt : createdAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as DateTime,updatedAt: null == updatedAt ? _self.updatedAt : updatedAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as DateTime,deletedAt: freezed == deletedAt ? _self.deletedAt : deletedAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as DateTime?,
 | 
				
			||||||
 | 
					  ));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// dart format on
 | 
				
			||||||
							
								
								
									
										41
									
								
								lib/models/abuse_report.g.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								lib/models/abuse_report.g.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
				
			|||||||
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					part of 'abuse_report.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					// JsonSerializableGenerator
 | 
				
			||||||
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_SnAbuseReport _$SnAbuseReportFromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					    _SnAbuseReport(
 | 
				
			||||||
 | 
					      id: json['id'] as String,
 | 
				
			||||||
 | 
					      resourceIdentifier: json['resource_identifier'] as String,
 | 
				
			||||||
 | 
					      type: (json['type'] as num).toInt(),
 | 
				
			||||||
 | 
					      reason: json['reason'] as String,
 | 
				
			||||||
 | 
					      resolvedAt:
 | 
				
			||||||
 | 
					          json['resolved_at'] == null
 | 
				
			||||||
 | 
					              ? null
 | 
				
			||||||
 | 
					              : DateTime.parse(json['resolved_at'] as String),
 | 
				
			||||||
 | 
					      resolution: json['resolution'] as String?,
 | 
				
			||||||
 | 
					      accountId: json['account_id'] as String,
 | 
				
			||||||
 | 
					      createdAt: DateTime.parse(json['created_at'] as String),
 | 
				
			||||||
 | 
					      updatedAt: DateTime.parse(json['updated_at'] as String),
 | 
				
			||||||
 | 
					      deletedAt:
 | 
				
			||||||
 | 
					          json['deleted_at'] == null
 | 
				
			||||||
 | 
					              ? null
 | 
				
			||||||
 | 
					              : DateTime.parse(json['deleted_at'] as String),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$SnAbuseReportToJson(_SnAbuseReport instance) =>
 | 
				
			||||||
 | 
					    <String, dynamic>{
 | 
				
			||||||
 | 
					      'id': instance.id,
 | 
				
			||||||
 | 
					      'resource_identifier': instance.resourceIdentifier,
 | 
				
			||||||
 | 
					      'type': instance.type,
 | 
				
			||||||
 | 
					      'reason': instance.reason,
 | 
				
			||||||
 | 
					      'resolved_at': instance.resolvedAt?.toIso8601String(),
 | 
				
			||||||
 | 
					      'resolution': instance.resolution,
 | 
				
			||||||
 | 
					      'account_id': instance.accountId,
 | 
				
			||||||
 | 
					      'created_at': instance.createdAt.toIso8601String(),
 | 
				
			||||||
 | 
					      'updated_at': instance.updatedAt.toIso8601String(),
 | 
				
			||||||
 | 
					      'deleted_at': instance.deletedAt?.toIso8601String(),
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
							
								
								
									
										38
									
								
								lib/models/abuse_report_type.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								lib/models/abuse_report_type.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,38 @@
 | 
				
			|||||||
 | 
					enum AbuseReportType {
 | 
				
			||||||
 | 
					  copyright(0),
 | 
				
			||||||
 | 
					  harassment(1),
 | 
				
			||||||
 | 
					  impersonation(2),
 | 
				
			||||||
 | 
					  offensiveContent(3),
 | 
				
			||||||
 | 
					  spam(4),
 | 
				
			||||||
 | 
					  privacyViolation(5),
 | 
				
			||||||
 | 
					  illegalContent(6),
 | 
				
			||||||
 | 
					  other(7);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const AbuseReportType(this.value);
 | 
				
			||||||
 | 
					  final int value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  static AbuseReportType fromValue(int value) {
 | 
				
			||||||
 | 
					    return values.firstWhere((e) => e.value == value);
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  String get displayName {
 | 
				
			||||||
 | 
					    switch (this) {
 | 
				
			||||||
 | 
					      case AbuseReportType.copyright:
 | 
				
			||||||
 | 
					        return 'Copyright';
 | 
				
			||||||
 | 
					      case AbuseReportType.harassment:
 | 
				
			||||||
 | 
					        return 'Harassment';
 | 
				
			||||||
 | 
					      case AbuseReportType.impersonation:
 | 
				
			||||||
 | 
					        return 'Impersonation';
 | 
				
			||||||
 | 
					      case AbuseReportType.offensiveContent:
 | 
				
			||||||
 | 
					        return 'Offensive Content';
 | 
				
			||||||
 | 
					      case AbuseReportType.spam:
 | 
				
			||||||
 | 
					        return 'Spam';
 | 
				
			||||||
 | 
					      case AbuseReportType.privacyViolation:
 | 
				
			||||||
 | 
					        return 'Privacy Violation';
 | 
				
			||||||
 | 
					      case AbuseReportType.illegalContent:
 | 
				
			||||||
 | 
					        return 'Illegal Content';
 | 
				
			||||||
 | 
					      case AbuseReportType.other:
 | 
				
			||||||
 | 
					        return 'Other';
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,9 +1,10 @@
 | 
				
			|||||||
import 'package:freezed_annotation/freezed_annotation.dart';
 | 
					import 'package:freezed_annotation/freezed_annotation.dart';
 | 
				
			||||||
 | 
					import 'package:island/models/auth.dart';
 | 
				
			||||||
import 'package:island/models/file.dart';
 | 
					import 'package:island/models/file.dart';
 | 
				
			||||||
import 'package:island/models/wallet.dart';
 | 
					import 'package:island/models/wallet.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
part 'user.freezed.dart';
 | 
					part 'account.freezed.dart';
 | 
				
			||||||
part 'user.g.dart';
 | 
					part 'account.g.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@freezed
 | 
					@freezed
 | 
				
			||||||
sealed class SnAccount with _$SnAccount {
 | 
					sealed class SnAccount with _$SnAccount {
 | 
				
			||||||
@@ -13,7 +14,9 @@ sealed class SnAccount with _$SnAccount {
 | 
				
			|||||||
    required String nick,
 | 
					    required String nick,
 | 
				
			||||||
    required String language,
 | 
					    required String language,
 | 
				
			||||||
    required bool isSuperuser,
 | 
					    required bool isSuperuser,
 | 
				
			||||||
 | 
					    required String? automatedId,
 | 
				
			||||||
    required SnAccountProfile profile,
 | 
					    required SnAccountProfile profile,
 | 
				
			||||||
 | 
					    required SnWalletSubscriptionRef? perkSubscription,
 | 
				
			||||||
    @Default([]) List<SnAccountBadge> badges,
 | 
					    @Default([]) List<SnAccountBadge> badges,
 | 
				
			||||||
    required DateTime createdAt,
 | 
					    required DateTime createdAt,
 | 
				
			||||||
    required DateTime updatedAt,
 | 
					    required DateTime updatedAt,
 | 
				
			||||||
@@ -24,6 +27,32 @@ sealed class SnAccount with _$SnAccount {
 | 
				
			|||||||
      _$SnAccountFromJson(json);
 | 
					      _$SnAccountFromJson(json);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@freezed
 | 
				
			||||||
 | 
					sealed class ProfileLink with _$ProfileLink {
 | 
				
			||||||
 | 
					  const factory ProfileLink({required String name, required String url}) =
 | 
				
			||||||
 | 
					      _ProfileLink;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory ProfileLink.fromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					      _$ProfileLinkFromJson(json);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class ProfileLinkConverter
 | 
				
			||||||
 | 
					    implements JsonConverter<List<ProfileLink>, dynamic> {
 | 
				
			||||||
 | 
					  const ProfileLinkConverter();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  List<ProfileLink> fromJson(dynamic json) {
 | 
				
			||||||
 | 
					    return json is List<dynamic>
 | 
				
			||||||
 | 
					        ? json.map((e) => ProfileLink.fromJson(e)).cast<ProfileLink>().toList()
 | 
				
			||||||
 | 
					        : <ProfileLink>[];
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  List<dynamic> toJson(List<ProfileLink> object) {
 | 
				
			||||||
 | 
					    return object.map((e) => e.toJson()).toList();
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@freezed
 | 
					@freezed
 | 
				
			||||||
sealed class SnAccountProfile with _$SnAccountProfile {
 | 
					sealed class SnAccountProfile with _$SnAccountProfile {
 | 
				
			||||||
  const factory SnAccountProfile({
 | 
					  const factory SnAccountProfile({
 | 
				
			||||||
@@ -37,6 +66,7 @@ sealed class SnAccountProfile with _$SnAccountProfile {
 | 
				
			|||||||
    @Default('') String location,
 | 
					    @Default('') String location,
 | 
				
			||||||
    @Default('') String timeZone,
 | 
					    @Default('') String timeZone,
 | 
				
			||||||
    DateTime? birthday,
 | 
					    DateTime? birthday,
 | 
				
			||||||
 | 
					    @ProfileLinkConverter() @Default([]) List<ProfileLink> links,
 | 
				
			||||||
    DateTime? lastSeenAt,
 | 
					    DateTime? lastSeenAt,
 | 
				
			||||||
    SnAccountBadge? activeBadge,
 | 
					    SnAccountBadge? activeBadge,
 | 
				
			||||||
    required int experience,
 | 
					    required int experience,
 | 
				
			||||||
@@ -45,7 +75,6 @@ sealed class SnAccountProfile with _$SnAccountProfile {
 | 
				
			|||||||
    required SnCloudFile? picture,
 | 
					    required SnCloudFile? picture,
 | 
				
			||||||
    required SnCloudFile? background,
 | 
					    required SnCloudFile? background,
 | 
				
			||||||
    required SnVerificationMark? verification,
 | 
					    required SnVerificationMark? verification,
 | 
				
			||||||
    required SnWalletSubscriptionRef? stellarMembership,
 | 
					 | 
				
			||||||
    required DateTime createdAt,
 | 
					    required DateTime createdAt,
 | 
				
			||||||
    required DateTime updatedAt,
 | 
					    required DateTime updatedAt,
 | 
				
			||||||
    required DateTime? deletedAt,
 | 
					    required DateTime? deletedAt,
 | 
				
			||||||
@@ -147,3 +176,70 @@ sealed class SnVerificationMark with _$SnVerificationMark {
 | 
				
			|||||||
  factory SnVerificationMark.fromJson(Map<String, dynamic> json) =>
 | 
					  factory SnVerificationMark.fromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
      _$SnVerificationMarkFromJson(json);
 | 
					      _$SnVerificationMarkFromJson(json);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@freezed
 | 
				
			||||||
 | 
					sealed class SnAuthDevice with _$SnAuthDevice {
 | 
				
			||||||
 | 
					  const factory SnAuthDevice({
 | 
				
			||||||
 | 
					    required String id,
 | 
				
			||||||
 | 
					    required String deviceId,
 | 
				
			||||||
 | 
					    required String deviceName,
 | 
				
			||||||
 | 
					    required String? deviceLabel,
 | 
				
			||||||
 | 
					    required String accountId,
 | 
				
			||||||
 | 
					    required int platform,
 | 
				
			||||||
 | 
					    @Default(false) bool isCurrent,
 | 
				
			||||||
 | 
					  }) = _SnAuthDevice;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory SnAuthDevice.fromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					      _$SnAuthDeviceFromJson(json);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@freezed
 | 
				
			||||||
 | 
					sealed class SnAuthDeviceWithChallenge with _$SnAuthDeviceWithChallenge {
 | 
				
			||||||
 | 
					  const factory SnAuthDeviceWithChallenge({
 | 
				
			||||||
 | 
					    required String id,
 | 
				
			||||||
 | 
					    required String deviceId,
 | 
				
			||||||
 | 
					    required String deviceName,
 | 
				
			||||||
 | 
					    required String? deviceLabel,
 | 
				
			||||||
 | 
					    required String accountId,
 | 
				
			||||||
 | 
					    required int platform,
 | 
				
			||||||
 | 
					    required List<SnAuthChallenge> challenges,
 | 
				
			||||||
 | 
					    @Default(false) bool isCurrent,
 | 
				
			||||||
 | 
					  }) = _SnAuthDeviceWithChallengee;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory SnAuthDeviceWithChallenge.fromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					      _$SnAuthDeviceWithChallengeFromJson(json);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@freezed
 | 
				
			||||||
 | 
					sealed class SnExperienceRecord with _$SnExperienceRecord {
 | 
				
			||||||
 | 
					  const factory SnExperienceRecord({
 | 
				
			||||||
 | 
					    required String id,
 | 
				
			||||||
 | 
					    required int delta,
 | 
				
			||||||
 | 
					    required String reasonType,
 | 
				
			||||||
 | 
					    required String reason,
 | 
				
			||||||
 | 
					    @Default(1.0) double? bonusMultiplier,
 | 
				
			||||||
 | 
					    required DateTime createdAt,
 | 
				
			||||||
 | 
					    required DateTime updatedAt,
 | 
				
			||||||
 | 
					    required DateTime? deletedAt,
 | 
				
			||||||
 | 
					  }) = _SnExperienceRecord;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory SnExperienceRecord.fromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					      _$SnExperienceRecordFromJson(json);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@freezed
 | 
				
			||||||
 | 
					sealed class SnSocialCreditRecord with _$SnSocialCreditRecord {
 | 
				
			||||||
 | 
					  const factory SnSocialCreditRecord({
 | 
				
			||||||
 | 
					    required String id,
 | 
				
			||||||
 | 
					    required double delta,
 | 
				
			||||||
 | 
					    required String reasonType,
 | 
				
			||||||
 | 
					    required String reason,
 | 
				
			||||||
 | 
					    required DateTime? expiredAt,
 | 
				
			||||||
 | 
					    required DateTime createdAt,
 | 
				
			||||||
 | 
					    required DateTime updatedAt,
 | 
				
			||||||
 | 
					    required DateTime? deletedAt,
 | 
				
			||||||
 | 
					  }) = _SnSocialCreditRecord;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory SnSocialCreditRecord.fromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					      _$SnSocialCreditRecordFromJson(json);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										3582
									
								
								lib/models/account.freezed.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3582
									
								
								lib/models/account.freezed.dart
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,6 +1,6 @@
 | 
				
			|||||||
// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					
 | 
				
			||||||
part of 'user.dart';
 | 
					part of 'account.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// **************************************************************************
 | 
					// **************************************************************************
 | 
				
			||||||
// JsonSerializableGenerator
 | 
					// JsonSerializableGenerator
 | 
				
			||||||
@@ -12,7 +12,14 @@ _SnAccount _$SnAccountFromJson(Map<String, dynamic> json) => _SnAccount(
 | 
				
			|||||||
  nick: json['nick'] as String,
 | 
					  nick: json['nick'] as String,
 | 
				
			||||||
  language: json['language'] as String,
 | 
					  language: json['language'] as String,
 | 
				
			||||||
  isSuperuser: json['is_superuser'] as bool,
 | 
					  isSuperuser: json['is_superuser'] as bool,
 | 
				
			||||||
 | 
					  automatedId: json['automated_id'] as String?,
 | 
				
			||||||
  profile: SnAccountProfile.fromJson(json['profile'] as Map<String, dynamic>),
 | 
					  profile: SnAccountProfile.fromJson(json['profile'] as Map<String, dynamic>),
 | 
				
			||||||
 | 
					  perkSubscription:
 | 
				
			||||||
 | 
					      json['perk_subscription'] == null
 | 
				
			||||||
 | 
					          ? null
 | 
				
			||||||
 | 
					          : SnWalletSubscriptionRef.fromJson(
 | 
				
			||||||
 | 
					            json['perk_subscription'] as Map<String, dynamic>,
 | 
				
			||||||
 | 
					          ),
 | 
				
			||||||
  badges:
 | 
					  badges:
 | 
				
			||||||
      (json['badges'] as List<dynamic>?)
 | 
					      (json['badges'] as List<dynamic>?)
 | 
				
			||||||
          ?.map((e) => SnAccountBadge.fromJson(e as Map<String, dynamic>))
 | 
					          ?.map((e) => SnAccountBadge.fromJson(e as Map<String, dynamic>))
 | 
				
			||||||
@@ -33,13 +40,21 @@ Map<String, dynamic> _$SnAccountToJson(_SnAccount instance) =>
 | 
				
			|||||||
      'nick': instance.nick,
 | 
					      'nick': instance.nick,
 | 
				
			||||||
      'language': instance.language,
 | 
					      'language': instance.language,
 | 
				
			||||||
      'is_superuser': instance.isSuperuser,
 | 
					      'is_superuser': instance.isSuperuser,
 | 
				
			||||||
 | 
					      'automated_id': instance.automatedId,
 | 
				
			||||||
      'profile': instance.profile.toJson(),
 | 
					      'profile': instance.profile.toJson(),
 | 
				
			||||||
 | 
					      'perk_subscription': instance.perkSubscription?.toJson(),
 | 
				
			||||||
      'badges': instance.badges.map((e) => e.toJson()).toList(),
 | 
					      'badges': instance.badges.map((e) => e.toJson()).toList(),
 | 
				
			||||||
      'created_at': instance.createdAt.toIso8601String(),
 | 
					      'created_at': instance.createdAt.toIso8601String(),
 | 
				
			||||||
      'updated_at': instance.updatedAt.toIso8601String(),
 | 
					      'updated_at': instance.updatedAt.toIso8601String(),
 | 
				
			||||||
      'deleted_at': instance.deletedAt?.toIso8601String(),
 | 
					      'deleted_at': instance.deletedAt?.toIso8601String(),
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_ProfileLink _$ProfileLinkFromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					    _ProfileLink(name: json['name'] as String, url: json['url'] as String);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$ProfileLinkToJson(_ProfileLink instance) =>
 | 
				
			||||||
 | 
					    <String, dynamic>{'name': instance.name, 'url': instance.url};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
_SnAccountProfile _$SnAccountProfileFromJson(Map<String, dynamic> json) =>
 | 
					_SnAccountProfile _$SnAccountProfileFromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
    _SnAccountProfile(
 | 
					    _SnAccountProfile(
 | 
				
			||||||
      id: json['id'] as String,
 | 
					      id: json['id'] as String,
 | 
				
			||||||
@@ -55,6 +70,10 @@ _SnAccountProfile _$SnAccountProfileFromJson(Map<String, dynamic> json) =>
 | 
				
			|||||||
          json['birthday'] == null
 | 
					          json['birthday'] == null
 | 
				
			||||||
              ? null
 | 
					              ? null
 | 
				
			||||||
              : DateTime.parse(json['birthday'] as String),
 | 
					              : DateTime.parse(json['birthday'] as String),
 | 
				
			||||||
 | 
					      links:
 | 
				
			||||||
 | 
					          json['links'] == null
 | 
				
			||||||
 | 
					              ? const []
 | 
				
			||||||
 | 
					              : const ProfileLinkConverter().fromJson(json['links']),
 | 
				
			||||||
      lastSeenAt:
 | 
					      lastSeenAt:
 | 
				
			||||||
          json['last_seen_at'] == null
 | 
					          json['last_seen_at'] == null
 | 
				
			||||||
              ? null
 | 
					              ? null
 | 
				
			||||||
@@ -84,12 +103,6 @@ _SnAccountProfile _$SnAccountProfileFromJson(Map<String, dynamic> json) =>
 | 
				
			|||||||
              : SnVerificationMark.fromJson(
 | 
					              : SnVerificationMark.fromJson(
 | 
				
			||||||
                json['verification'] as Map<String, dynamic>,
 | 
					                json['verification'] as Map<String, dynamic>,
 | 
				
			||||||
              ),
 | 
					              ),
 | 
				
			||||||
      stellarMembership:
 | 
					 | 
				
			||||||
          json['stellar_membership'] == null
 | 
					 | 
				
			||||||
              ? null
 | 
					 | 
				
			||||||
              : SnWalletSubscriptionRef.fromJson(
 | 
					 | 
				
			||||||
                json['stellar_membership'] as Map<String, dynamic>,
 | 
					 | 
				
			||||||
              ),
 | 
					 | 
				
			||||||
      createdAt: DateTime.parse(json['created_at'] as String),
 | 
					      createdAt: DateTime.parse(json['created_at'] as String),
 | 
				
			||||||
      updatedAt: DateTime.parse(json['updated_at'] as String),
 | 
					      updatedAt: DateTime.parse(json['updated_at'] as String),
 | 
				
			||||||
      deletedAt:
 | 
					      deletedAt:
 | 
				
			||||||
@@ -110,6 +123,7 @@ Map<String, dynamic> _$SnAccountProfileToJson(_SnAccountProfile instance) =>
 | 
				
			|||||||
      'location': instance.location,
 | 
					      'location': instance.location,
 | 
				
			||||||
      'time_zone': instance.timeZone,
 | 
					      'time_zone': instance.timeZone,
 | 
				
			||||||
      'birthday': instance.birthday?.toIso8601String(),
 | 
					      'birthday': instance.birthday?.toIso8601String(),
 | 
				
			||||||
 | 
					      'links': const ProfileLinkConverter().toJson(instance.links),
 | 
				
			||||||
      'last_seen_at': instance.lastSeenAt?.toIso8601String(),
 | 
					      'last_seen_at': instance.lastSeenAt?.toIso8601String(),
 | 
				
			||||||
      'active_badge': instance.activeBadge?.toJson(),
 | 
					      'active_badge': instance.activeBadge?.toJson(),
 | 
				
			||||||
      'experience': instance.experience,
 | 
					      'experience': instance.experience,
 | 
				
			||||||
@@ -118,7 +132,6 @@ Map<String, dynamic> _$SnAccountProfileToJson(_SnAccountProfile instance) =>
 | 
				
			|||||||
      'picture': instance.picture?.toJson(),
 | 
					      'picture': instance.picture?.toJson(),
 | 
				
			||||||
      'background': instance.background?.toJson(),
 | 
					      'background': instance.background?.toJson(),
 | 
				
			||||||
      'verification': instance.verification?.toJson(),
 | 
					      'verification': instance.verification?.toJson(),
 | 
				
			||||||
      'stellar_membership': instance.stellarMembership?.toJson(),
 | 
					 | 
				
			||||||
      'created_at': instance.createdAt.toIso8601String(),
 | 
					      'created_at': instance.createdAt.toIso8601String(),
 | 
				
			||||||
      'updated_at': instance.updatedAt.toIso8601String(),
 | 
					      'updated_at': instance.updatedAt.toIso8601String(),
 | 
				
			||||||
      'deleted_at': instance.deletedAt?.toIso8601String(),
 | 
					      'deleted_at': instance.deletedAt?.toIso8601String(),
 | 
				
			||||||
@@ -286,3 +299,113 @@ Map<String, dynamic> _$SnVerificationMarkToJson(_SnVerificationMark instance) =>
 | 
				
			|||||||
      'description': instance.description,
 | 
					      'description': instance.description,
 | 
				
			||||||
      'verified_by': instance.verifiedBy,
 | 
					      'verified_by': instance.verifiedBy,
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_SnAuthDevice _$SnAuthDeviceFromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					    _SnAuthDevice(
 | 
				
			||||||
 | 
					      id: json['id'] as String,
 | 
				
			||||||
 | 
					      deviceId: json['device_id'] as String,
 | 
				
			||||||
 | 
					      deviceName: json['device_name'] as String,
 | 
				
			||||||
 | 
					      deviceLabel: json['device_label'] as String?,
 | 
				
			||||||
 | 
					      accountId: json['account_id'] as String,
 | 
				
			||||||
 | 
					      platform: (json['platform'] as num).toInt(),
 | 
				
			||||||
 | 
					      isCurrent: json['is_current'] as bool? ?? false,
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$SnAuthDeviceToJson(_SnAuthDevice instance) =>
 | 
				
			||||||
 | 
					    <String, dynamic>{
 | 
				
			||||||
 | 
					      'id': instance.id,
 | 
				
			||||||
 | 
					      'device_id': instance.deviceId,
 | 
				
			||||||
 | 
					      'device_name': instance.deviceName,
 | 
				
			||||||
 | 
					      'device_label': instance.deviceLabel,
 | 
				
			||||||
 | 
					      'account_id': instance.accountId,
 | 
				
			||||||
 | 
					      'platform': instance.platform,
 | 
				
			||||||
 | 
					      'is_current': instance.isCurrent,
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_SnAuthDeviceWithChallengee _$SnAuthDeviceWithChallengeeFromJson(
 | 
				
			||||||
 | 
					  Map<String, dynamic> json,
 | 
				
			||||||
 | 
					) => _SnAuthDeviceWithChallengee(
 | 
				
			||||||
 | 
					  id: json['id'] as String,
 | 
				
			||||||
 | 
					  deviceId: json['device_id'] as String,
 | 
				
			||||||
 | 
					  deviceName: json['device_name'] as String,
 | 
				
			||||||
 | 
					  deviceLabel: json['device_label'] as String?,
 | 
				
			||||||
 | 
					  accountId: json['account_id'] as String,
 | 
				
			||||||
 | 
					  platform: (json['platform'] as num).toInt(),
 | 
				
			||||||
 | 
					  challenges:
 | 
				
			||||||
 | 
					      (json['challenges'] as List<dynamic>)
 | 
				
			||||||
 | 
					          .map((e) => SnAuthChallenge.fromJson(e as Map<String, dynamic>))
 | 
				
			||||||
 | 
					          .toList(),
 | 
				
			||||||
 | 
					  isCurrent: json['is_current'] as bool? ?? false,
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$SnAuthDeviceWithChallengeeToJson(
 | 
				
			||||||
 | 
					  _SnAuthDeviceWithChallengee instance,
 | 
				
			||||||
 | 
					) => <String, dynamic>{
 | 
				
			||||||
 | 
					  'id': instance.id,
 | 
				
			||||||
 | 
					  'device_id': instance.deviceId,
 | 
				
			||||||
 | 
					  'device_name': instance.deviceName,
 | 
				
			||||||
 | 
					  'device_label': instance.deviceLabel,
 | 
				
			||||||
 | 
					  'account_id': instance.accountId,
 | 
				
			||||||
 | 
					  'platform': instance.platform,
 | 
				
			||||||
 | 
					  'challenges': instance.challenges.map((e) => e.toJson()).toList(),
 | 
				
			||||||
 | 
					  'is_current': instance.isCurrent,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_SnExperienceRecord _$SnExperienceRecordFromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					    _SnExperienceRecord(
 | 
				
			||||||
 | 
					      id: json['id'] as String,
 | 
				
			||||||
 | 
					      delta: (json['delta'] as num).toInt(),
 | 
				
			||||||
 | 
					      reasonType: json['reason_type'] as String,
 | 
				
			||||||
 | 
					      reason: json['reason'] as String,
 | 
				
			||||||
 | 
					      bonusMultiplier: (json['bonus_multiplier'] as num?)?.toDouble() ?? 1.0,
 | 
				
			||||||
 | 
					      createdAt: DateTime.parse(json['created_at'] as String),
 | 
				
			||||||
 | 
					      updatedAt: DateTime.parse(json['updated_at'] as String),
 | 
				
			||||||
 | 
					      deletedAt:
 | 
				
			||||||
 | 
					          json['deleted_at'] == null
 | 
				
			||||||
 | 
					              ? null
 | 
				
			||||||
 | 
					              : DateTime.parse(json['deleted_at'] as String),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$SnExperienceRecordToJson(_SnExperienceRecord instance) =>
 | 
				
			||||||
 | 
					    <String, dynamic>{
 | 
				
			||||||
 | 
					      'id': instance.id,
 | 
				
			||||||
 | 
					      'delta': instance.delta,
 | 
				
			||||||
 | 
					      'reason_type': instance.reasonType,
 | 
				
			||||||
 | 
					      'reason': instance.reason,
 | 
				
			||||||
 | 
					      'bonus_multiplier': instance.bonusMultiplier,
 | 
				
			||||||
 | 
					      'created_at': instance.createdAt.toIso8601String(),
 | 
				
			||||||
 | 
					      'updated_at': instance.updatedAt.toIso8601String(),
 | 
				
			||||||
 | 
					      'deleted_at': instance.deletedAt?.toIso8601String(),
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_SnSocialCreditRecord _$SnSocialCreditRecordFromJson(
 | 
				
			||||||
 | 
					  Map<String, dynamic> json,
 | 
				
			||||||
 | 
					) => _SnSocialCreditRecord(
 | 
				
			||||||
 | 
					  id: json['id'] as String,
 | 
				
			||||||
 | 
					  delta: (json['delta'] as num).toDouble(),
 | 
				
			||||||
 | 
					  reasonType: json['reason_type'] as String,
 | 
				
			||||||
 | 
					  reason: json['reason'] as String,
 | 
				
			||||||
 | 
					  expiredAt:
 | 
				
			||||||
 | 
					      json['expired_at'] == null
 | 
				
			||||||
 | 
					          ? null
 | 
				
			||||||
 | 
					          : DateTime.parse(json['expired_at'] as String),
 | 
				
			||||||
 | 
					  createdAt: DateTime.parse(json['created_at'] as String),
 | 
				
			||||||
 | 
					  updatedAt: DateTime.parse(json['updated_at'] as String),
 | 
				
			||||||
 | 
					  deletedAt:
 | 
				
			||||||
 | 
					      json['deleted_at'] == null
 | 
				
			||||||
 | 
					          ? null
 | 
				
			||||||
 | 
					          : DateTime.parse(json['deleted_at'] as String),
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$SnSocialCreditRecordToJson(
 | 
				
			||||||
 | 
					  _SnSocialCreditRecord instance,
 | 
				
			||||||
 | 
					) => <String, dynamic>{
 | 
				
			||||||
 | 
					  'id': instance.id,
 | 
				
			||||||
 | 
					  'delta': instance.delta,
 | 
				
			||||||
 | 
					  'reason_type': instance.reasonType,
 | 
				
			||||||
 | 
					  'reason': instance.reason,
 | 
				
			||||||
 | 
					  'expired_at': instance.expiredAt?.toIso8601String(),
 | 
				
			||||||
 | 
					  'created_at': instance.createdAt.toIso8601String(),
 | 
				
			||||||
 | 
					  'updated_at': instance.updatedAt.toIso8601String(),
 | 
				
			||||||
 | 
					  'deleted_at': instance.deletedAt?.toIso8601String(),
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
import 'package:freezed_annotation/freezed_annotation.dart';
 | 
					import 'package:freezed_annotation/freezed_annotation.dart';
 | 
				
			||||||
import 'package:island/models/user.dart';
 | 
					import 'package:island/models/account.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
part 'activity.freezed.dart';
 | 
					part 'activity.freezed.dart';
 | 
				
			||||||
part 'activity.g.dart';
 | 
					part 'activity.g.dart';
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
// dart format width=80
 | 
					 | 
				
			||||||
// coverage:ignore-file
 | 
					 | 
				
			||||||
// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					// coverage:ignore-file
 | 
				
			||||||
// ignore_for_file: type=lint
 | 
					// ignore_for_file: type=lint
 | 
				
			||||||
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
					// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -82,6 +81,130 @@ as DateTime?,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnActivity].
 | 
				
			||||||
 | 
					extension SnActivityPatterns on SnActivity {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnActivity value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnActivity() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnActivity value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnActivity():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnActivity value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnActivity() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  String type,  String resourceIdentifier,  dynamic data,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnActivity() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.type,_that.resourceIdentifier,_that.data,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  String type,  String resourceIdentifier,  dynamic data,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnActivity():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.type,_that.resourceIdentifier,_that.data,_that.createdAt,_that.updatedAt,_that.deletedAt);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  String type,  String resourceIdentifier,  dynamic data,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnActivity() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.type,_that.resourceIdentifier,_that.data,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -246,6 +369,130 @@ $SnAccountCopyWith<$Res>? get account {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnCheckInResult].
 | 
				
			||||||
 | 
					extension SnCheckInResultPatterns on SnCheckInResult {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnCheckInResult value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnCheckInResult() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnCheckInResult value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnCheckInResult():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnCheckInResult value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnCheckInResult() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  int level,  List<SnFortuneTip> tips,  String accountId,  SnAccount? account,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnCheckInResult() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.level,_that.tips,_that.accountId,_that.account,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  int level,  List<SnFortuneTip> tips,  String accountId,  SnAccount? account,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnCheckInResult():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.level,_that.tips,_that.accountId,_that.account,_that.createdAt,_that.updatedAt,_that.deletedAt);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  int level,  List<SnFortuneTip> tips,  String accountId,  SnAccount? account,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnCheckInResult() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.level,_that.tips,_that.accountId,_that.account,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -413,6 +660,130 @@ as String,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnFortuneTip].
 | 
				
			||||||
 | 
					extension SnFortuneTipPatterns on SnFortuneTip {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnFortuneTip value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnFortuneTip() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnFortuneTip value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnFortuneTip():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnFortuneTip value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnFortuneTip() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( bool isPositive,  String title,  String content)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnFortuneTip() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.isPositive,_that.title,_that.content);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( bool isPositive,  String title,  String content)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnFortuneTip():
 | 
				
			||||||
 | 
					return $default(_that.isPositive,_that.title,_that.content);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( bool isPositive,  String title,  String content)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnFortuneTip() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.isPositive,_that.title,_that.content);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -564,6 +935,130 @@ $SnCheckInResultCopyWith<$Res>? get checkInResult {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnEventCalendarEntry].
 | 
				
			||||||
 | 
					extension SnEventCalendarEntryPatterns on SnEventCalendarEntry {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnEventCalendarEntry value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnEventCalendarEntry() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnEventCalendarEntry value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnEventCalendarEntry():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnEventCalendarEntry value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnEventCalendarEntry() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( DateTime date,  SnCheckInResult? checkInResult,  List<dynamic> statuses)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnEventCalendarEntry() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.date,_that.checkInResult,_that.statuses);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( DateTime date,  SnCheckInResult? checkInResult,  List<dynamic> statuses)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnEventCalendarEntry():
 | 
				
			||||||
 | 
					return $default(_that.date,_that.checkInResult,_that.statuses);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( DateTime date,  SnCheckInResult? checkInResult,  List<dynamic> statuses)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnEventCalendarEntry() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.date,_that.checkInResult,_that.statuses);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,14 +19,12 @@ sealed class SnAuthChallenge with _$SnAuthChallenge {
 | 
				
			|||||||
    required int stepRemain,
 | 
					    required int stepRemain,
 | 
				
			||||||
    required int stepTotal,
 | 
					    required int stepTotal,
 | 
				
			||||||
    required int failedAttempts,
 | 
					    required int failedAttempts,
 | 
				
			||||||
    required int platform,
 | 
					 | 
				
			||||||
    required int type,
 | 
					    required int type,
 | 
				
			||||||
    required List<String> blacklistFactors,
 | 
					    required List<String> blacklistFactors,
 | 
				
			||||||
    required List<dynamic> audiences,
 | 
					    required List<dynamic> audiences,
 | 
				
			||||||
    required List<dynamic> scopes,
 | 
					    required List<dynamic> scopes,
 | 
				
			||||||
    required String ipAddress,
 | 
					    required String ipAddress,
 | 
				
			||||||
    required String userAgent,
 | 
					    required String userAgent,
 | 
				
			||||||
    required String deviceId,
 | 
					 | 
				
			||||||
    required String? nonce,
 | 
					    required String? nonce,
 | 
				
			||||||
    required String? location,
 | 
					    required String? location,
 | 
				
			||||||
    required String accountId,
 | 
					    required String accountId,
 | 
				
			||||||
@@ -76,22 +74,6 @@ sealed class SnAuthFactor with _$SnAuthFactor {
 | 
				
			|||||||
      _$SnAuthFactorFromJson(json);
 | 
					      _$SnAuthFactorFromJson(json);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@freezed
 | 
					 | 
				
			||||||
sealed class SnAuthDevice with _$SnAuthDevice {
 | 
					 | 
				
			||||||
  const factory SnAuthDevice({
 | 
					 | 
				
			||||||
    required dynamic label,
 | 
					 | 
				
			||||||
    required String userAgent,
 | 
					 | 
				
			||||||
    required String deviceId,
 | 
					 | 
				
			||||||
    required int platform,
 | 
					 | 
				
			||||||
    required List<SnAuthSession> sessions,
 | 
					 | 
				
			||||||
    // Not from backend, used for UI
 | 
					 | 
				
			||||||
    @Default(false) bool isCurrent,
 | 
					 | 
				
			||||||
  }) = _SnAuthDevice;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  factory SnAuthDevice.fromJson(Map<String, dynamic> json) =>
 | 
					 | 
				
			||||||
      _$SnAuthDeviceFromJson(json);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@freezed
 | 
					@freezed
 | 
				
			||||||
sealed class SnAccountConnection with _$SnAccountConnection {
 | 
					sealed class SnAccountConnection with _$SnAccountConnection {
 | 
				
			||||||
  const factory SnAccountConnection({
 | 
					  const factory SnAccountConnection({
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
// dart format width=80
 | 
					 | 
				
			||||||
// coverage:ignore-file
 | 
					 | 
				
			||||||
// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					// coverage:ignore-file
 | 
				
			||||||
// ignore_for_file: type=lint
 | 
					// ignore_for_file: type=lint
 | 
				
			||||||
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
					// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -76,6 +75,130 @@ as String,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [AppToken].
 | 
				
			||||||
 | 
					extension AppTokenPatterns on AppToken {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _AppToken value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _AppToken() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _AppToken value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _AppToken():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _AppToken value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _AppToken() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String token)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _AppToken() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.token);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String token)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _AppToken():
 | 
				
			||||||
 | 
					return $default(_that.token);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String token)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _AppToken() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.token);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -149,7 +272,7 @@ as String,
 | 
				
			|||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
mixin _$SnAuthChallenge {
 | 
					mixin _$SnAuthChallenge {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 String get id; DateTime get expiredAt; int get stepRemain; int get stepTotal; int get failedAttempts; int get platform; int get type; List<String> get blacklistFactors; List<dynamic> get audiences; List<dynamic> get scopes; String get ipAddress; String get userAgent; String get deviceId; String? get nonce; String? get location; String get accountId; DateTime get createdAt; DateTime get updatedAt; DateTime? get deletedAt;
 | 
					 String get id; DateTime get expiredAt; int get stepRemain; int get stepTotal; int get failedAttempts; int get type; List<String> get blacklistFactors; List<dynamic> get audiences; List<dynamic> get scopes; String get ipAddress; String get userAgent; String? get nonce; String? get location; String get accountId; DateTime get createdAt; DateTime get updatedAt; DateTime? get deletedAt;
 | 
				
			||||||
/// Create a copy of SnAuthChallenge
 | 
					/// Create a copy of SnAuthChallenge
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
@@ -162,16 +285,16 @@ $SnAuthChallengeCopyWith<SnAuthChallenge> get copyWith => _$SnAuthChallengeCopyW
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
bool operator ==(Object other) {
 | 
					bool operator ==(Object other) {
 | 
				
			||||||
  return identical(this, other) || (other.runtimeType == runtimeType&&other is SnAuthChallenge&&(identical(other.id, id) || other.id == id)&&(identical(other.expiredAt, expiredAt) || other.expiredAt == expiredAt)&&(identical(other.stepRemain, stepRemain) || other.stepRemain == stepRemain)&&(identical(other.stepTotal, stepTotal) || other.stepTotal == stepTotal)&&(identical(other.failedAttempts, failedAttempts) || other.failedAttempts == failedAttempts)&&(identical(other.platform, platform) || other.platform == platform)&&(identical(other.type, type) || other.type == type)&&const DeepCollectionEquality().equals(other.blacklistFactors, blacklistFactors)&&const DeepCollectionEquality().equals(other.audiences, audiences)&&const DeepCollectionEquality().equals(other.scopes, scopes)&&(identical(other.ipAddress, ipAddress) || other.ipAddress == ipAddress)&&(identical(other.userAgent, userAgent) || other.userAgent == userAgent)&&(identical(other.deviceId, deviceId) || other.deviceId == deviceId)&&(identical(other.nonce, nonce) || other.nonce == nonce)&&(identical(other.location, location) || other.location == location)&&(identical(other.accountId, accountId) || other.accountId == accountId)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.updatedAt, updatedAt) || other.updatedAt == updatedAt)&&(identical(other.deletedAt, deletedAt) || other.deletedAt == deletedAt));
 | 
					  return identical(this, other) || (other.runtimeType == runtimeType&&other is SnAuthChallenge&&(identical(other.id, id) || other.id == id)&&(identical(other.expiredAt, expiredAt) || other.expiredAt == expiredAt)&&(identical(other.stepRemain, stepRemain) || other.stepRemain == stepRemain)&&(identical(other.stepTotal, stepTotal) || other.stepTotal == stepTotal)&&(identical(other.failedAttempts, failedAttempts) || other.failedAttempts == failedAttempts)&&(identical(other.type, type) || other.type == type)&&const DeepCollectionEquality().equals(other.blacklistFactors, blacklistFactors)&&const DeepCollectionEquality().equals(other.audiences, audiences)&&const DeepCollectionEquality().equals(other.scopes, scopes)&&(identical(other.ipAddress, ipAddress) || other.ipAddress == ipAddress)&&(identical(other.userAgent, userAgent) || other.userAgent == userAgent)&&(identical(other.nonce, nonce) || other.nonce == nonce)&&(identical(other.location, location) || other.location == location)&&(identical(other.accountId, accountId) || other.accountId == accountId)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.updatedAt, updatedAt) || other.updatedAt == updatedAt)&&(identical(other.deletedAt, deletedAt) || other.deletedAt == deletedAt));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
int get hashCode => Object.hashAll([runtimeType,id,expiredAt,stepRemain,stepTotal,failedAttempts,platform,type,const DeepCollectionEquality().hash(blacklistFactors),const DeepCollectionEquality().hash(audiences),const DeepCollectionEquality().hash(scopes),ipAddress,userAgent,deviceId,nonce,location,accountId,createdAt,updatedAt,deletedAt]);
 | 
					int get hashCode => Object.hash(runtimeType,id,expiredAt,stepRemain,stepTotal,failedAttempts,type,const DeepCollectionEquality().hash(blacklistFactors),const DeepCollectionEquality().hash(audiences),const DeepCollectionEquality().hash(scopes),ipAddress,userAgent,nonce,location,accountId,createdAt,updatedAt,deletedAt);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
String toString() {
 | 
					String toString() {
 | 
				
			||||||
  return 'SnAuthChallenge(id: $id, expiredAt: $expiredAt, stepRemain: $stepRemain, stepTotal: $stepTotal, failedAttempts: $failedAttempts, platform: $platform, type: $type, blacklistFactors: $blacklistFactors, audiences: $audiences, scopes: $scopes, ipAddress: $ipAddress, userAgent: $userAgent, deviceId: $deviceId, nonce: $nonce, location: $location, accountId: $accountId, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt)';
 | 
					  return 'SnAuthChallenge(id: $id, expiredAt: $expiredAt, stepRemain: $stepRemain, stepTotal: $stepTotal, failedAttempts: $failedAttempts, type: $type, blacklistFactors: $blacklistFactors, audiences: $audiences, scopes: $scopes, ipAddress: $ipAddress, userAgent: $userAgent, nonce: $nonce, location: $location, accountId: $accountId, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt)';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -182,7 +305,7 @@ abstract mixin class $SnAuthChallengeCopyWith<$Res>  {
 | 
				
			|||||||
  factory $SnAuthChallengeCopyWith(SnAuthChallenge value, $Res Function(SnAuthChallenge) _then) = _$SnAuthChallengeCopyWithImpl;
 | 
					  factory $SnAuthChallengeCopyWith(SnAuthChallenge value, $Res Function(SnAuthChallenge) _then) = _$SnAuthChallengeCopyWithImpl;
 | 
				
			||||||
@useResult
 | 
					@useResult
 | 
				
			||||||
$Res call({
 | 
					$Res call({
 | 
				
			||||||
 String id, DateTime expiredAt, int stepRemain, int stepTotal, int failedAttempts, int platform, int type, List<String> blacklistFactors, List<dynamic> audiences, List<dynamic> scopes, String ipAddress, String userAgent, String deviceId, String? nonce, String? location, String accountId, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt
 | 
					 String id, DateTime expiredAt, int stepRemain, int stepTotal, int failedAttempts, int type, List<String> blacklistFactors, List<dynamic> audiences, List<dynamic> scopes, String ipAddress, String userAgent, String? nonce, String? location, String accountId, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -199,21 +322,19 @@ class _$SnAuthChallengeCopyWithImpl<$Res>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/// Create a copy of SnAuthChallenge
 | 
					/// Create a copy of SnAuthChallenge
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@pragma('vm:prefer-inline') @override $Res call({Object? id = null,Object? expiredAt = null,Object? stepRemain = null,Object? stepTotal = null,Object? failedAttempts = null,Object? platform = null,Object? type = null,Object? blacklistFactors = null,Object? audiences = null,Object? scopes = null,Object? ipAddress = null,Object? userAgent = null,Object? deviceId = null,Object? nonce = freezed,Object? location = freezed,Object? accountId = null,Object? createdAt = null,Object? updatedAt = null,Object? deletedAt = freezed,}) {
 | 
					@pragma('vm:prefer-inline') @override $Res call({Object? id = null,Object? expiredAt = null,Object? stepRemain = null,Object? stepTotal = null,Object? failedAttempts = null,Object? type = null,Object? blacklistFactors = null,Object? audiences = null,Object? scopes = null,Object? ipAddress = null,Object? userAgent = null,Object? nonce = freezed,Object? location = freezed,Object? accountId = null,Object? createdAt = null,Object? updatedAt = null,Object? deletedAt = freezed,}) {
 | 
				
			||||||
  return _then(_self.copyWith(
 | 
					  return _then(_self.copyWith(
 | 
				
			||||||
id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
					id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,expiredAt: null == expiredAt ? _self.expiredAt : expiredAt // ignore: cast_nullable_to_non_nullable
 | 
					as String,expiredAt: null == expiredAt ? _self.expiredAt : expiredAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as DateTime,stepRemain: null == stepRemain ? _self.stepRemain : stepRemain // ignore: cast_nullable_to_non_nullable
 | 
					as DateTime,stepRemain: null == stepRemain ? _self.stepRemain : stepRemain // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as int,stepTotal: null == stepTotal ? _self.stepTotal : stepTotal // ignore: cast_nullable_to_non_nullable
 | 
					as int,stepTotal: null == stepTotal ? _self.stepTotal : stepTotal // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as int,failedAttempts: null == failedAttempts ? _self.failedAttempts : failedAttempts // ignore: cast_nullable_to_non_nullable
 | 
					as int,failedAttempts: null == failedAttempts ? _self.failedAttempts : failedAttempts // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as int,platform: null == platform ? _self.platform : platform // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as int,type: null == type ? _self.type : type // ignore: cast_nullable_to_non_nullable
 | 
					as int,type: null == type ? _self.type : type // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as int,blacklistFactors: null == blacklistFactors ? _self.blacklistFactors : blacklistFactors // ignore: cast_nullable_to_non_nullable
 | 
					as int,blacklistFactors: null == blacklistFactors ? _self.blacklistFactors : blacklistFactors // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as List<String>,audiences: null == audiences ? _self.audiences : audiences // ignore: cast_nullable_to_non_nullable
 | 
					as List<String>,audiences: null == audiences ? _self.audiences : audiences // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as List<dynamic>,scopes: null == scopes ? _self.scopes : scopes // ignore: cast_nullable_to_non_nullable
 | 
					as List<dynamic>,scopes: null == scopes ? _self.scopes : scopes // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as List<dynamic>,ipAddress: null == ipAddress ? _self.ipAddress : ipAddress // ignore: cast_nullable_to_non_nullable
 | 
					as List<dynamic>,ipAddress: null == ipAddress ? _self.ipAddress : ipAddress // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,userAgent: null == userAgent ? _self.userAgent : userAgent // ignore: cast_nullable_to_non_nullable
 | 
					as String,userAgent: null == userAgent ? _self.userAgent : userAgent // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,deviceId: null == deviceId ? _self.deviceId : deviceId // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as String,nonce: freezed == nonce ? _self.nonce : nonce // ignore: cast_nullable_to_non_nullable
 | 
					as String,nonce: freezed == nonce ? _self.nonce : nonce // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String?,location: freezed == location ? _self.location : location // ignore: cast_nullable_to_non_nullable
 | 
					as String?,location: freezed == location ? _self.location : location // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String?,accountId: null == accountId ? _self.accountId : accountId // ignore: cast_nullable_to_non_nullable
 | 
					as String?,accountId: null == accountId ? _self.accountId : accountId // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
@@ -227,11 +348,135 @@ as DateTime?,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnAuthChallenge].
 | 
				
			||||||
 | 
					extension SnAuthChallengePatterns on SnAuthChallenge {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnAuthChallenge value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAuthChallenge() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnAuthChallenge value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAuthChallenge():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnAuthChallenge value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAuthChallenge() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  DateTime expiredAt,  int stepRemain,  int stepTotal,  int failedAttempts,  int type,  List<String> blacklistFactors,  List<dynamic> audiences,  List<dynamic> scopes,  String ipAddress,  String userAgent,  String? nonce,  String? location,  String accountId,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAuthChallenge() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.expiredAt,_that.stepRemain,_that.stepTotal,_that.failedAttempts,_that.type,_that.blacklistFactors,_that.audiences,_that.scopes,_that.ipAddress,_that.userAgent,_that.nonce,_that.location,_that.accountId,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  DateTime expiredAt,  int stepRemain,  int stepTotal,  int failedAttempts,  int type,  List<String> blacklistFactors,  List<dynamic> audiences,  List<dynamic> scopes,  String ipAddress,  String userAgent,  String? nonce,  String? location,  String accountId,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAuthChallenge():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.expiredAt,_that.stepRemain,_that.stepTotal,_that.failedAttempts,_that.type,_that.blacklistFactors,_that.audiences,_that.scopes,_that.ipAddress,_that.userAgent,_that.nonce,_that.location,_that.accountId,_that.createdAt,_that.updatedAt,_that.deletedAt);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  DateTime expiredAt,  int stepRemain,  int stepTotal,  int failedAttempts,  int type,  List<String> blacklistFactors,  List<dynamic> audiences,  List<dynamic> scopes,  String ipAddress,  String userAgent,  String? nonce,  String? location,  String accountId,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAuthChallenge() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.expiredAt,_that.stepRemain,_that.stepTotal,_that.failedAttempts,_that.type,_that.blacklistFactors,_that.audiences,_that.scopes,_that.ipAddress,_that.userAgent,_that.nonce,_that.location,_that.accountId,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class _SnAuthChallenge implements SnAuthChallenge {
 | 
					class _SnAuthChallenge implements SnAuthChallenge {
 | 
				
			||||||
  const _SnAuthChallenge({required this.id, required this.expiredAt, required this.stepRemain, required this.stepTotal, required this.failedAttempts, required this.platform, required this.type, required final  List<String> blacklistFactors, required final  List<dynamic> audiences, required final  List<dynamic> scopes, required this.ipAddress, required this.userAgent, required this.deviceId, required this.nonce, required this.location, required this.accountId, required this.createdAt, required this.updatedAt, required this.deletedAt}): _blacklistFactors = blacklistFactors,_audiences = audiences,_scopes = scopes;
 | 
					  const _SnAuthChallenge({required this.id, required this.expiredAt, required this.stepRemain, required this.stepTotal, required this.failedAttempts, required this.type, required final  List<String> blacklistFactors, required final  List<dynamic> audiences, required final  List<dynamic> scopes, required this.ipAddress, required this.userAgent, required this.nonce, required this.location, required this.accountId, required this.createdAt, required this.updatedAt, required this.deletedAt}): _blacklistFactors = blacklistFactors,_audiences = audiences,_scopes = scopes;
 | 
				
			||||||
  factory _SnAuthChallenge.fromJson(Map<String, dynamic> json) => _$SnAuthChallengeFromJson(json);
 | 
					  factory _SnAuthChallenge.fromJson(Map<String, dynamic> json) => _$SnAuthChallengeFromJson(json);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override final  String id;
 | 
					@override final  String id;
 | 
				
			||||||
@@ -239,7 +484,6 @@ class _SnAuthChallenge implements SnAuthChallenge {
 | 
				
			|||||||
@override final  int stepRemain;
 | 
					@override final  int stepRemain;
 | 
				
			||||||
@override final  int stepTotal;
 | 
					@override final  int stepTotal;
 | 
				
			||||||
@override final  int failedAttempts;
 | 
					@override final  int failedAttempts;
 | 
				
			||||||
@override final  int platform;
 | 
					 | 
				
			||||||
@override final  int type;
 | 
					@override final  int type;
 | 
				
			||||||
 final  List<String> _blacklistFactors;
 | 
					 final  List<String> _blacklistFactors;
 | 
				
			||||||
@override List<String> get blacklistFactors {
 | 
					@override List<String> get blacklistFactors {
 | 
				
			||||||
@@ -264,7 +508,6 @@ class _SnAuthChallenge implements SnAuthChallenge {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
@override final  String ipAddress;
 | 
					@override final  String ipAddress;
 | 
				
			||||||
@override final  String userAgent;
 | 
					@override final  String userAgent;
 | 
				
			||||||
@override final  String deviceId;
 | 
					 | 
				
			||||||
@override final  String? nonce;
 | 
					@override final  String? nonce;
 | 
				
			||||||
@override final  String? location;
 | 
					@override final  String? location;
 | 
				
			||||||
@override final  String accountId;
 | 
					@override final  String accountId;
 | 
				
			||||||
@@ -285,16 +528,16 @@ Map<String, dynamic> toJson() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
bool operator ==(Object other) {
 | 
					bool operator ==(Object other) {
 | 
				
			||||||
  return identical(this, other) || (other.runtimeType == runtimeType&&other is _SnAuthChallenge&&(identical(other.id, id) || other.id == id)&&(identical(other.expiredAt, expiredAt) || other.expiredAt == expiredAt)&&(identical(other.stepRemain, stepRemain) || other.stepRemain == stepRemain)&&(identical(other.stepTotal, stepTotal) || other.stepTotal == stepTotal)&&(identical(other.failedAttempts, failedAttempts) || other.failedAttempts == failedAttempts)&&(identical(other.platform, platform) || other.platform == platform)&&(identical(other.type, type) || other.type == type)&&const DeepCollectionEquality().equals(other._blacklistFactors, _blacklistFactors)&&const DeepCollectionEquality().equals(other._audiences, _audiences)&&const DeepCollectionEquality().equals(other._scopes, _scopes)&&(identical(other.ipAddress, ipAddress) || other.ipAddress == ipAddress)&&(identical(other.userAgent, userAgent) || other.userAgent == userAgent)&&(identical(other.deviceId, deviceId) || other.deviceId == deviceId)&&(identical(other.nonce, nonce) || other.nonce == nonce)&&(identical(other.location, location) || other.location == location)&&(identical(other.accountId, accountId) || other.accountId == accountId)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.updatedAt, updatedAt) || other.updatedAt == updatedAt)&&(identical(other.deletedAt, deletedAt) || other.deletedAt == deletedAt));
 | 
					  return identical(this, other) || (other.runtimeType == runtimeType&&other is _SnAuthChallenge&&(identical(other.id, id) || other.id == id)&&(identical(other.expiredAt, expiredAt) || other.expiredAt == expiredAt)&&(identical(other.stepRemain, stepRemain) || other.stepRemain == stepRemain)&&(identical(other.stepTotal, stepTotal) || other.stepTotal == stepTotal)&&(identical(other.failedAttempts, failedAttempts) || other.failedAttempts == failedAttempts)&&(identical(other.type, type) || other.type == type)&&const DeepCollectionEquality().equals(other._blacklistFactors, _blacklistFactors)&&const DeepCollectionEquality().equals(other._audiences, _audiences)&&const DeepCollectionEquality().equals(other._scopes, _scopes)&&(identical(other.ipAddress, ipAddress) || other.ipAddress == ipAddress)&&(identical(other.userAgent, userAgent) || other.userAgent == userAgent)&&(identical(other.nonce, nonce) || other.nonce == nonce)&&(identical(other.location, location) || other.location == location)&&(identical(other.accountId, accountId) || other.accountId == accountId)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.updatedAt, updatedAt) || other.updatedAt == updatedAt)&&(identical(other.deletedAt, deletedAt) || other.deletedAt == deletedAt));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
int get hashCode => Object.hashAll([runtimeType,id,expiredAt,stepRemain,stepTotal,failedAttempts,platform,type,const DeepCollectionEquality().hash(_blacklistFactors),const DeepCollectionEquality().hash(_audiences),const DeepCollectionEquality().hash(_scopes),ipAddress,userAgent,deviceId,nonce,location,accountId,createdAt,updatedAt,deletedAt]);
 | 
					int get hashCode => Object.hash(runtimeType,id,expiredAt,stepRemain,stepTotal,failedAttempts,type,const DeepCollectionEquality().hash(_blacklistFactors),const DeepCollectionEquality().hash(_audiences),const DeepCollectionEquality().hash(_scopes),ipAddress,userAgent,nonce,location,accountId,createdAt,updatedAt,deletedAt);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
String toString() {
 | 
					String toString() {
 | 
				
			||||||
  return 'SnAuthChallenge(id: $id, expiredAt: $expiredAt, stepRemain: $stepRemain, stepTotal: $stepTotal, failedAttempts: $failedAttempts, platform: $platform, type: $type, blacklistFactors: $blacklistFactors, audiences: $audiences, scopes: $scopes, ipAddress: $ipAddress, userAgent: $userAgent, deviceId: $deviceId, nonce: $nonce, location: $location, accountId: $accountId, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt)';
 | 
					  return 'SnAuthChallenge(id: $id, expiredAt: $expiredAt, stepRemain: $stepRemain, stepTotal: $stepTotal, failedAttempts: $failedAttempts, type: $type, blacklistFactors: $blacklistFactors, audiences: $audiences, scopes: $scopes, ipAddress: $ipAddress, userAgent: $userAgent, nonce: $nonce, location: $location, accountId: $accountId, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt)';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -305,7 +548,7 @@ abstract mixin class _$SnAuthChallengeCopyWith<$Res> implements $SnAuthChallenge
 | 
				
			|||||||
  factory _$SnAuthChallengeCopyWith(_SnAuthChallenge value, $Res Function(_SnAuthChallenge) _then) = __$SnAuthChallengeCopyWithImpl;
 | 
					  factory _$SnAuthChallengeCopyWith(_SnAuthChallenge value, $Res Function(_SnAuthChallenge) _then) = __$SnAuthChallengeCopyWithImpl;
 | 
				
			||||||
@override @useResult
 | 
					@override @useResult
 | 
				
			||||||
$Res call({
 | 
					$Res call({
 | 
				
			||||||
 String id, DateTime expiredAt, int stepRemain, int stepTotal, int failedAttempts, int platform, int type, List<String> blacklistFactors, List<dynamic> audiences, List<dynamic> scopes, String ipAddress, String userAgent, String deviceId, String? nonce, String? location, String accountId, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt
 | 
					 String id, DateTime expiredAt, int stepRemain, int stepTotal, int failedAttempts, int type, List<String> blacklistFactors, List<dynamic> audiences, List<dynamic> scopes, String ipAddress, String userAgent, String? nonce, String? location, String accountId, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -322,21 +565,19 @@ class __$SnAuthChallengeCopyWithImpl<$Res>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/// Create a copy of SnAuthChallenge
 | 
					/// Create a copy of SnAuthChallenge
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@override @pragma('vm:prefer-inline') $Res call({Object? id = null,Object? expiredAt = null,Object? stepRemain = null,Object? stepTotal = null,Object? failedAttempts = null,Object? platform = null,Object? type = null,Object? blacklistFactors = null,Object? audiences = null,Object? scopes = null,Object? ipAddress = null,Object? userAgent = null,Object? deviceId = null,Object? nonce = freezed,Object? location = freezed,Object? accountId = null,Object? createdAt = null,Object? updatedAt = null,Object? deletedAt = freezed,}) {
 | 
					@override @pragma('vm:prefer-inline') $Res call({Object? id = null,Object? expiredAt = null,Object? stepRemain = null,Object? stepTotal = null,Object? failedAttempts = null,Object? type = null,Object? blacklistFactors = null,Object? audiences = null,Object? scopes = null,Object? ipAddress = null,Object? userAgent = null,Object? nonce = freezed,Object? location = freezed,Object? accountId = null,Object? createdAt = null,Object? updatedAt = null,Object? deletedAt = freezed,}) {
 | 
				
			||||||
  return _then(_SnAuthChallenge(
 | 
					  return _then(_SnAuthChallenge(
 | 
				
			||||||
id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
					id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,expiredAt: null == expiredAt ? _self.expiredAt : expiredAt // ignore: cast_nullable_to_non_nullable
 | 
					as String,expiredAt: null == expiredAt ? _self.expiredAt : expiredAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as DateTime,stepRemain: null == stepRemain ? _self.stepRemain : stepRemain // ignore: cast_nullable_to_non_nullable
 | 
					as DateTime,stepRemain: null == stepRemain ? _self.stepRemain : stepRemain // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as int,stepTotal: null == stepTotal ? _self.stepTotal : stepTotal // ignore: cast_nullable_to_non_nullable
 | 
					as int,stepTotal: null == stepTotal ? _self.stepTotal : stepTotal // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as int,failedAttempts: null == failedAttempts ? _self.failedAttempts : failedAttempts // ignore: cast_nullable_to_non_nullable
 | 
					as int,failedAttempts: null == failedAttempts ? _self.failedAttempts : failedAttempts // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as int,platform: null == platform ? _self.platform : platform // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as int,type: null == type ? _self.type : type // ignore: cast_nullable_to_non_nullable
 | 
					as int,type: null == type ? _self.type : type // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as int,blacklistFactors: null == blacklistFactors ? _self._blacklistFactors : blacklistFactors // ignore: cast_nullable_to_non_nullable
 | 
					as int,blacklistFactors: null == blacklistFactors ? _self._blacklistFactors : blacklistFactors // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as List<String>,audiences: null == audiences ? _self._audiences : audiences // ignore: cast_nullable_to_non_nullable
 | 
					as List<String>,audiences: null == audiences ? _self._audiences : audiences // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as List<dynamic>,scopes: null == scopes ? _self._scopes : scopes // ignore: cast_nullable_to_non_nullable
 | 
					as List<dynamic>,scopes: null == scopes ? _self._scopes : scopes // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as List<dynamic>,ipAddress: null == ipAddress ? _self.ipAddress : ipAddress // ignore: cast_nullable_to_non_nullable
 | 
					as List<dynamic>,ipAddress: null == ipAddress ? _self.ipAddress : ipAddress // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,userAgent: null == userAgent ? _self.userAgent : userAgent // ignore: cast_nullable_to_non_nullable
 | 
					as String,userAgent: null == userAgent ? _self.userAgent : userAgent // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,deviceId: null == deviceId ? _self.deviceId : deviceId // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as String,nonce: freezed == nonce ? _self.nonce : nonce // ignore: cast_nullable_to_non_nullable
 | 
					as String,nonce: freezed == nonce ? _self.nonce : nonce // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String?,location: freezed == location ? _self.location : location // ignore: cast_nullable_to_non_nullable
 | 
					as String?,location: freezed == location ? _self.location : location // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String?,accountId: null == accountId ? _self.accountId : accountId // ignore: cast_nullable_to_non_nullable
 | 
					as String?,accountId: null == accountId ? _self.accountId : accountId // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
@@ -432,6 +673,130 @@ $SnAuthChallengeCopyWith<$Res> get challenge {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnAuthSession].
 | 
				
			||||||
 | 
					extension SnAuthSessionPatterns on SnAuthSession {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnAuthSession value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAuthSession() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnAuthSession value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAuthSession():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnAuthSession value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAuthSession() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  String? label,  DateTime lastGrantedAt,  DateTime expiredAt,  String accountId,  String challengeId,  SnAuthChallenge challenge,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAuthSession() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.label,_that.lastGrantedAt,_that.expiredAt,_that.accountId,_that.challengeId,_that.challenge,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  String? label,  DateTime lastGrantedAt,  DateTime expiredAt,  String accountId,  String challengeId,  SnAuthChallenge challenge,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAuthSession():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.label,_that.lastGrantedAt,_that.expiredAt,_that.accountId,_that.challengeId,_that.challenge,_that.createdAt,_that.updatedAt,_that.deletedAt);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  String? label,  DateTime lastGrantedAt,  DateTime expiredAt,  String accountId,  String challengeId,  SnAuthChallenge challenge,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAuthSession() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.label,_that.lastGrantedAt,_that.expiredAt,_that.accountId,_that.challengeId,_that.challenge,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -600,6 +965,130 @@ as Map<String, dynamic>?,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnAuthFactor].
 | 
				
			||||||
 | 
					extension SnAuthFactorPatterns on SnAuthFactor {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnAuthFactor value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAuthFactor() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnAuthFactor value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAuthFactor():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnAuthFactor value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAuthFactor() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  int type,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt,  DateTime? expiredAt,  DateTime? enabledAt,  int trustworthy,  Map<String, dynamic>? createdResponse)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAuthFactor() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.type,_that.createdAt,_that.updatedAt,_that.deletedAt,_that.expiredAt,_that.enabledAt,_that.trustworthy,_that.createdResponse);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  int type,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt,  DateTime? expiredAt,  DateTime? enabledAt,  int trustworthy,  Map<String, dynamic>? createdResponse)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAuthFactor():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.type,_that.createdAt,_that.updatedAt,_that.deletedAt,_that.expiredAt,_that.enabledAt,_that.trustworthy,_that.createdResponse);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  int type,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt,  DateTime? expiredAt,  DateTime? enabledAt,  int trustworthy,  Map<String, dynamic>? createdResponse)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAuthFactor() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.type,_that.createdAt,_that.updatedAt,_that.deletedAt,_that.expiredAt,_that.enabledAt,_that.trustworthy,_that.createdResponse);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -694,162 +1183,6 @@ as Map<String, dynamic>?,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					 | 
				
			||||||
mixin _$SnAuthDevice {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 dynamic get label; String get userAgent; String get deviceId; int get platform; List<SnAuthSession> get sessions;// Not from backend, used for UI
 | 
					 | 
				
			||||||
 bool get isCurrent;
 | 
					 | 
				
			||||||
/// Create a copy of SnAuthDevice
 | 
					 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					 | 
				
			||||||
@pragma('vm:prefer-inline')
 | 
					 | 
				
			||||||
$SnAuthDeviceCopyWith<SnAuthDevice> get copyWith => _$SnAuthDeviceCopyWithImpl<SnAuthDevice>(this as SnAuthDevice, _$identity);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Serializes this SnAuthDevice to a JSON map.
 | 
					 | 
				
			||||||
  Map<String, dynamic> toJson();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@override
 | 
					 | 
				
			||||||
bool operator ==(Object other) {
 | 
					 | 
				
			||||||
  return identical(this, other) || (other.runtimeType == runtimeType&&other is SnAuthDevice&&const DeepCollectionEquality().equals(other.label, label)&&(identical(other.userAgent, userAgent) || other.userAgent == userAgent)&&(identical(other.deviceId, deviceId) || other.deviceId == deviceId)&&(identical(other.platform, platform) || other.platform == platform)&&const DeepCollectionEquality().equals(other.sessions, sessions)&&(identical(other.isCurrent, isCurrent) || other.isCurrent == isCurrent));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					 | 
				
			||||||
@override
 | 
					 | 
				
			||||||
int get hashCode => Object.hash(runtimeType,const DeepCollectionEquality().hash(label),userAgent,deviceId,platform,const DeepCollectionEquality().hash(sessions),isCurrent);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@override
 | 
					 | 
				
			||||||
String toString() {
 | 
					 | 
				
			||||||
  return 'SnAuthDevice(label: $label, userAgent: $userAgent, deviceId: $deviceId, platform: $platform, sessions: $sessions, isCurrent: $isCurrent)';
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/// @nodoc
 | 
					 | 
				
			||||||
abstract mixin class $SnAuthDeviceCopyWith<$Res>  {
 | 
					 | 
				
			||||||
  factory $SnAuthDeviceCopyWith(SnAuthDevice value, $Res Function(SnAuthDevice) _then) = _$SnAuthDeviceCopyWithImpl;
 | 
					 | 
				
			||||||
@useResult
 | 
					 | 
				
			||||||
$Res call({
 | 
					 | 
				
			||||||
 dynamic label, String userAgent, String deviceId, int platform, List<SnAuthSession> sessions, bool isCurrent
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
/// @nodoc
 | 
					 | 
				
			||||||
class _$SnAuthDeviceCopyWithImpl<$Res>
 | 
					 | 
				
			||||||
    implements $SnAuthDeviceCopyWith<$Res> {
 | 
					 | 
				
			||||||
  _$SnAuthDeviceCopyWithImpl(this._self, this._then);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  final SnAuthDevice _self;
 | 
					 | 
				
			||||||
  final $Res Function(SnAuthDevice) _then;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/// Create a copy of SnAuthDevice
 | 
					 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					 | 
				
			||||||
@pragma('vm:prefer-inline') @override $Res call({Object? label = freezed,Object? userAgent = null,Object? deviceId = null,Object? platform = null,Object? sessions = null,Object? isCurrent = null,}) {
 | 
					 | 
				
			||||||
  return _then(_self.copyWith(
 | 
					 | 
				
			||||||
label: freezed == label ? _self.label : label // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as dynamic,userAgent: null == userAgent ? _self.userAgent : userAgent // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as String,deviceId: null == deviceId ? _self.deviceId : deviceId // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as String,platform: null == platform ? _self.platform : platform // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as int,sessions: null == sessions ? _self.sessions : sessions // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as List<SnAuthSession>,isCurrent: null == isCurrent ? _self.isCurrent : isCurrent // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as bool,
 | 
					 | 
				
			||||||
  ));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/// @nodoc
 | 
					 | 
				
			||||||
@JsonSerializable()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class _SnAuthDevice implements SnAuthDevice {
 | 
					 | 
				
			||||||
  const _SnAuthDevice({required this.label, required this.userAgent, required this.deviceId, required this.platform, required final  List<SnAuthSession> sessions, this.isCurrent = false}): _sessions = sessions;
 | 
					 | 
				
			||||||
  factory _SnAuthDevice.fromJson(Map<String, dynamic> json) => _$SnAuthDeviceFromJson(json);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@override final  dynamic label;
 | 
					 | 
				
			||||||
@override final  String userAgent;
 | 
					 | 
				
			||||||
@override final  String deviceId;
 | 
					 | 
				
			||||||
@override final  int platform;
 | 
					 | 
				
			||||||
 final  List<SnAuthSession> _sessions;
 | 
					 | 
				
			||||||
@override List<SnAuthSession> get sessions {
 | 
					 | 
				
			||||||
  if (_sessions is EqualUnmodifiableListView) return _sessions;
 | 
					 | 
				
			||||||
  // ignore: implicit_dynamic_type
 | 
					 | 
				
			||||||
  return EqualUnmodifiableListView(_sessions);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Not from backend, used for UI
 | 
					 | 
				
			||||||
@override@JsonKey() final  bool isCurrent;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/// Create a copy of SnAuthDevice
 | 
					 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					 | 
				
			||||||
@override @JsonKey(includeFromJson: false, includeToJson: false)
 | 
					 | 
				
			||||||
@pragma('vm:prefer-inline')
 | 
					 | 
				
			||||||
_$SnAuthDeviceCopyWith<_SnAuthDevice> get copyWith => __$SnAuthDeviceCopyWithImpl<_SnAuthDevice>(this, _$identity);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@override
 | 
					 | 
				
			||||||
Map<String, dynamic> toJson() {
 | 
					 | 
				
			||||||
  return _$SnAuthDeviceToJson(this, );
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@override
 | 
					 | 
				
			||||||
bool operator ==(Object other) {
 | 
					 | 
				
			||||||
  return identical(this, other) || (other.runtimeType == runtimeType&&other is _SnAuthDevice&&const DeepCollectionEquality().equals(other.label, label)&&(identical(other.userAgent, userAgent) || other.userAgent == userAgent)&&(identical(other.deviceId, deviceId) || other.deviceId == deviceId)&&(identical(other.platform, platform) || other.platform == platform)&&const DeepCollectionEquality().equals(other._sessions, _sessions)&&(identical(other.isCurrent, isCurrent) || other.isCurrent == isCurrent));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					 | 
				
			||||||
@override
 | 
					 | 
				
			||||||
int get hashCode => Object.hash(runtimeType,const DeepCollectionEquality().hash(label),userAgent,deviceId,platform,const DeepCollectionEquality().hash(_sessions),isCurrent);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@override
 | 
					 | 
				
			||||||
String toString() {
 | 
					 | 
				
			||||||
  return 'SnAuthDevice(label: $label, userAgent: $userAgent, deviceId: $deviceId, platform: $platform, sessions: $sessions, isCurrent: $isCurrent)';
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/// @nodoc
 | 
					 | 
				
			||||||
abstract mixin class _$SnAuthDeviceCopyWith<$Res> implements $SnAuthDeviceCopyWith<$Res> {
 | 
					 | 
				
			||||||
  factory _$SnAuthDeviceCopyWith(_SnAuthDevice value, $Res Function(_SnAuthDevice) _then) = __$SnAuthDeviceCopyWithImpl;
 | 
					 | 
				
			||||||
@override @useResult
 | 
					 | 
				
			||||||
$Res call({
 | 
					 | 
				
			||||||
 dynamic label, String userAgent, String deviceId, int platform, List<SnAuthSession> sessions, bool isCurrent
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
/// @nodoc
 | 
					 | 
				
			||||||
class __$SnAuthDeviceCopyWithImpl<$Res>
 | 
					 | 
				
			||||||
    implements _$SnAuthDeviceCopyWith<$Res> {
 | 
					 | 
				
			||||||
  __$SnAuthDeviceCopyWithImpl(this._self, this._then);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  final _SnAuthDevice _self;
 | 
					 | 
				
			||||||
  final $Res Function(_SnAuthDevice) _then;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/// Create a copy of SnAuthDevice
 | 
					 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					 | 
				
			||||||
@override @pragma('vm:prefer-inline') $Res call({Object? label = freezed,Object? userAgent = null,Object? deviceId = null,Object? platform = null,Object? sessions = null,Object? isCurrent = null,}) {
 | 
					 | 
				
			||||||
  return _then(_SnAuthDevice(
 | 
					 | 
				
			||||||
label: freezed == label ? _self.label : label // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as dynamic,userAgent: null == userAgent ? _self.userAgent : userAgent // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as String,deviceId: null == deviceId ? _self.deviceId : deviceId // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as String,platform: null == platform ? _self.platform : platform // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as int,sessions: null == sessions ? _self._sessions : sessions // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as List<SnAuthSession>,isCurrent: null == isCurrent ? _self.isCurrent : isCurrent // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as bool,
 | 
					 | 
				
			||||||
  ));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
mixin _$SnAccountConnection {
 | 
					mixin _$SnAccountConnection {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -921,6 +1254,130 @@ as DateTime?,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnAccountConnection].
 | 
				
			||||||
 | 
					extension SnAccountConnectionPatterns on SnAccountConnection {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnAccountConnection value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAccountConnection() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnAccountConnection value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAccountConnection():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnAccountConnection value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAccountConnection() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  String accountId,  String provider,  String providedIdentifier,  Map<String, dynamic> meta,  DateTime lastUsedAt,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAccountConnection() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.accountId,_that.provider,_that.providedIdentifier,_that.meta,_that.lastUsedAt,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  String accountId,  String provider,  String providedIdentifier,  Map<String, dynamic> meta,  DateTime lastUsedAt,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAccountConnection():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.accountId,_that.provider,_that.providedIdentifier,_that.meta,_that.lastUsedAt,_that.createdAt,_that.updatedAt,_that.deletedAt);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  String accountId,  String provider,  String providedIdentifier,  Map<String, dynamic> meta,  DateTime lastUsedAt,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAccountConnection() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.accountId,_that.provider,_that.providedIdentifier,_that.meta,_that.lastUsedAt,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,7 +20,6 @@ _SnAuthChallenge _$SnAuthChallengeFromJson(Map<String, dynamic> json) =>
 | 
				
			|||||||
      stepRemain: (json['step_remain'] as num).toInt(),
 | 
					      stepRemain: (json['step_remain'] as num).toInt(),
 | 
				
			||||||
      stepTotal: (json['step_total'] as num).toInt(),
 | 
					      stepTotal: (json['step_total'] as num).toInt(),
 | 
				
			||||||
      failedAttempts: (json['failed_attempts'] as num).toInt(),
 | 
					      failedAttempts: (json['failed_attempts'] as num).toInt(),
 | 
				
			||||||
      platform: (json['platform'] as num).toInt(),
 | 
					 | 
				
			||||||
      type: (json['type'] as num).toInt(),
 | 
					      type: (json['type'] as num).toInt(),
 | 
				
			||||||
      blacklistFactors:
 | 
					      blacklistFactors:
 | 
				
			||||||
          (json['blacklist_factors'] as List<dynamic>)
 | 
					          (json['blacklist_factors'] as List<dynamic>)
 | 
				
			||||||
@@ -30,7 +29,6 @@ _SnAuthChallenge _$SnAuthChallengeFromJson(Map<String, dynamic> json) =>
 | 
				
			|||||||
      scopes: json['scopes'] as List<dynamic>,
 | 
					      scopes: json['scopes'] as List<dynamic>,
 | 
				
			||||||
      ipAddress: json['ip_address'] as String,
 | 
					      ipAddress: json['ip_address'] as String,
 | 
				
			||||||
      userAgent: json['user_agent'] as String,
 | 
					      userAgent: json['user_agent'] as String,
 | 
				
			||||||
      deviceId: json['device_id'] as String,
 | 
					 | 
				
			||||||
      nonce: json['nonce'] as String?,
 | 
					      nonce: json['nonce'] as String?,
 | 
				
			||||||
      location: json['location'] as String?,
 | 
					      location: json['location'] as String?,
 | 
				
			||||||
      accountId: json['account_id'] as String,
 | 
					      accountId: json['account_id'] as String,
 | 
				
			||||||
@@ -49,14 +47,12 @@ Map<String, dynamic> _$SnAuthChallengeToJson(_SnAuthChallenge instance) =>
 | 
				
			|||||||
      'step_remain': instance.stepRemain,
 | 
					      'step_remain': instance.stepRemain,
 | 
				
			||||||
      'step_total': instance.stepTotal,
 | 
					      'step_total': instance.stepTotal,
 | 
				
			||||||
      'failed_attempts': instance.failedAttempts,
 | 
					      'failed_attempts': instance.failedAttempts,
 | 
				
			||||||
      'platform': instance.platform,
 | 
					 | 
				
			||||||
      'type': instance.type,
 | 
					      'type': instance.type,
 | 
				
			||||||
      'blacklist_factors': instance.blacklistFactors,
 | 
					      'blacklist_factors': instance.blacklistFactors,
 | 
				
			||||||
      'audiences': instance.audiences,
 | 
					      'audiences': instance.audiences,
 | 
				
			||||||
      'scopes': instance.scopes,
 | 
					      'scopes': instance.scopes,
 | 
				
			||||||
      'ip_address': instance.ipAddress,
 | 
					      'ip_address': instance.ipAddress,
 | 
				
			||||||
      'user_agent': instance.userAgent,
 | 
					      'user_agent': instance.userAgent,
 | 
				
			||||||
      'device_id': instance.deviceId,
 | 
					 | 
				
			||||||
      'nonce': instance.nonce,
 | 
					      'nonce': instance.nonce,
 | 
				
			||||||
      'location': instance.location,
 | 
					      'location': instance.location,
 | 
				
			||||||
      'account_id': instance.accountId,
 | 
					      'account_id': instance.accountId,
 | 
				
			||||||
@@ -133,29 +129,6 @@ Map<String, dynamic> _$SnAuthFactorToJson(_SnAuthFactor instance) =>
 | 
				
			|||||||
      'created_response': instance.createdResponse,
 | 
					      'created_response': instance.createdResponse,
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
_SnAuthDevice _$SnAuthDeviceFromJson(Map<String, dynamic> json) =>
 | 
					 | 
				
			||||||
    _SnAuthDevice(
 | 
					 | 
				
			||||||
      label: json['label'],
 | 
					 | 
				
			||||||
      userAgent: json['user_agent'] as String,
 | 
					 | 
				
			||||||
      deviceId: json['device_id'] as String,
 | 
					 | 
				
			||||||
      platform: (json['platform'] as num).toInt(),
 | 
					 | 
				
			||||||
      sessions:
 | 
					 | 
				
			||||||
          (json['sessions'] as List<dynamic>)
 | 
					 | 
				
			||||||
              .map((e) => SnAuthSession.fromJson(e as Map<String, dynamic>))
 | 
					 | 
				
			||||||
              .toList(),
 | 
					 | 
				
			||||||
      isCurrent: json['is_current'] as bool? ?? false,
 | 
					 | 
				
			||||||
    );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Map<String, dynamic> _$SnAuthDeviceToJson(_SnAuthDevice instance) =>
 | 
					 | 
				
			||||||
    <String, dynamic>{
 | 
					 | 
				
			||||||
      'label': instance.label,
 | 
					 | 
				
			||||||
      'user_agent': instance.userAgent,
 | 
					 | 
				
			||||||
      'device_id': instance.deviceId,
 | 
					 | 
				
			||||||
      'platform': instance.platform,
 | 
					 | 
				
			||||||
      'sessions': instance.sessions.map((e) => e.toJson()).toList(),
 | 
					 | 
				
			||||||
      'is_current': instance.isCurrent,
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
_SnAccountConnection _$SnAccountConnectionFromJson(Map<String, dynamic> json) =>
 | 
					_SnAccountConnection _$SnAccountConnectionFromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
    _SnAccountConnection(
 | 
					    _SnAccountConnection(
 | 
				
			||||||
      id: json['id'] as String,
 | 
					      id: json['id'] as String,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
// dart format width=80
 | 
					 | 
				
			||||||
// coverage:ignore-file
 | 
					 | 
				
			||||||
// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					// coverage:ignore-file
 | 
				
			||||||
// ignore_for_file: type=lint
 | 
					// ignore_for_file: type=lint
 | 
				
			||||||
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
					// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -100,6 +99,136 @@ as List<AutoCompletionItem>,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [AutoCompletionResponse].
 | 
				
			||||||
 | 
					extension AutoCompletionResponsePatterns on AutoCompletionResponse {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>({TResult Function( AutoCompletionAccountResponse value)?  account,TResult Function( AutoCompletionStickerResponse value)?  sticker,required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case AutoCompletionAccountResponse() when account != null:
 | 
				
			||||||
 | 
					return account(_that);case AutoCompletionStickerResponse() when sticker != null:
 | 
				
			||||||
 | 
					return sticker(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>({required TResult Function( AutoCompletionAccountResponse value)  account,required TResult Function( AutoCompletionStickerResponse value)  sticker,}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case AutoCompletionAccountResponse():
 | 
				
			||||||
 | 
					return account(_that);case AutoCompletionStickerResponse():
 | 
				
			||||||
 | 
					return sticker(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>({TResult? Function( AutoCompletionAccountResponse value)?  account,TResult? Function( AutoCompletionStickerResponse value)?  sticker,}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case AutoCompletionAccountResponse() when account != null:
 | 
				
			||||||
 | 
					return account(_that);case AutoCompletionStickerResponse() when sticker != null:
 | 
				
			||||||
 | 
					return sticker(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>({TResult Function( String type,  List<AutoCompletionItem> items)?  account,TResult Function( String type,  List<AutoCompletionItem> items)?  sticker,required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case AutoCompletionAccountResponse() when account != null:
 | 
				
			||||||
 | 
					return account(_that.type,_that.items);case AutoCompletionStickerResponse() when sticker != null:
 | 
				
			||||||
 | 
					return sticker(_that.type,_that.items);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>({required TResult Function( String type,  List<AutoCompletionItem> items)  account,required TResult Function( String type,  List<AutoCompletionItem> items)  sticker,}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case AutoCompletionAccountResponse():
 | 
				
			||||||
 | 
					return account(_that.type,_that.items);case AutoCompletionStickerResponse():
 | 
				
			||||||
 | 
					return sticker(_that.type,_that.items);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>({TResult? Function( String type,  List<AutoCompletionItem> items)?  account,TResult? Function( String type,  List<AutoCompletionItem> items)?  sticker,}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case AutoCompletionAccountResponse() when account != null:
 | 
				
			||||||
 | 
					return account(_that.type,_that.items);case AutoCompletionStickerResponse() when sticker != null:
 | 
				
			||||||
 | 
					return sticker(_that.type,_that.items);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -330,6 +459,130 @@ as dynamic,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [AutoCompletionItem].
 | 
				
			||||||
 | 
					extension AutoCompletionItemPatterns on AutoCompletionItem {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _AutoCompletionItem value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _AutoCompletionItem() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _AutoCompletionItem value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _AutoCompletionItem():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _AutoCompletionItem value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _AutoCompletionItem() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  String displayName,  String? secondaryText,  String type,  dynamic data)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _AutoCompletionItem() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.displayName,_that.secondaryText,_that.type,_that.data);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  String displayName,  String? secondaryText,  String type,  dynamic data)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _AutoCompletionItem():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.displayName,_that.secondaryText,_that.type,_that.data);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  String displayName,  String? secondaryText,  String type,  dynamic data)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _AutoCompletionItem() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.displayName,_that.secondaryText,_that.type,_that.data);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										63
									
								
								lib/models/bot.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								lib/models/bot.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,63 @@
 | 
				
			|||||||
 | 
					import 'package:freezed_annotation/freezed_annotation.dart';
 | 
				
			||||||
 | 
					import 'package:island/models/account.dart';
 | 
				
			||||||
 | 
					import 'package:island/models/developer.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					part 'bot.freezed.dart';
 | 
				
			||||||
 | 
					part 'bot.g.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@freezed
 | 
				
			||||||
 | 
					sealed class Bot with _$Bot {
 | 
				
			||||||
 | 
					  const factory Bot({
 | 
				
			||||||
 | 
					    required String id,
 | 
				
			||||||
 | 
					    required String slug,
 | 
				
			||||||
 | 
					    required bool isActive,
 | 
				
			||||||
 | 
					    required String projectId,
 | 
				
			||||||
 | 
					    required DateTime createdAt,
 | 
				
			||||||
 | 
					    required DateTime updatedAt,
 | 
				
			||||||
 | 
					    required SnAccount account,
 | 
				
			||||||
 | 
					    SnDeveloper? developer,
 | 
				
			||||||
 | 
					  }) = _Bot;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory Bot.fromJson(Map<String, dynamic> json) => _$BotFromJson(json);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@freezed
 | 
				
			||||||
 | 
					sealed class BotConfig with _$BotConfig {
 | 
				
			||||||
 | 
					  const factory BotConfig({
 | 
				
			||||||
 | 
					    @Default(false) bool isPublic,
 | 
				
			||||||
 | 
					    @Default(false) bool isInteractive,
 | 
				
			||||||
 | 
					    @Default([]) List<String> allowedRealms,
 | 
				
			||||||
 | 
					    @Default([]) List<String> allowedChatTypes,
 | 
				
			||||||
 | 
					    @Default({}) Map<String, dynamic> metadata,
 | 
				
			||||||
 | 
					  }) = _BotConfig;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory BotConfig.fromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					      _$BotConfigFromJson(json);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@freezed
 | 
				
			||||||
 | 
					sealed class BotLinks with _$BotLinks {
 | 
				
			||||||
 | 
					  const factory BotLinks({
 | 
				
			||||||
 | 
					    String? website,
 | 
				
			||||||
 | 
					    String? documentation,
 | 
				
			||||||
 | 
					    String? privacyPolicy,
 | 
				
			||||||
 | 
					    String? termsOfService,
 | 
				
			||||||
 | 
					  }) = _BotLinks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory BotLinks.fromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					      _$BotLinksFromJson(json);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@freezed
 | 
				
			||||||
 | 
					sealed class BotSecret with _$BotSecret {
 | 
				
			||||||
 | 
					  const factory BotSecret({
 | 
				
			||||||
 | 
					    @Default('') String id,
 | 
				
			||||||
 | 
					    @Default('') String secret,
 | 
				
			||||||
 | 
					    String? description,
 | 
				
			||||||
 | 
					    DateTime? expiredAt,
 | 
				
			||||||
 | 
					    @Default('') String botId,
 | 
				
			||||||
 | 
					  }) = _BotSecret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory BotSecret.fromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					      _$BotSecretFromJson(json);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										1156
									
								
								lib/models/bot.freezed.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1156
									
								
								lib/models/bot.freezed.dart
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										91
									
								
								lib/models/bot.g.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								lib/models/bot.g.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,91 @@
 | 
				
			|||||||
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					part of 'bot.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					// JsonSerializableGenerator
 | 
				
			||||||
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_Bot _$BotFromJson(Map<String, dynamic> json) => _Bot(
 | 
				
			||||||
 | 
					  id: json['id'] as String,
 | 
				
			||||||
 | 
					  slug: json['slug'] as String,
 | 
				
			||||||
 | 
					  isActive: json['is_active'] as bool,
 | 
				
			||||||
 | 
					  projectId: json['project_id'] as String,
 | 
				
			||||||
 | 
					  createdAt: DateTime.parse(json['created_at'] as String),
 | 
				
			||||||
 | 
					  updatedAt: DateTime.parse(json['updated_at'] as String),
 | 
				
			||||||
 | 
					  account: SnAccount.fromJson(json['account'] as Map<String, dynamic>),
 | 
				
			||||||
 | 
					  developer:
 | 
				
			||||||
 | 
					      json['developer'] == null
 | 
				
			||||||
 | 
					          ? null
 | 
				
			||||||
 | 
					          : SnDeveloper.fromJson(json['developer'] as Map<String, dynamic>),
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$BotToJson(_Bot instance) => <String, dynamic>{
 | 
				
			||||||
 | 
					  'id': instance.id,
 | 
				
			||||||
 | 
					  'slug': instance.slug,
 | 
				
			||||||
 | 
					  'is_active': instance.isActive,
 | 
				
			||||||
 | 
					  'project_id': instance.projectId,
 | 
				
			||||||
 | 
					  'created_at': instance.createdAt.toIso8601String(),
 | 
				
			||||||
 | 
					  'updated_at': instance.updatedAt.toIso8601String(),
 | 
				
			||||||
 | 
					  'account': instance.account.toJson(),
 | 
				
			||||||
 | 
					  'developer': instance.developer?.toJson(),
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_BotConfig _$BotConfigFromJson(Map<String, dynamic> json) => _BotConfig(
 | 
				
			||||||
 | 
					  isPublic: json['is_public'] as bool? ?? false,
 | 
				
			||||||
 | 
					  isInteractive: json['is_interactive'] as bool? ?? false,
 | 
				
			||||||
 | 
					  allowedRealms:
 | 
				
			||||||
 | 
					      (json['allowed_realms'] as List<dynamic>?)
 | 
				
			||||||
 | 
					          ?.map((e) => e as String)
 | 
				
			||||||
 | 
					          .toList() ??
 | 
				
			||||||
 | 
					      const [],
 | 
				
			||||||
 | 
					  allowedChatTypes:
 | 
				
			||||||
 | 
					      (json['allowed_chat_types'] as List<dynamic>?)
 | 
				
			||||||
 | 
					          ?.map((e) => e as String)
 | 
				
			||||||
 | 
					          .toList() ??
 | 
				
			||||||
 | 
					      const [],
 | 
				
			||||||
 | 
					  metadata: json['metadata'] as Map<String, dynamic>? ?? const {},
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$BotConfigToJson(_BotConfig instance) =>
 | 
				
			||||||
 | 
					    <String, dynamic>{
 | 
				
			||||||
 | 
					      'is_public': instance.isPublic,
 | 
				
			||||||
 | 
					      'is_interactive': instance.isInteractive,
 | 
				
			||||||
 | 
					      'allowed_realms': instance.allowedRealms,
 | 
				
			||||||
 | 
					      'allowed_chat_types': instance.allowedChatTypes,
 | 
				
			||||||
 | 
					      'metadata': instance.metadata,
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_BotLinks _$BotLinksFromJson(Map<String, dynamic> json) => _BotLinks(
 | 
				
			||||||
 | 
					  website: json['website'] as String?,
 | 
				
			||||||
 | 
					  documentation: json['documentation'] as String?,
 | 
				
			||||||
 | 
					  privacyPolicy: json['privacy_policy'] as String?,
 | 
				
			||||||
 | 
					  termsOfService: json['terms_of_service'] as String?,
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$BotLinksToJson(_BotLinks instance) => <String, dynamic>{
 | 
				
			||||||
 | 
					  'website': instance.website,
 | 
				
			||||||
 | 
					  'documentation': instance.documentation,
 | 
				
			||||||
 | 
					  'privacy_policy': instance.privacyPolicy,
 | 
				
			||||||
 | 
					  'terms_of_service': instance.termsOfService,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_BotSecret _$BotSecretFromJson(Map<String, dynamic> json) => _BotSecret(
 | 
				
			||||||
 | 
					  id: json['id'] as String? ?? '',
 | 
				
			||||||
 | 
					  secret: json['secret'] as String? ?? '',
 | 
				
			||||||
 | 
					  description: json['description'] as String?,
 | 
				
			||||||
 | 
					  expiredAt:
 | 
				
			||||||
 | 
					      json['expired_at'] == null
 | 
				
			||||||
 | 
					          ? null
 | 
				
			||||||
 | 
					          : DateTime.parse(json['expired_at'] as String),
 | 
				
			||||||
 | 
					  botId: json['bot_id'] as String? ?? '',
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$BotSecretToJson(_BotSecret instance) =>
 | 
				
			||||||
 | 
					    <String, dynamic>{
 | 
				
			||||||
 | 
					      'id': instance.id,
 | 
				
			||||||
 | 
					      'secret': instance.secret,
 | 
				
			||||||
 | 
					      'description': instance.description,
 | 
				
			||||||
 | 
					      'expired_at': instance.expiredAt?.toIso8601String(),
 | 
				
			||||||
 | 
					      'bot_id': instance.botId,
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
							
								
								
									
										20
									
								
								lib/models/bot_key.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								lib/models/bot_key.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
				
			|||||||
 | 
					import 'package:freezed_annotation/freezed_annotation.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					part 'bot_key.freezed.dart';
 | 
				
			||||||
 | 
					part 'bot_key.g.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@freezed
 | 
				
			||||||
 | 
					sealed class SnAccountApiKey with _$SnAccountApiKey {
 | 
				
			||||||
 | 
					  const factory SnAccountApiKey({
 | 
				
			||||||
 | 
					    required String id,
 | 
				
			||||||
 | 
					    required String label,
 | 
				
			||||||
 | 
					    required String accountId,
 | 
				
			||||||
 | 
					    required String sessionId,
 | 
				
			||||||
 | 
					    required DateTime createdAt,
 | 
				
			||||||
 | 
					    required DateTime updatedAt,
 | 
				
			||||||
 | 
					    String? key,
 | 
				
			||||||
 | 
					  }) = _SnAccountApiKey;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory SnAccountApiKey.fromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					      _$SnAccountApiKeyFromJson(json);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										289
									
								
								lib/models/bot_key.freezed.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										289
									
								
								lib/models/bot_key.freezed.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,289 @@
 | 
				
			|||||||
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					// coverage:ignore-file
 | 
				
			||||||
 | 
					// ignore_for_file: type=lint
 | 
				
			||||||
 | 
					// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					part of 'bot_key.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					// FreezedGenerator
 | 
				
			||||||
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// dart format off
 | 
				
			||||||
 | 
					T _$identity<T>(T value) => value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// @nodoc
 | 
				
			||||||
 | 
					mixin _$SnAccountApiKey {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 String get id; String get label; String get accountId; String get sessionId; DateTime get createdAt; DateTime get updatedAt; String? get key;
 | 
				
			||||||
 | 
					/// Create a copy of SnAccountApiKey
 | 
				
			||||||
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
 | 
					@pragma('vm:prefer-inline')
 | 
				
			||||||
 | 
					$SnAccountApiKeyCopyWith<SnAccountApiKey> get copyWith => _$SnAccountApiKeyCopyWithImpl<SnAccountApiKey>(this as SnAccountApiKey, _$identity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /// Serializes this SnAccountApiKey to a JSON map.
 | 
				
			||||||
 | 
					  Map<String, dynamic> toJson();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					bool operator ==(Object other) {
 | 
				
			||||||
 | 
					  return identical(this, other) || (other.runtimeType == runtimeType&&other is SnAccountApiKey&&(identical(other.id, id) || other.id == id)&&(identical(other.label, label) || other.label == label)&&(identical(other.accountId, accountId) || other.accountId == accountId)&&(identical(other.sessionId, sessionId) || other.sessionId == sessionId)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.updatedAt, updatedAt) || other.updatedAt == updatedAt)&&(identical(other.key, key) || other.key == key));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					int get hashCode => Object.hash(runtimeType,id,label,accountId,sessionId,createdAt,updatedAt,key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					String toString() {
 | 
				
			||||||
 | 
					  return 'SnAccountApiKey(id: $id, label: $label, accountId: $accountId, sessionId: $sessionId, createdAt: $createdAt, updatedAt: $updatedAt, key: $key)';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// @nodoc
 | 
				
			||||||
 | 
					abstract mixin class $SnAccountApiKeyCopyWith<$Res>  {
 | 
				
			||||||
 | 
					  factory $SnAccountApiKeyCopyWith(SnAccountApiKey value, $Res Function(SnAccountApiKey) _then) = _$SnAccountApiKeyCopyWithImpl;
 | 
				
			||||||
 | 
					@useResult
 | 
				
			||||||
 | 
					$Res call({
 | 
				
			||||||
 | 
					 String id, String label, String accountId, String sessionId, DateTime createdAt, DateTime updatedAt, String? key
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// @nodoc
 | 
				
			||||||
 | 
					class _$SnAccountApiKeyCopyWithImpl<$Res>
 | 
				
			||||||
 | 
					    implements $SnAccountApiKeyCopyWith<$Res> {
 | 
				
			||||||
 | 
					  _$SnAccountApiKeyCopyWithImpl(this._self, this._then);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  final SnAccountApiKey _self;
 | 
				
			||||||
 | 
					  final $Res Function(SnAccountApiKey) _then;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Create a copy of SnAccountApiKey
 | 
				
			||||||
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
 | 
					@pragma('vm:prefer-inline') @override $Res call({Object? id = null,Object? label = null,Object? accountId = null,Object? sessionId = null,Object? createdAt = null,Object? updatedAt = null,Object? key = freezed,}) {
 | 
				
			||||||
 | 
					  return _then(_self.copyWith(
 | 
				
			||||||
 | 
					id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String,label: null == label ? _self.label : label // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String,accountId: null == accountId ? _self.accountId : accountId // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String,sessionId: null == sessionId ? _self.sessionId : sessionId // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String,createdAt: null == createdAt ? _self.createdAt : createdAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as DateTime,updatedAt: null == updatedAt ? _self.updatedAt : updatedAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as DateTime,key: freezed == key ? _self.key : key // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String?,
 | 
				
			||||||
 | 
					  ));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnAccountApiKey].
 | 
				
			||||||
 | 
					extension SnAccountApiKeyPatterns on SnAccountApiKey {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnAccountApiKey value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAccountApiKey() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnAccountApiKey value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAccountApiKey():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnAccountApiKey value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAccountApiKey() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  String label,  String accountId,  String sessionId,  DateTime createdAt,  DateTime updatedAt,  String? key)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAccountApiKey() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.label,_that.accountId,_that.sessionId,_that.createdAt,_that.updatedAt,_that.key);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  String label,  String accountId,  String sessionId,  DateTime createdAt,  DateTime updatedAt,  String? key)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAccountApiKey():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.label,_that.accountId,_that.sessionId,_that.createdAt,_that.updatedAt,_that.key);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  String label,  String accountId,  String sessionId,  DateTime createdAt,  DateTime updatedAt,  String? key)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnAccountApiKey() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.label,_that.accountId,_that.sessionId,_that.createdAt,_that.updatedAt,_that.key);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// @nodoc
 | 
				
			||||||
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class _SnAccountApiKey implements SnAccountApiKey {
 | 
				
			||||||
 | 
					  const _SnAccountApiKey({required this.id, required this.label, required this.accountId, required this.sessionId, required this.createdAt, required this.updatedAt, this.key});
 | 
				
			||||||
 | 
					  factory _SnAccountApiKey.fromJson(Map<String, dynamic> json) => _$SnAccountApiKeyFromJson(json);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override final  String id;
 | 
				
			||||||
 | 
					@override final  String label;
 | 
				
			||||||
 | 
					@override final  String accountId;
 | 
				
			||||||
 | 
					@override final  String sessionId;
 | 
				
			||||||
 | 
					@override final  DateTime createdAt;
 | 
				
			||||||
 | 
					@override final  DateTime updatedAt;
 | 
				
			||||||
 | 
					@override final  String? key;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Create a copy of SnAccountApiKey
 | 
				
			||||||
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
 | 
					@override @JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
 | 
					@pragma('vm:prefer-inline')
 | 
				
			||||||
 | 
					_$SnAccountApiKeyCopyWith<_SnAccountApiKey> get copyWith => __$SnAccountApiKeyCopyWithImpl<_SnAccountApiKey>(this, _$identity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					Map<String, dynamic> toJson() {
 | 
				
			||||||
 | 
					  return _$SnAccountApiKeyToJson(this, );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					bool operator ==(Object other) {
 | 
				
			||||||
 | 
					  return identical(this, other) || (other.runtimeType == runtimeType&&other is _SnAccountApiKey&&(identical(other.id, id) || other.id == id)&&(identical(other.label, label) || other.label == label)&&(identical(other.accountId, accountId) || other.accountId == accountId)&&(identical(other.sessionId, sessionId) || other.sessionId == sessionId)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.updatedAt, updatedAt) || other.updatedAt == updatedAt)&&(identical(other.key, key) || other.key == key));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					int get hashCode => Object.hash(runtimeType,id,label,accountId,sessionId,createdAt,updatedAt,key);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					String toString() {
 | 
				
			||||||
 | 
					  return 'SnAccountApiKey(id: $id, label: $label, accountId: $accountId, sessionId: $sessionId, createdAt: $createdAt, updatedAt: $updatedAt, key: $key)';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// @nodoc
 | 
				
			||||||
 | 
					abstract mixin class _$SnAccountApiKeyCopyWith<$Res> implements $SnAccountApiKeyCopyWith<$Res> {
 | 
				
			||||||
 | 
					  factory _$SnAccountApiKeyCopyWith(_SnAccountApiKey value, $Res Function(_SnAccountApiKey) _then) = __$SnAccountApiKeyCopyWithImpl;
 | 
				
			||||||
 | 
					@override @useResult
 | 
				
			||||||
 | 
					$Res call({
 | 
				
			||||||
 | 
					 String id, String label, String accountId, String sessionId, DateTime createdAt, DateTime updatedAt, String? key
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// @nodoc
 | 
				
			||||||
 | 
					class __$SnAccountApiKeyCopyWithImpl<$Res>
 | 
				
			||||||
 | 
					    implements _$SnAccountApiKeyCopyWith<$Res> {
 | 
				
			||||||
 | 
					  __$SnAccountApiKeyCopyWithImpl(this._self, this._then);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  final _SnAccountApiKey _self;
 | 
				
			||||||
 | 
					  final $Res Function(_SnAccountApiKey) _then;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Create a copy of SnAccountApiKey
 | 
				
			||||||
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
 | 
					@override @pragma('vm:prefer-inline') $Res call({Object? id = null,Object? label = null,Object? accountId = null,Object? sessionId = null,Object? createdAt = null,Object? updatedAt = null,Object? key = freezed,}) {
 | 
				
			||||||
 | 
					  return _then(_SnAccountApiKey(
 | 
				
			||||||
 | 
					id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String,label: null == label ? _self.label : label // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String,accountId: null == accountId ? _self.accountId : accountId // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String,sessionId: null == sessionId ? _self.sessionId : sessionId // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String,createdAt: null == createdAt ? _self.createdAt : createdAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as DateTime,updatedAt: null == updatedAt ? _self.updatedAt : updatedAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as DateTime,key: freezed == key ? _self.key : key // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String?,
 | 
				
			||||||
 | 
					  ));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// dart format on
 | 
				
			||||||
							
								
								
									
										29
									
								
								lib/models/bot_key.g.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								lib/models/bot_key.g.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					part of 'bot_key.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					// JsonSerializableGenerator
 | 
				
			||||||
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_SnAccountApiKey _$SnAccountApiKeyFromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					    _SnAccountApiKey(
 | 
				
			||||||
 | 
					      id: json['id'] as String,
 | 
				
			||||||
 | 
					      label: json['label'] as String,
 | 
				
			||||||
 | 
					      accountId: json['account_id'] as String,
 | 
				
			||||||
 | 
					      sessionId: json['session_id'] as String,
 | 
				
			||||||
 | 
					      createdAt: DateTime.parse(json['created_at'] as String),
 | 
				
			||||||
 | 
					      updatedAt: DateTime.parse(json['updated_at'] as String),
 | 
				
			||||||
 | 
					      key: json['key'] as String?,
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$SnAccountApiKeyToJson(_SnAccountApiKey instance) =>
 | 
				
			||||||
 | 
					    <String, dynamic>{
 | 
				
			||||||
 | 
					      'id': instance.id,
 | 
				
			||||||
 | 
					      'label': instance.label,
 | 
				
			||||||
 | 
					      'account_id': instance.accountId,
 | 
				
			||||||
 | 
					      'session_id': instance.sessionId,
 | 
				
			||||||
 | 
					      'created_at': instance.createdAt.toIso8601String(),
 | 
				
			||||||
 | 
					      'updated_at': instance.updatedAt.toIso8601String(),
 | 
				
			||||||
 | 
					      'key': instance.key,
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
import 'package:freezed_annotation/freezed_annotation.dart';
 | 
					import 'package:freezed_annotation/freezed_annotation.dart';
 | 
				
			||||||
import 'package:island/models/file.dart';
 | 
					import 'package:island/models/file.dart';
 | 
				
			||||||
import 'package:island/models/realm.dart';
 | 
					import 'package:island/models/realm.dart';
 | 
				
			||||||
import 'package:island/models/user.dart';
 | 
					import 'package:island/models/account.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
part 'chat.freezed.dart';
 | 
					part 'chat.freezed.dart';
 | 
				
			||||||
part 'chat.g.dart';
 | 
					part 'chat.g.dart';
 | 
				
			||||||
@@ -91,6 +91,7 @@ sealed class SnChatMember with _$SnChatMember {
 | 
				
			|||||||
    required DateTime? breakUntil,
 | 
					    required DateTime? breakUntil,
 | 
				
			||||||
    required DateTime? timeoutUntil,
 | 
					    required DateTime? timeoutUntil,
 | 
				
			||||||
    required bool isBot,
 | 
					    required bool isBot,
 | 
				
			||||||
 | 
					    required SnAccountStatus? status,
 | 
				
			||||||
    // Frontend data
 | 
					    // Frontend data
 | 
				
			||||||
    DateTime? lastTyped,
 | 
					    DateTime? lastTyped,
 | 
				
			||||||
  }) = _SnChatMember;
 | 
					  }) = _SnChatMember;
 | 
				
			||||||
@@ -103,7 +104,7 @@ sealed class SnChatMember with _$SnChatMember {
 | 
				
			|||||||
sealed class SnChatSummary with _$SnChatSummary {
 | 
					sealed class SnChatSummary with _$SnChatSummary {
 | 
				
			||||||
  const factory SnChatSummary({
 | 
					  const factory SnChatSummary({
 | 
				
			||||||
    required int unreadCount,
 | 
					    required int unreadCount,
 | 
				
			||||||
    required SnChatMessage lastMessage,
 | 
					    required SnChatMessage? lastMessage,
 | 
				
			||||||
  }) = _SnChatSummary;
 | 
					  }) = _SnChatSummary;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  factory SnChatSummary.fromJson(Map<String, dynamic> json) =>
 | 
					  factory SnChatSummary.fromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
@@ -162,8 +163,6 @@ sealed class CallParticipant with _$CallParticipant {
 | 
				
			|||||||
    required String identity,
 | 
					    required String identity,
 | 
				
			||||||
    required String name,
 | 
					    required String name,
 | 
				
			||||||
    required DateTime joinedAt,
 | 
					    required DateTime joinedAt,
 | 
				
			||||||
    required String? accountId,
 | 
					 | 
				
			||||||
    required SnChatMember? profile,
 | 
					 | 
				
			||||||
  }) = _CallParticipant;
 | 
					  }) = _CallParticipant;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  factory CallParticipant.fromJson(Map<String, dynamic> json) =>
 | 
					  factory CallParticipant.fromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -177,6 +177,12 @@ _SnChatMember _$SnChatMemberFromJson(Map<String, dynamic> json) =>
 | 
				
			|||||||
              ? null
 | 
					              ? null
 | 
				
			||||||
              : DateTime.parse(json['timeout_until'] as String),
 | 
					              : DateTime.parse(json['timeout_until'] as String),
 | 
				
			||||||
      isBot: json['is_bot'] as bool,
 | 
					      isBot: json['is_bot'] as bool,
 | 
				
			||||||
 | 
					      status:
 | 
				
			||||||
 | 
					          json['status'] == null
 | 
				
			||||||
 | 
					              ? null
 | 
				
			||||||
 | 
					              : SnAccountStatus.fromJson(
 | 
				
			||||||
 | 
					                json['status'] as Map<String, dynamic>,
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
      lastTyped:
 | 
					      lastTyped:
 | 
				
			||||||
          json['last_typed'] == null
 | 
					          json['last_typed'] == null
 | 
				
			||||||
              ? null
 | 
					              ? null
 | 
				
			||||||
@@ -200,21 +206,25 @@ Map<String, dynamic> _$SnChatMemberToJson(_SnChatMember instance) =>
 | 
				
			|||||||
      'break_until': instance.breakUntil?.toIso8601String(),
 | 
					      'break_until': instance.breakUntil?.toIso8601String(),
 | 
				
			||||||
      'timeout_until': instance.timeoutUntil?.toIso8601String(),
 | 
					      'timeout_until': instance.timeoutUntil?.toIso8601String(),
 | 
				
			||||||
      'is_bot': instance.isBot,
 | 
					      'is_bot': instance.isBot,
 | 
				
			||||||
 | 
					      'status': instance.status?.toJson(),
 | 
				
			||||||
      'last_typed': instance.lastTyped?.toIso8601String(),
 | 
					      'last_typed': instance.lastTyped?.toIso8601String(),
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
_SnChatSummary _$SnChatSummaryFromJson(Map<String, dynamic> json) =>
 | 
					_SnChatSummary _$SnChatSummaryFromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
    _SnChatSummary(
 | 
					    _SnChatSummary(
 | 
				
			||||||
      unreadCount: (json['unread_count'] as num).toInt(),
 | 
					      unreadCount: (json['unread_count'] as num).toInt(),
 | 
				
			||||||
      lastMessage: SnChatMessage.fromJson(
 | 
					      lastMessage:
 | 
				
			||||||
        json['last_message'] as Map<String, dynamic>,
 | 
					          json['last_message'] == null
 | 
				
			||||||
      ),
 | 
					              ? null
 | 
				
			||||||
 | 
					              : SnChatMessage.fromJson(
 | 
				
			||||||
 | 
					                json['last_message'] as Map<String, dynamic>,
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Map<String, dynamic> _$SnChatSummaryToJson(_SnChatSummary instance) =>
 | 
					Map<String, dynamic> _$SnChatSummaryToJson(_SnChatSummary instance) =>
 | 
				
			||||||
    <String, dynamic>{
 | 
					    <String, dynamic>{
 | 
				
			||||||
      'unread_count': instance.unreadCount,
 | 
					      'unread_count': instance.unreadCount,
 | 
				
			||||||
      'last_message': instance.lastMessage.toJson(),
 | 
					      'last_message': instance.lastMessage?.toJson(),
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
_MessageChange _$MessageChangeFromJson(Map<String, dynamic> json) =>
 | 
					_MessageChange _$MessageChangeFromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
@@ -285,11 +295,6 @@ _CallParticipant _$CallParticipantFromJson(Map<String, dynamic> json) =>
 | 
				
			|||||||
      identity: json['identity'] as String,
 | 
					      identity: json['identity'] as String,
 | 
				
			||||||
      name: json['name'] as String,
 | 
					      name: json['name'] as String,
 | 
				
			||||||
      joinedAt: DateTime.parse(json['joined_at'] as String),
 | 
					      joinedAt: DateTime.parse(json['joined_at'] as String),
 | 
				
			||||||
      accountId: json['account_id'] as String?,
 | 
					 | 
				
			||||||
      profile:
 | 
					 | 
				
			||||||
          json['profile'] == null
 | 
					 | 
				
			||||||
              ? null
 | 
					 | 
				
			||||||
              : SnChatMember.fromJson(json['profile'] as Map<String, dynamic>),
 | 
					 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Map<String, dynamic> _$CallParticipantToJson(_CallParticipant instance) =>
 | 
					Map<String, dynamic> _$CallParticipantToJson(_CallParticipant instance) =>
 | 
				
			||||||
@@ -297,8 +302,6 @@ Map<String, dynamic> _$CallParticipantToJson(_CallParticipant instance) =>
 | 
				
			|||||||
      'identity': instance.identity,
 | 
					      'identity': instance.identity,
 | 
				
			||||||
      'name': instance.name,
 | 
					      'name': instance.name,
 | 
				
			||||||
      'joined_at': instance.joinedAt.toIso8601String(),
 | 
					      'joined_at': instance.joinedAt.toIso8601String(),
 | 
				
			||||||
      'account_id': instance.accountId,
 | 
					 | 
				
			||||||
      'profile': instance.profile?.toJson(),
 | 
					 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
_SnRealtimeCall _$SnRealtimeCallFromJson(Map<String, dynamic> json) =>
 | 
					_SnRealtimeCall _$SnRealtimeCallFromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
import 'package:freezed_annotation/freezed_annotation.dart';
 | 
					import 'package:freezed_annotation/freezed_annotation.dart';
 | 
				
			||||||
import 'package:island/models/file.dart';
 | 
					import 'package:island/models/file.dart';
 | 
				
			||||||
import 'package:island/models/user.dart';
 | 
					import 'package:island/models/account.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
part 'custom_app.freezed.dart';
 | 
					part 'custom_app.freezed.dart';
 | 
				
			||||||
part 'custom_app.g.dart';
 | 
					part 'custom_app.g.dart';
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
// dart format width=80
 | 
					 | 
				
			||||||
// coverage:ignore-file
 | 
					 | 
				
			||||||
// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					// coverage:ignore-file
 | 
				
			||||||
// ignore_for_file: type=lint
 | 
					// ignore_for_file: type=lint
 | 
				
			||||||
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
					// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -147,6 +146,130 @@ $CustomAppLinksCopyWith<$Res>? get links {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [CustomApp].
 | 
				
			||||||
 | 
					extension CustomAppPatterns on CustomApp {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _CustomApp value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomApp() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _CustomApp value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomApp():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _CustomApp value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomApp() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  String slug,  String name,  String? description,  int status,  SnCloudFile? picture,  SnCloudFile? background,  SnVerificationMark? verification,  CustomAppOauthConfig? oauthConfig,  CustomAppLinks? links,  List<CustomAppSecret> secrets,  String publisherId)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomApp() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.slug,_that.name,_that.description,_that.status,_that.picture,_that.background,_that.verification,_that.oauthConfig,_that.links,_that.secrets,_that.publisherId);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  String slug,  String name,  String? description,  int status,  SnCloudFile? picture,  SnCloudFile? background,  SnVerificationMark? verification,  CustomAppOauthConfig? oauthConfig,  CustomAppLinks? links,  List<CustomAppSecret> secrets,  String publisherId)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomApp():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.slug,_that.name,_that.description,_that.status,_that.picture,_that.background,_that.verification,_that.oauthConfig,_that.links,_that.secrets,_that.publisherId);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  String slug,  String name,  String? description,  int status,  SnCloudFile? picture,  SnCloudFile? background,  SnVerificationMark? verification,  CustomAppOauthConfig? oauthConfig,  CustomAppLinks? links,  List<CustomAppSecret> secrets,  String publisherId)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomApp() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.slug,_that.name,_that.description,_that.status,_that.picture,_that.background,_that.verification,_that.oauthConfig,_that.links,_that.secrets,_that.publisherId);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -370,6 +493,130 @@ as String?,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [CustomAppLinks].
 | 
				
			||||||
 | 
					extension CustomAppLinksPatterns on CustomAppLinks {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _CustomAppLinks value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomAppLinks() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _CustomAppLinks value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomAppLinks():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _CustomAppLinks value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomAppLinks() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String? homePage,  String? privacyPolicy,  String? termsOfService)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomAppLinks() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.homePage,_that.privacyPolicy,_that.termsOfService);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String? homePage,  String? privacyPolicy,  String? termsOfService)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomAppLinks():
 | 
				
			||||||
 | 
					return $default(_that.homePage,_that.privacyPolicy,_that.termsOfService);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String? homePage,  String? privacyPolicy,  String? termsOfService)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomAppLinks() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.homePage,_that.privacyPolicy,_that.termsOfService);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -513,6 +760,130 @@ as bool,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [CustomAppOauthConfig].
 | 
				
			||||||
 | 
					extension CustomAppOauthConfigPatterns on CustomAppOauthConfig {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _CustomAppOauthConfig value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomAppOauthConfig() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _CustomAppOauthConfig value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomAppOauthConfig():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _CustomAppOauthConfig value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomAppOauthConfig() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String? clientUri,  List<String> redirectUris,  List<String>? postLogoutRedirectUris,  List<String> allowedScopes,  List<String> allowedGrantTypes,  bool requirePkce,  bool allowOfflineAccess)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomAppOauthConfig() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.clientUri,_that.redirectUris,_that.postLogoutRedirectUris,_that.allowedScopes,_that.allowedGrantTypes,_that.requirePkce,_that.allowOfflineAccess);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String? clientUri,  List<String> redirectUris,  List<String>? postLogoutRedirectUris,  List<String> allowedScopes,  List<String> allowedGrantTypes,  bool requirePkce,  bool allowOfflineAccess)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomAppOauthConfig():
 | 
				
			||||||
 | 
					return $default(_that.clientUri,_that.redirectUris,_that.postLogoutRedirectUris,_that.allowedScopes,_that.allowedGrantTypes,_that.requirePkce,_that.allowOfflineAccess);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String? clientUri,  List<String> redirectUris,  List<String>? postLogoutRedirectUris,  List<String> allowedScopes,  List<String> allowedGrantTypes,  bool requirePkce,  bool allowOfflineAccess)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomAppOauthConfig() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.clientUri,_that.redirectUris,_that.postLogoutRedirectUris,_that.allowedScopes,_that.allowedGrantTypes,_that.requirePkce,_that.allowOfflineAccess);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -689,6 +1060,130 @@ as String,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [CustomAppSecret].
 | 
				
			||||||
 | 
					extension CustomAppSecretPatterns on CustomAppSecret {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _CustomAppSecret value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomAppSecret() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _CustomAppSecret value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomAppSecret():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _CustomAppSecret value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomAppSecret() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  String secret,  String? description,  DateTime? expiredAt,  bool isOidc,  String appId)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomAppSecret() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.secret,_that.description,_that.expiredAt,_that.isOidc,_that.appId);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  String secret,  String? description,  DateTime? expiredAt,  bool isOidc,  String appId)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomAppSecret():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.secret,_that.description,_that.expiredAt,_that.isOidc,_that.appId);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  String secret,  String? description,  DateTime? expiredAt,  bool isOidc,  String appId)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomAppSecret() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.secret,_that.description,_that.expiredAt,_that.isOidc,_that.appId);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										19
									
								
								lib/models/custom_app_secret.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								lib/models/custom_app_secret.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
				
			|||||||
 | 
					import 'package:freezed_annotation/freezed_annotation.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					part 'custom_app_secret.freezed.dart';
 | 
				
			||||||
 | 
					part 'custom_app_secret.g.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@freezed
 | 
				
			||||||
 | 
					sealed class CustomAppSecret with _$CustomAppSecret {
 | 
				
			||||||
 | 
					  const factory CustomAppSecret({
 | 
				
			||||||
 | 
					    required String id,
 | 
				
			||||||
 | 
					    required String? secret,
 | 
				
			||||||
 | 
					    required DateTime createdAt,
 | 
				
			||||||
 | 
					    String? description,
 | 
				
			||||||
 | 
					    int? expiresIn,
 | 
				
			||||||
 | 
					    bool? isOidc,
 | 
				
			||||||
 | 
					  }) = _CustomAppSecret;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory CustomAppSecret.fromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					      _$CustomAppSecretFromJson(json);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										286
									
								
								lib/models/custom_app_secret.freezed.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										286
									
								
								lib/models/custom_app_secret.freezed.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,286 @@
 | 
				
			|||||||
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					// coverage:ignore-file
 | 
				
			||||||
 | 
					// ignore_for_file: type=lint
 | 
				
			||||||
 | 
					// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					part of 'custom_app_secret.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					// FreezedGenerator
 | 
				
			||||||
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// dart format off
 | 
				
			||||||
 | 
					T _$identity<T>(T value) => value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// @nodoc
 | 
				
			||||||
 | 
					mixin _$CustomAppSecret {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 String get id; String? get secret; DateTime get createdAt; String? get description; int? get expiresIn; bool? get isOidc;
 | 
				
			||||||
 | 
					/// Create a copy of CustomAppSecret
 | 
				
			||||||
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
 | 
					@pragma('vm:prefer-inline')
 | 
				
			||||||
 | 
					$CustomAppSecretCopyWith<CustomAppSecret> get copyWith => _$CustomAppSecretCopyWithImpl<CustomAppSecret>(this as CustomAppSecret, _$identity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /// Serializes this CustomAppSecret to a JSON map.
 | 
				
			||||||
 | 
					  Map<String, dynamic> toJson();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					bool operator ==(Object other) {
 | 
				
			||||||
 | 
					  return identical(this, other) || (other.runtimeType == runtimeType&&other is CustomAppSecret&&(identical(other.id, id) || other.id == id)&&(identical(other.secret, secret) || other.secret == secret)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.description, description) || other.description == description)&&(identical(other.expiresIn, expiresIn) || other.expiresIn == expiresIn)&&(identical(other.isOidc, isOidc) || other.isOidc == isOidc));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					int get hashCode => Object.hash(runtimeType,id,secret,createdAt,description,expiresIn,isOidc);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					String toString() {
 | 
				
			||||||
 | 
					  return 'CustomAppSecret(id: $id, secret: $secret, createdAt: $createdAt, description: $description, expiresIn: $expiresIn, isOidc: $isOidc)';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// @nodoc
 | 
				
			||||||
 | 
					abstract mixin class $CustomAppSecretCopyWith<$Res>  {
 | 
				
			||||||
 | 
					  factory $CustomAppSecretCopyWith(CustomAppSecret value, $Res Function(CustomAppSecret) _then) = _$CustomAppSecretCopyWithImpl;
 | 
				
			||||||
 | 
					@useResult
 | 
				
			||||||
 | 
					$Res call({
 | 
				
			||||||
 | 
					 String id, String? secret, DateTime createdAt, String? description, int? expiresIn, bool? isOidc
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// @nodoc
 | 
				
			||||||
 | 
					class _$CustomAppSecretCopyWithImpl<$Res>
 | 
				
			||||||
 | 
					    implements $CustomAppSecretCopyWith<$Res> {
 | 
				
			||||||
 | 
					  _$CustomAppSecretCopyWithImpl(this._self, this._then);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  final CustomAppSecret _self;
 | 
				
			||||||
 | 
					  final $Res Function(CustomAppSecret) _then;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Create a copy of CustomAppSecret
 | 
				
			||||||
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
 | 
					@pragma('vm:prefer-inline') @override $Res call({Object? id = null,Object? secret = freezed,Object? createdAt = null,Object? description = freezed,Object? expiresIn = freezed,Object? isOidc = freezed,}) {
 | 
				
			||||||
 | 
					  return _then(_self.copyWith(
 | 
				
			||||||
 | 
					id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String,secret: freezed == secret ? _self.secret : secret // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String?,createdAt: null == createdAt ? _self.createdAt : createdAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as DateTime,description: freezed == description ? _self.description : description // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String?,expiresIn: freezed == expiresIn ? _self.expiresIn : expiresIn // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as int?,isOidc: freezed == isOidc ? _self.isOidc : isOidc // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as bool?,
 | 
				
			||||||
 | 
					  ));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [CustomAppSecret].
 | 
				
			||||||
 | 
					extension CustomAppSecretPatterns on CustomAppSecret {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _CustomAppSecret value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomAppSecret() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _CustomAppSecret value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomAppSecret():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _CustomAppSecret value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomAppSecret() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  String? secret,  DateTime createdAt,  String? description,  int? expiresIn,  bool? isOidc)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomAppSecret() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.secret,_that.createdAt,_that.description,_that.expiresIn,_that.isOidc);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  String? secret,  DateTime createdAt,  String? description,  int? expiresIn,  bool? isOidc)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomAppSecret():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.secret,_that.createdAt,_that.description,_that.expiresIn,_that.isOidc);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  String? secret,  DateTime createdAt,  String? description,  int? expiresIn,  bool? isOidc)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _CustomAppSecret() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.secret,_that.createdAt,_that.description,_that.expiresIn,_that.isOidc);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// @nodoc
 | 
				
			||||||
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class _CustomAppSecret implements CustomAppSecret {
 | 
				
			||||||
 | 
					  const _CustomAppSecret({required this.id, required this.secret, required this.createdAt, this.description, this.expiresIn, this.isOidc});
 | 
				
			||||||
 | 
					  factory _CustomAppSecret.fromJson(Map<String, dynamic> json) => _$CustomAppSecretFromJson(json);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override final  String id;
 | 
				
			||||||
 | 
					@override final  String? secret;
 | 
				
			||||||
 | 
					@override final  DateTime createdAt;
 | 
				
			||||||
 | 
					@override final  String? description;
 | 
				
			||||||
 | 
					@override final  int? expiresIn;
 | 
				
			||||||
 | 
					@override final  bool? isOidc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Create a copy of CustomAppSecret
 | 
				
			||||||
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
 | 
					@override @JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
 | 
					@pragma('vm:prefer-inline')
 | 
				
			||||||
 | 
					_$CustomAppSecretCopyWith<_CustomAppSecret> get copyWith => __$CustomAppSecretCopyWithImpl<_CustomAppSecret>(this, _$identity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					Map<String, dynamic> toJson() {
 | 
				
			||||||
 | 
					  return _$CustomAppSecretToJson(this, );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					bool operator ==(Object other) {
 | 
				
			||||||
 | 
					  return identical(this, other) || (other.runtimeType == runtimeType&&other is _CustomAppSecret&&(identical(other.id, id) || other.id == id)&&(identical(other.secret, secret) || other.secret == secret)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.description, description) || other.description == description)&&(identical(other.expiresIn, expiresIn) || other.expiresIn == expiresIn)&&(identical(other.isOidc, isOidc) || other.isOidc == isOidc));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					int get hashCode => Object.hash(runtimeType,id,secret,createdAt,description,expiresIn,isOidc);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					String toString() {
 | 
				
			||||||
 | 
					  return 'CustomAppSecret(id: $id, secret: $secret, createdAt: $createdAt, description: $description, expiresIn: $expiresIn, isOidc: $isOidc)';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// @nodoc
 | 
				
			||||||
 | 
					abstract mixin class _$CustomAppSecretCopyWith<$Res> implements $CustomAppSecretCopyWith<$Res> {
 | 
				
			||||||
 | 
					  factory _$CustomAppSecretCopyWith(_CustomAppSecret value, $Res Function(_CustomAppSecret) _then) = __$CustomAppSecretCopyWithImpl;
 | 
				
			||||||
 | 
					@override @useResult
 | 
				
			||||||
 | 
					$Res call({
 | 
				
			||||||
 | 
					 String id, String? secret, DateTime createdAt, String? description, int? expiresIn, bool? isOidc
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// @nodoc
 | 
				
			||||||
 | 
					class __$CustomAppSecretCopyWithImpl<$Res>
 | 
				
			||||||
 | 
					    implements _$CustomAppSecretCopyWith<$Res> {
 | 
				
			||||||
 | 
					  __$CustomAppSecretCopyWithImpl(this._self, this._then);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  final _CustomAppSecret _self;
 | 
				
			||||||
 | 
					  final $Res Function(_CustomAppSecret) _then;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Create a copy of CustomAppSecret
 | 
				
			||||||
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
 | 
					@override @pragma('vm:prefer-inline') $Res call({Object? id = null,Object? secret = freezed,Object? createdAt = null,Object? description = freezed,Object? expiresIn = freezed,Object? isOidc = freezed,}) {
 | 
				
			||||||
 | 
					  return _then(_CustomAppSecret(
 | 
				
			||||||
 | 
					id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String,secret: freezed == secret ? _self.secret : secret // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String?,createdAt: null == createdAt ? _self.createdAt : createdAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as DateTime,description: freezed == description ? _self.description : description // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String?,expiresIn: freezed == expiresIn ? _self.expiresIn : expiresIn // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as int?,isOidc: freezed == isOidc ? _self.isOidc : isOidc // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as bool?,
 | 
				
			||||||
 | 
					  ));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// dart format on
 | 
				
			||||||
							
								
								
									
										27
									
								
								lib/models/custom_app_secret.g.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								lib/models/custom_app_secret.g.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,27 @@
 | 
				
			|||||||
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					part of 'custom_app_secret.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					// JsonSerializableGenerator
 | 
				
			||||||
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_CustomAppSecret _$CustomAppSecretFromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					    _CustomAppSecret(
 | 
				
			||||||
 | 
					      id: json['id'] as String,
 | 
				
			||||||
 | 
					      secret: json['secret'] as String?,
 | 
				
			||||||
 | 
					      createdAt: DateTime.parse(json['created_at'] as String),
 | 
				
			||||||
 | 
					      description: json['description'] as String?,
 | 
				
			||||||
 | 
					      expiresIn: (json['expires_in'] as num?)?.toInt(),
 | 
				
			||||||
 | 
					      isOidc: json['is_oidc'] as bool?,
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$CustomAppSecretToJson(_CustomAppSecret instance) =>
 | 
				
			||||||
 | 
					    <String, dynamic>{
 | 
				
			||||||
 | 
					      'id': instance.id,
 | 
				
			||||||
 | 
					      'secret': instance.secret,
 | 
				
			||||||
 | 
					      'created_at': instance.createdAt.toIso8601String(),
 | 
				
			||||||
 | 
					      'description': instance.description,
 | 
				
			||||||
 | 
					      'expires_in': instance.expiresIn,
 | 
				
			||||||
 | 
					      'is_oidc': instance.isOidc,
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
							
								
								
									
										23
									
								
								lib/models/dev_project.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								lib/models/dev_project.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					class DevProject {
 | 
				
			||||||
 | 
					  final String id;
 | 
				
			||||||
 | 
					  final String slug;
 | 
				
			||||||
 | 
					  final String name;
 | 
				
			||||||
 | 
					  final String? description;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  DevProject({
 | 
				
			||||||
 | 
					    required this.id,
 | 
				
			||||||
 | 
					    required this.slug,
 | 
				
			||||||
 | 
					    required this.name,
 | 
				
			||||||
 | 
					    this.description,
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory DevProject.fromJson(Map<String, dynamic> json) {
 | 
				
			||||||
 | 
					    return DevProject(
 | 
				
			||||||
 | 
					      id: json['id'],
 | 
				
			||||||
 | 
					      slug: json['slug'],
 | 
				
			||||||
 | 
					      name: json['name'],
 | 
				
			||||||
 | 
					      description: json['description'],
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,13 +1,25 @@
 | 
				
			|||||||
import 'package:freezed_annotation/freezed_annotation.dart';
 | 
					import 'package:freezed_annotation/freezed_annotation.dart';
 | 
				
			||||||
 | 
					import 'package:island/models/publisher.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
part 'developer.freezed.dart';
 | 
					part 'developer.freezed.dart';
 | 
				
			||||||
part 'developer.g.dart';
 | 
					part 'developer.g.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@freezed
 | 
				
			||||||
 | 
					sealed class SnDeveloper with _$SnDeveloper {
 | 
				
			||||||
 | 
					  const factory SnDeveloper({
 | 
				
			||||||
 | 
					    required String id,
 | 
				
			||||||
 | 
					    required String publisherId,
 | 
				
			||||||
 | 
					    SnPublisher? publisher,
 | 
				
			||||||
 | 
					  }) = _SnDeveloper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory SnDeveloper.fromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					      _$SnDeveloperFromJson(json);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@freezed
 | 
					@freezed
 | 
				
			||||||
sealed class DeveloperStats with _$DeveloperStats {
 | 
					sealed class DeveloperStats with _$DeveloperStats {
 | 
				
			||||||
  const factory DeveloperStats({
 | 
					  const factory DeveloperStats({@Default(0) int totalCustomApps}) =
 | 
				
			||||||
    @Default(0) int totalCustomApps,
 | 
					      _DeveloperStats;
 | 
				
			||||||
  }) = _DeveloperStats;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  factory DeveloperStats.fromJson(Map<String, dynamic> json) =>
 | 
					  factory DeveloperStats.fromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
      _$DeveloperStatsFromJson(json);
 | 
					      _$DeveloperStatsFromJson(json);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
// dart format width=80
 | 
					 | 
				
			||||||
// coverage:ignore-file
 | 
					 | 
				
			||||||
// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					// coverage:ignore-file
 | 
				
			||||||
// ignore_for_file: type=lint
 | 
					// ignore_for_file: type=lint
 | 
				
			||||||
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
					// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -13,6 +12,293 @@ part of 'developer.dart';
 | 
				
			|||||||
// dart format off
 | 
					// dart format off
 | 
				
			||||||
T _$identity<T>(T value) => value;
 | 
					T _$identity<T>(T value) => value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// @nodoc
 | 
				
			||||||
 | 
					mixin _$SnDeveloper {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 String get id; String get publisherId; SnPublisher? get publisher;
 | 
				
			||||||
 | 
					/// Create a copy of SnDeveloper
 | 
				
			||||||
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
 | 
					@pragma('vm:prefer-inline')
 | 
				
			||||||
 | 
					$SnDeveloperCopyWith<SnDeveloper> get copyWith => _$SnDeveloperCopyWithImpl<SnDeveloper>(this as SnDeveloper, _$identity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /// Serializes this SnDeveloper to a JSON map.
 | 
				
			||||||
 | 
					  Map<String, dynamic> toJson();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					bool operator ==(Object other) {
 | 
				
			||||||
 | 
					  return identical(this, other) || (other.runtimeType == runtimeType&&other is SnDeveloper&&(identical(other.id, id) || other.id == id)&&(identical(other.publisherId, publisherId) || other.publisherId == publisherId)&&(identical(other.publisher, publisher) || other.publisher == publisher));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					int get hashCode => Object.hash(runtimeType,id,publisherId,publisher);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					String toString() {
 | 
				
			||||||
 | 
					  return 'SnDeveloper(id: $id, publisherId: $publisherId, publisher: $publisher)';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// @nodoc
 | 
				
			||||||
 | 
					abstract mixin class $SnDeveloperCopyWith<$Res>  {
 | 
				
			||||||
 | 
					  factory $SnDeveloperCopyWith(SnDeveloper value, $Res Function(SnDeveloper) _then) = _$SnDeveloperCopyWithImpl;
 | 
				
			||||||
 | 
					@useResult
 | 
				
			||||||
 | 
					$Res call({
 | 
				
			||||||
 | 
					 String id, String publisherId, SnPublisher? publisher
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$SnPublisherCopyWith<$Res>? get publisher;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// @nodoc
 | 
				
			||||||
 | 
					class _$SnDeveloperCopyWithImpl<$Res>
 | 
				
			||||||
 | 
					    implements $SnDeveloperCopyWith<$Res> {
 | 
				
			||||||
 | 
					  _$SnDeveloperCopyWithImpl(this._self, this._then);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  final SnDeveloper _self;
 | 
				
			||||||
 | 
					  final $Res Function(SnDeveloper) _then;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Create a copy of SnDeveloper
 | 
				
			||||||
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
 | 
					@pragma('vm:prefer-inline') @override $Res call({Object? id = null,Object? publisherId = null,Object? publisher = freezed,}) {
 | 
				
			||||||
 | 
					  return _then(_self.copyWith(
 | 
				
			||||||
 | 
					id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String,publisherId: null == publisherId ? _self.publisherId : publisherId // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String,publisher: freezed == publisher ? _self.publisher : publisher // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as SnPublisher?,
 | 
				
			||||||
 | 
					  ));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// Create a copy of SnDeveloper
 | 
				
			||||||
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					@pragma('vm:prefer-inline')
 | 
				
			||||||
 | 
					$SnPublisherCopyWith<$Res>? get publisher {
 | 
				
			||||||
 | 
					    if (_self.publisher == null) {
 | 
				
			||||||
 | 
					    return null;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return $SnPublisherCopyWith<$Res>(_self.publisher!, (value) {
 | 
				
			||||||
 | 
					    return _then(_self.copyWith(publisher: value));
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnDeveloper].
 | 
				
			||||||
 | 
					extension SnDeveloperPatterns on SnDeveloper {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnDeveloper value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnDeveloper() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnDeveloper value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnDeveloper():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnDeveloper value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnDeveloper() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  String publisherId,  SnPublisher? publisher)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnDeveloper() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.publisherId,_that.publisher);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  String publisherId,  SnPublisher? publisher)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnDeveloper():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.publisherId,_that.publisher);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  String publisherId,  SnPublisher? publisher)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnDeveloper() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.publisherId,_that.publisher);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// @nodoc
 | 
				
			||||||
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class _SnDeveloper implements SnDeveloper {
 | 
				
			||||||
 | 
					  const _SnDeveloper({required this.id, required this.publisherId, this.publisher});
 | 
				
			||||||
 | 
					  factory _SnDeveloper.fromJson(Map<String, dynamic> json) => _$SnDeveloperFromJson(json);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override final  String id;
 | 
				
			||||||
 | 
					@override final  String publisherId;
 | 
				
			||||||
 | 
					@override final  SnPublisher? publisher;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Create a copy of SnDeveloper
 | 
				
			||||||
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
 | 
					@override @JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
 | 
					@pragma('vm:prefer-inline')
 | 
				
			||||||
 | 
					_$SnDeveloperCopyWith<_SnDeveloper> get copyWith => __$SnDeveloperCopyWithImpl<_SnDeveloper>(this, _$identity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					Map<String, dynamic> toJson() {
 | 
				
			||||||
 | 
					  return _$SnDeveloperToJson(this, );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					bool operator ==(Object other) {
 | 
				
			||||||
 | 
					  return identical(this, other) || (other.runtimeType == runtimeType&&other is _SnDeveloper&&(identical(other.id, id) || other.id == id)&&(identical(other.publisherId, publisherId) || other.publisherId == publisherId)&&(identical(other.publisher, publisher) || other.publisher == publisher));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					int get hashCode => Object.hash(runtimeType,id,publisherId,publisher);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					String toString() {
 | 
				
			||||||
 | 
					  return 'SnDeveloper(id: $id, publisherId: $publisherId, publisher: $publisher)';
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// @nodoc
 | 
				
			||||||
 | 
					abstract mixin class _$SnDeveloperCopyWith<$Res> implements $SnDeveloperCopyWith<$Res> {
 | 
				
			||||||
 | 
					  factory _$SnDeveloperCopyWith(_SnDeveloper value, $Res Function(_SnDeveloper) _then) = __$SnDeveloperCopyWithImpl;
 | 
				
			||||||
 | 
					@override @useResult
 | 
				
			||||||
 | 
					$Res call({
 | 
				
			||||||
 | 
					 String id, String publisherId, SnPublisher? publisher
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override $SnPublisherCopyWith<$Res>? get publisher;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// @nodoc
 | 
				
			||||||
 | 
					class __$SnDeveloperCopyWithImpl<$Res>
 | 
				
			||||||
 | 
					    implements _$SnDeveloperCopyWith<$Res> {
 | 
				
			||||||
 | 
					  __$SnDeveloperCopyWithImpl(this._self, this._then);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  final _SnDeveloper _self;
 | 
				
			||||||
 | 
					  final $Res Function(_SnDeveloper) _then;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Create a copy of SnDeveloper
 | 
				
			||||||
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
 | 
					@override @pragma('vm:prefer-inline') $Res call({Object? id = null,Object? publisherId = null,Object? publisher = freezed,}) {
 | 
				
			||||||
 | 
					  return _then(_SnDeveloper(
 | 
				
			||||||
 | 
					id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String,publisherId: null == publisherId ? _self.publisherId : publisherId // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String,publisher: freezed == publisher ? _self.publisher : publisher // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as SnPublisher?,
 | 
				
			||||||
 | 
					  ));
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Create a copy of SnDeveloper
 | 
				
			||||||
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					@pragma('vm:prefer-inline')
 | 
				
			||||||
 | 
					$SnPublisherCopyWith<$Res>? get publisher {
 | 
				
			||||||
 | 
					    if (_self.publisher == null) {
 | 
				
			||||||
 | 
					    return null;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return $SnPublisherCopyWith<$Res>(_self.publisher!, (value) {
 | 
				
			||||||
 | 
					    return _then(_self.copyWith(publisher: value));
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
mixin _$DeveloperStats {
 | 
					mixin _$DeveloperStats {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -76,6 +362,130 @@ as int,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [DeveloperStats].
 | 
				
			||||||
 | 
					extension DeveloperStatsPatterns on DeveloperStats {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _DeveloperStats value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _DeveloperStats() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _DeveloperStats value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _DeveloperStats():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _DeveloperStats value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _DeveloperStats() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( int totalCustomApps)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _DeveloperStats() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.totalCustomApps);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( int totalCustomApps)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _DeveloperStats():
 | 
				
			||||||
 | 
					return $default(_that.totalCustomApps);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( int totalCustomApps)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _DeveloperStats() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.totalCustomApps);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,6 +6,22 @@ part of 'developer.dart';
 | 
				
			|||||||
// JsonSerializableGenerator
 | 
					// JsonSerializableGenerator
 | 
				
			||||||
// **************************************************************************
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_SnDeveloper _$SnDeveloperFromJson(Map<String, dynamic> json) => _SnDeveloper(
 | 
				
			||||||
 | 
					  id: json['id'] as String,
 | 
				
			||||||
 | 
					  publisherId: json['publisher_id'] as String,
 | 
				
			||||||
 | 
					  publisher:
 | 
				
			||||||
 | 
					      json['publisher'] == null
 | 
				
			||||||
 | 
					          ? null
 | 
				
			||||||
 | 
					          : SnPublisher.fromJson(json['publisher'] as Map<String, dynamic>),
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$SnDeveloperToJson(_SnDeveloper instance) =>
 | 
				
			||||||
 | 
					    <String, dynamic>{
 | 
				
			||||||
 | 
					      'id': instance.id,
 | 
				
			||||||
 | 
					      'publisher_id': instance.publisherId,
 | 
				
			||||||
 | 
					      'publisher': instance.publisher?.toJson(),
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
_DeveloperStats _$DeveloperStatsFromJson(Map<String, dynamic> json) =>
 | 
					_DeveloperStats _$DeveloperStatsFromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
    _DeveloperStats(
 | 
					    _DeveloperStats(
 | 
				
			||||||
      totalCustomApps: (json['total_custom_apps'] as num?)?.toInt() ?? 0,
 | 
					      totalCustomApps: (json['total_custom_apps'] as num?)?.toInt() ?? 0,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,25 +3,6 @@ import 'package:freezed_annotation/freezed_annotation.dart';
 | 
				
			|||||||
part 'embed.freezed.dart';
 | 
					part 'embed.freezed.dart';
 | 
				
			||||||
part 'embed.g.dart';
 | 
					part 'embed.g.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@freezed
 | 
					 | 
				
			||||||
sealed class SnEmbedLink with _$SnEmbedLink {
 | 
					 | 
				
			||||||
  const factory SnEmbedLink({
 | 
					 | 
				
			||||||
    @JsonKey(name: 'Type') required String type,
 | 
					 | 
				
			||||||
    @JsonKey(name: 'Url') required String url,
 | 
					 | 
				
			||||||
    @JsonKey(name: 'Title') required String title,
 | 
					 | 
				
			||||||
    @JsonKey(name: 'Description') required String? description,
 | 
					 | 
				
			||||||
    @JsonKey(name: 'ImageUrl') required String? imageUrl,
 | 
					 | 
				
			||||||
    @JsonKey(name: 'FaviconUrl') required String faviconUrl,
 | 
					 | 
				
			||||||
    @JsonKey(name: 'SiteName') required String siteName,
 | 
					 | 
				
			||||||
    @JsonKey(name: 'ContentType') required String? contentType,
 | 
					 | 
				
			||||||
    @JsonKey(name: 'Author') required String? author,
 | 
					 | 
				
			||||||
    @JsonKey(name: 'PublishedDate') required DateTime? publishedDate,
 | 
					 | 
				
			||||||
  }) = _SnEmbedLink;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  factory SnEmbedLink.fromJson(Map<String, dynamic> json) =>
 | 
					 | 
				
			||||||
      _$SnEmbedLinkFromJson(json);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@freezed
 | 
					@freezed
 | 
				
			||||||
sealed class SnScrappedLink with _$SnScrappedLink {
 | 
					sealed class SnScrappedLink with _$SnScrappedLink {
 | 
				
			||||||
  const factory SnScrappedLink({
 | 
					  const factory SnScrappedLink({
 | 
				
			||||||
@@ -30,8 +11,8 @@ sealed class SnScrappedLink with _$SnScrappedLink {
 | 
				
			|||||||
    required String title,
 | 
					    required String title,
 | 
				
			||||||
    required String? description,
 | 
					    required String? description,
 | 
				
			||||||
    required String? imageUrl,
 | 
					    required String? imageUrl,
 | 
				
			||||||
    required String faviconUrl,
 | 
					    required String? faviconUrl,
 | 
				
			||||||
    required String siteName,
 | 
					    required String? siteName,
 | 
				
			||||||
    required String? contentType,
 | 
					    required String? contentType,
 | 
				
			||||||
    required String? author,
 | 
					    required String? author,
 | 
				
			||||||
    required DateTime? publishedDate,
 | 
					    required DateTime? publishedDate,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
// dart format width=80
 | 
					 | 
				
			||||||
// coverage:ignore-file
 | 
					 | 
				
			||||||
// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					// coverage:ignore-file
 | 
				
			||||||
// ignore_for_file: type=lint
 | 
					// ignore_for_file: type=lint
 | 
				
			||||||
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
					// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -13,170 +12,10 @@ part of 'embed.dart';
 | 
				
			|||||||
// dart format off
 | 
					// dart format off
 | 
				
			||||||
T _$identity<T>(T value) => value;
 | 
					T _$identity<T>(T value) => value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					 | 
				
			||||||
mixin _$SnEmbedLink {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@JsonKey(name: 'Type') String get type;@JsonKey(name: 'Url') String get url;@JsonKey(name: 'Title') String get title;@JsonKey(name: 'Description') String? get description;@JsonKey(name: 'ImageUrl') String? get imageUrl;@JsonKey(name: 'FaviconUrl') String get faviconUrl;@JsonKey(name: 'SiteName') String get siteName;@JsonKey(name: 'ContentType') String? get contentType;@JsonKey(name: 'Author') String? get author;@JsonKey(name: 'PublishedDate') DateTime? get publishedDate;
 | 
					 | 
				
			||||||
/// Create a copy of SnEmbedLink
 | 
					 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					 | 
				
			||||||
@pragma('vm:prefer-inline')
 | 
					 | 
				
			||||||
$SnEmbedLinkCopyWith<SnEmbedLink> get copyWith => _$SnEmbedLinkCopyWithImpl<SnEmbedLink>(this as SnEmbedLink, _$identity);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Serializes this SnEmbedLink to a JSON map.
 | 
					 | 
				
			||||||
  Map<String, dynamic> toJson();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@override
 | 
					 | 
				
			||||||
bool operator ==(Object other) {
 | 
					 | 
				
			||||||
  return identical(this, other) || (other.runtimeType == runtimeType&&other is SnEmbedLink&&(identical(other.type, type) || other.type == type)&&(identical(other.url, url) || other.url == url)&&(identical(other.title, title) || other.title == title)&&(identical(other.description, description) || other.description == description)&&(identical(other.imageUrl, imageUrl) || other.imageUrl == imageUrl)&&(identical(other.faviconUrl, faviconUrl) || other.faviconUrl == faviconUrl)&&(identical(other.siteName, siteName) || other.siteName == siteName)&&(identical(other.contentType, contentType) || other.contentType == contentType)&&(identical(other.author, author) || other.author == author)&&(identical(other.publishedDate, publishedDate) || other.publishedDate == publishedDate));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					 | 
				
			||||||
@override
 | 
					 | 
				
			||||||
int get hashCode => Object.hash(runtimeType,type,url,title,description,imageUrl,faviconUrl,siteName,contentType,author,publishedDate);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@override
 | 
					 | 
				
			||||||
String toString() {
 | 
					 | 
				
			||||||
  return 'SnEmbedLink(type: $type, url: $url, title: $title, description: $description, imageUrl: $imageUrl, faviconUrl: $faviconUrl, siteName: $siteName, contentType: $contentType, author: $author, publishedDate: $publishedDate)';
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/// @nodoc
 | 
					 | 
				
			||||||
abstract mixin class $SnEmbedLinkCopyWith<$Res>  {
 | 
					 | 
				
			||||||
  factory $SnEmbedLinkCopyWith(SnEmbedLink value, $Res Function(SnEmbedLink) _then) = _$SnEmbedLinkCopyWithImpl;
 | 
					 | 
				
			||||||
@useResult
 | 
					 | 
				
			||||||
$Res call({
 | 
					 | 
				
			||||||
@JsonKey(name: 'Type') String type,@JsonKey(name: 'Url') String url,@JsonKey(name: 'Title') String title,@JsonKey(name: 'Description') String? description,@JsonKey(name: 'ImageUrl') String? imageUrl,@JsonKey(name: 'FaviconUrl') String faviconUrl,@JsonKey(name: 'SiteName') String siteName,@JsonKey(name: 'ContentType') String? contentType,@JsonKey(name: 'Author') String? author,@JsonKey(name: 'PublishedDate') DateTime? publishedDate
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
/// @nodoc
 | 
					 | 
				
			||||||
class _$SnEmbedLinkCopyWithImpl<$Res>
 | 
					 | 
				
			||||||
    implements $SnEmbedLinkCopyWith<$Res> {
 | 
					 | 
				
			||||||
  _$SnEmbedLinkCopyWithImpl(this._self, this._then);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  final SnEmbedLink _self;
 | 
					 | 
				
			||||||
  final $Res Function(SnEmbedLink) _then;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/// Create a copy of SnEmbedLink
 | 
					 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					 | 
				
			||||||
@pragma('vm:prefer-inline') @override $Res call({Object? type = null,Object? url = null,Object? title = null,Object? description = freezed,Object? imageUrl = freezed,Object? faviconUrl = null,Object? siteName = null,Object? contentType = freezed,Object? author = freezed,Object? publishedDate = freezed,}) {
 | 
					 | 
				
			||||||
  return _then(_self.copyWith(
 | 
					 | 
				
			||||||
type: null == type ? _self.type : type // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as String,url: null == url ? _self.url : url // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as String,title: null == title ? _self.title : title // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as String,description: freezed == description ? _self.description : description // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as String?,imageUrl: freezed == imageUrl ? _self.imageUrl : imageUrl // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as String?,faviconUrl: null == faviconUrl ? _self.faviconUrl : faviconUrl // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as String,siteName: null == siteName ? _self.siteName : siteName // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as String,contentType: freezed == contentType ? _self.contentType : contentType // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as String?,author: freezed == author ? _self.author : author // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as String?,publishedDate: freezed == publishedDate ? _self.publishedDate : publishedDate // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as DateTime?,
 | 
					 | 
				
			||||||
  ));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/// @nodoc
 | 
					 | 
				
			||||||
@JsonSerializable()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
class _SnEmbedLink implements SnEmbedLink {
 | 
					 | 
				
			||||||
  const _SnEmbedLink({@JsonKey(name: 'Type') required this.type, @JsonKey(name: 'Url') required this.url, @JsonKey(name: 'Title') required this.title, @JsonKey(name: 'Description') required this.description, @JsonKey(name: 'ImageUrl') required this.imageUrl, @JsonKey(name: 'FaviconUrl') required this.faviconUrl, @JsonKey(name: 'SiteName') required this.siteName, @JsonKey(name: 'ContentType') required this.contentType, @JsonKey(name: 'Author') required this.author, @JsonKey(name: 'PublishedDate') required this.publishedDate});
 | 
					 | 
				
			||||||
  factory _SnEmbedLink.fromJson(Map<String, dynamic> json) => _$SnEmbedLinkFromJson(json);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@override@JsonKey(name: 'Type') final  String type;
 | 
					 | 
				
			||||||
@override@JsonKey(name: 'Url') final  String url;
 | 
					 | 
				
			||||||
@override@JsonKey(name: 'Title') final  String title;
 | 
					 | 
				
			||||||
@override@JsonKey(name: 'Description') final  String? description;
 | 
					 | 
				
			||||||
@override@JsonKey(name: 'ImageUrl') final  String? imageUrl;
 | 
					 | 
				
			||||||
@override@JsonKey(name: 'FaviconUrl') final  String faviconUrl;
 | 
					 | 
				
			||||||
@override@JsonKey(name: 'SiteName') final  String siteName;
 | 
					 | 
				
			||||||
@override@JsonKey(name: 'ContentType') final  String? contentType;
 | 
					 | 
				
			||||||
@override@JsonKey(name: 'Author') final  String? author;
 | 
					 | 
				
			||||||
@override@JsonKey(name: 'PublishedDate') final  DateTime? publishedDate;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/// Create a copy of SnEmbedLink
 | 
					 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					 | 
				
			||||||
@override @JsonKey(includeFromJson: false, includeToJson: false)
 | 
					 | 
				
			||||||
@pragma('vm:prefer-inline')
 | 
					 | 
				
			||||||
_$SnEmbedLinkCopyWith<_SnEmbedLink> get copyWith => __$SnEmbedLinkCopyWithImpl<_SnEmbedLink>(this, _$identity);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@override
 | 
					 | 
				
			||||||
Map<String, dynamic> toJson() {
 | 
					 | 
				
			||||||
  return _$SnEmbedLinkToJson(this, );
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@override
 | 
					 | 
				
			||||||
bool operator ==(Object other) {
 | 
					 | 
				
			||||||
  return identical(this, other) || (other.runtimeType == runtimeType&&other is _SnEmbedLink&&(identical(other.type, type) || other.type == type)&&(identical(other.url, url) || other.url == url)&&(identical(other.title, title) || other.title == title)&&(identical(other.description, description) || other.description == description)&&(identical(other.imageUrl, imageUrl) || other.imageUrl == imageUrl)&&(identical(other.faviconUrl, faviconUrl) || other.faviconUrl == faviconUrl)&&(identical(other.siteName, siteName) || other.siteName == siteName)&&(identical(other.contentType, contentType) || other.contentType == contentType)&&(identical(other.author, author) || other.author == author)&&(identical(other.publishedDate, publishedDate) || other.publishedDate == publishedDate));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					 | 
				
			||||||
@override
 | 
					 | 
				
			||||||
int get hashCode => Object.hash(runtimeType,type,url,title,description,imageUrl,faviconUrl,siteName,contentType,author,publishedDate);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@override
 | 
					 | 
				
			||||||
String toString() {
 | 
					 | 
				
			||||||
  return 'SnEmbedLink(type: $type, url: $url, title: $title, description: $description, imageUrl: $imageUrl, faviconUrl: $faviconUrl, siteName: $siteName, contentType: $contentType, author: $author, publishedDate: $publishedDate)';
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/// @nodoc
 | 
					 | 
				
			||||||
abstract mixin class _$SnEmbedLinkCopyWith<$Res> implements $SnEmbedLinkCopyWith<$Res> {
 | 
					 | 
				
			||||||
  factory _$SnEmbedLinkCopyWith(_SnEmbedLink value, $Res Function(_SnEmbedLink) _then) = __$SnEmbedLinkCopyWithImpl;
 | 
					 | 
				
			||||||
@override @useResult
 | 
					 | 
				
			||||||
$Res call({
 | 
					 | 
				
			||||||
@JsonKey(name: 'Type') String type,@JsonKey(name: 'Url') String url,@JsonKey(name: 'Title') String title,@JsonKey(name: 'Description') String? description,@JsonKey(name: 'ImageUrl') String? imageUrl,@JsonKey(name: 'FaviconUrl') String faviconUrl,@JsonKey(name: 'SiteName') String siteName,@JsonKey(name: 'ContentType') String? contentType,@JsonKey(name: 'Author') String? author,@JsonKey(name: 'PublishedDate') DateTime? publishedDate
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
/// @nodoc
 | 
					 | 
				
			||||||
class __$SnEmbedLinkCopyWithImpl<$Res>
 | 
					 | 
				
			||||||
    implements _$SnEmbedLinkCopyWith<$Res> {
 | 
					 | 
				
			||||||
  __$SnEmbedLinkCopyWithImpl(this._self, this._then);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  final _SnEmbedLink _self;
 | 
					 | 
				
			||||||
  final $Res Function(_SnEmbedLink) _then;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/// Create a copy of SnEmbedLink
 | 
					 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					 | 
				
			||||||
@override @pragma('vm:prefer-inline') $Res call({Object? type = null,Object? url = null,Object? title = null,Object? description = freezed,Object? imageUrl = freezed,Object? faviconUrl = null,Object? siteName = null,Object? contentType = freezed,Object? author = freezed,Object? publishedDate = freezed,}) {
 | 
					 | 
				
			||||||
  return _then(_SnEmbedLink(
 | 
					 | 
				
			||||||
type: null == type ? _self.type : type // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as String,url: null == url ? _self.url : url // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as String,title: null == title ? _self.title : title // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as String,description: freezed == description ? _self.description : description // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as String?,imageUrl: freezed == imageUrl ? _self.imageUrl : imageUrl // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as String?,faviconUrl: null == faviconUrl ? _self.faviconUrl : faviconUrl // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as String,siteName: null == siteName ? _self.siteName : siteName // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as String,contentType: freezed == contentType ? _self.contentType : contentType // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as String?,author: freezed == author ? _self.author : author // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as String?,publishedDate: freezed == publishedDate ? _self.publishedDate : publishedDate // ignore: cast_nullable_to_non_nullable
 | 
					 | 
				
			||||||
as DateTime?,
 | 
					 | 
				
			||||||
  ));
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
mixin _$SnScrappedLink {
 | 
					mixin _$SnScrappedLink {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 String get type; String get url; String get title; String? get description; String? get imageUrl; String get faviconUrl; String get siteName; String? get contentType; String? get author; DateTime? get publishedDate;
 | 
					 String get type; String get url; String get title; String? get description; String? get imageUrl; String? get faviconUrl; String? get siteName; String? get contentType; String? get author; DateTime? get publishedDate;
 | 
				
			||||||
/// Create a copy of SnScrappedLink
 | 
					/// Create a copy of SnScrappedLink
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
@@ -209,7 +48,7 @@ abstract mixin class $SnScrappedLinkCopyWith<$Res>  {
 | 
				
			|||||||
  factory $SnScrappedLinkCopyWith(SnScrappedLink value, $Res Function(SnScrappedLink) _then) = _$SnScrappedLinkCopyWithImpl;
 | 
					  factory $SnScrappedLinkCopyWith(SnScrappedLink value, $Res Function(SnScrappedLink) _then) = _$SnScrappedLinkCopyWithImpl;
 | 
				
			||||||
@useResult
 | 
					@useResult
 | 
				
			||||||
$Res call({
 | 
					$Res call({
 | 
				
			||||||
 String type, String url, String title, String? description, String? imageUrl, String faviconUrl, String siteName, String? contentType, String? author, DateTime? publishedDate
 | 
					 String type, String url, String title, String? description, String? imageUrl, String? faviconUrl, String? siteName, String? contentType, String? author, DateTime? publishedDate
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -226,16 +65,16 @@ class _$SnScrappedLinkCopyWithImpl<$Res>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/// Create a copy of SnScrappedLink
 | 
					/// Create a copy of SnScrappedLink
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@pragma('vm:prefer-inline') @override $Res call({Object? type = null,Object? url = null,Object? title = null,Object? description = freezed,Object? imageUrl = freezed,Object? faviconUrl = null,Object? siteName = null,Object? contentType = freezed,Object? author = freezed,Object? publishedDate = freezed,}) {
 | 
					@pragma('vm:prefer-inline') @override $Res call({Object? type = null,Object? url = null,Object? title = null,Object? description = freezed,Object? imageUrl = freezed,Object? faviconUrl = freezed,Object? siteName = freezed,Object? contentType = freezed,Object? author = freezed,Object? publishedDate = freezed,}) {
 | 
				
			||||||
  return _then(_self.copyWith(
 | 
					  return _then(_self.copyWith(
 | 
				
			||||||
type: null == type ? _self.type : type // ignore: cast_nullable_to_non_nullable
 | 
					type: null == type ? _self.type : type // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,url: null == url ? _self.url : url // ignore: cast_nullable_to_non_nullable
 | 
					as String,url: null == url ? _self.url : url // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,title: null == title ? _self.title : title // ignore: cast_nullable_to_non_nullable
 | 
					as String,title: null == title ? _self.title : title // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,description: freezed == description ? _self.description : description // ignore: cast_nullable_to_non_nullable
 | 
					as String,description: freezed == description ? _self.description : description // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String?,imageUrl: freezed == imageUrl ? _self.imageUrl : imageUrl // ignore: cast_nullable_to_non_nullable
 | 
					as String?,imageUrl: freezed == imageUrl ? _self.imageUrl : imageUrl // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String?,faviconUrl: null == faviconUrl ? _self.faviconUrl : faviconUrl // ignore: cast_nullable_to_non_nullable
 | 
					as String?,faviconUrl: freezed == faviconUrl ? _self.faviconUrl : faviconUrl // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,siteName: null == siteName ? _self.siteName : siteName // ignore: cast_nullable_to_non_nullable
 | 
					as String?,siteName: freezed == siteName ? _self.siteName : siteName // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,contentType: freezed == contentType ? _self.contentType : contentType // ignore: cast_nullable_to_non_nullable
 | 
					as String?,contentType: freezed == contentType ? _self.contentType : contentType // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String?,author: freezed == author ? _self.author : author // ignore: cast_nullable_to_non_nullable
 | 
					as String?,author: freezed == author ? _self.author : author // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String?,publishedDate: freezed == publishedDate ? _self.publishedDate : publishedDate // ignore: cast_nullable_to_non_nullable
 | 
					as String?,publishedDate: freezed == publishedDate ? _self.publishedDate : publishedDate // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as DateTime?,
 | 
					as DateTime?,
 | 
				
			||||||
@@ -245,6 +84,130 @@ as DateTime?,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnScrappedLink].
 | 
				
			||||||
 | 
					extension SnScrappedLinkPatterns on SnScrappedLink {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnScrappedLink value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnScrappedLink() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnScrappedLink value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnScrappedLink():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnScrappedLink value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnScrappedLink() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String type,  String url,  String title,  String? description,  String? imageUrl,  String? faviconUrl,  String? siteName,  String? contentType,  String? author,  DateTime? publishedDate)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnScrappedLink() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.type,_that.url,_that.title,_that.description,_that.imageUrl,_that.faviconUrl,_that.siteName,_that.contentType,_that.author,_that.publishedDate);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String type,  String url,  String title,  String? description,  String? imageUrl,  String? faviconUrl,  String? siteName,  String? contentType,  String? author,  DateTime? publishedDate)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnScrappedLink():
 | 
				
			||||||
 | 
					return $default(_that.type,_that.url,_that.title,_that.description,_that.imageUrl,_that.faviconUrl,_that.siteName,_that.contentType,_that.author,_that.publishedDate);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String type,  String url,  String title,  String? description,  String? imageUrl,  String? faviconUrl,  String? siteName,  String? contentType,  String? author,  DateTime? publishedDate)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnScrappedLink() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.type,_that.url,_that.title,_that.description,_that.imageUrl,_that.faviconUrl,_that.siteName,_that.contentType,_that.author,_that.publishedDate);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -257,8 +220,8 @@ class _SnScrappedLink implements SnScrappedLink {
 | 
				
			|||||||
@override final  String title;
 | 
					@override final  String title;
 | 
				
			||||||
@override final  String? description;
 | 
					@override final  String? description;
 | 
				
			||||||
@override final  String? imageUrl;
 | 
					@override final  String? imageUrl;
 | 
				
			||||||
@override final  String faviconUrl;
 | 
					@override final  String? faviconUrl;
 | 
				
			||||||
@override final  String siteName;
 | 
					@override final  String? siteName;
 | 
				
			||||||
@override final  String? contentType;
 | 
					@override final  String? contentType;
 | 
				
			||||||
@override final  String? author;
 | 
					@override final  String? author;
 | 
				
			||||||
@override final  DateTime? publishedDate;
 | 
					@override final  DateTime? publishedDate;
 | 
				
			||||||
@@ -296,7 +259,7 @@ abstract mixin class _$SnScrappedLinkCopyWith<$Res> implements $SnScrappedLinkCo
 | 
				
			|||||||
  factory _$SnScrappedLinkCopyWith(_SnScrappedLink value, $Res Function(_SnScrappedLink) _then) = __$SnScrappedLinkCopyWithImpl;
 | 
					  factory _$SnScrappedLinkCopyWith(_SnScrappedLink value, $Res Function(_SnScrappedLink) _then) = __$SnScrappedLinkCopyWithImpl;
 | 
				
			||||||
@override @useResult
 | 
					@override @useResult
 | 
				
			||||||
$Res call({
 | 
					$Res call({
 | 
				
			||||||
 String type, String url, String title, String? description, String? imageUrl, String faviconUrl, String siteName, String? contentType, String? author, DateTime? publishedDate
 | 
					 String type, String url, String title, String? description, String? imageUrl, String? faviconUrl, String? siteName, String? contentType, String? author, DateTime? publishedDate
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -313,16 +276,16 @@ class __$SnScrappedLinkCopyWithImpl<$Res>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/// Create a copy of SnScrappedLink
 | 
					/// Create a copy of SnScrappedLink
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@override @pragma('vm:prefer-inline') $Res call({Object? type = null,Object? url = null,Object? title = null,Object? description = freezed,Object? imageUrl = freezed,Object? faviconUrl = null,Object? siteName = null,Object? contentType = freezed,Object? author = freezed,Object? publishedDate = freezed,}) {
 | 
					@override @pragma('vm:prefer-inline') $Res call({Object? type = null,Object? url = null,Object? title = null,Object? description = freezed,Object? imageUrl = freezed,Object? faviconUrl = freezed,Object? siteName = freezed,Object? contentType = freezed,Object? author = freezed,Object? publishedDate = freezed,}) {
 | 
				
			||||||
  return _then(_SnScrappedLink(
 | 
					  return _then(_SnScrappedLink(
 | 
				
			||||||
type: null == type ? _self.type : type // ignore: cast_nullable_to_non_nullable
 | 
					type: null == type ? _self.type : type // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,url: null == url ? _self.url : url // ignore: cast_nullable_to_non_nullable
 | 
					as String,url: null == url ? _self.url : url // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,title: null == title ? _self.title : title // ignore: cast_nullable_to_non_nullable
 | 
					as String,title: null == title ? _self.title : title // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,description: freezed == description ? _self.description : description // ignore: cast_nullable_to_non_nullable
 | 
					as String,description: freezed == description ? _self.description : description // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String?,imageUrl: freezed == imageUrl ? _self.imageUrl : imageUrl // ignore: cast_nullable_to_non_nullable
 | 
					as String?,imageUrl: freezed == imageUrl ? _self.imageUrl : imageUrl // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String?,faviconUrl: null == faviconUrl ? _self.faviconUrl : faviconUrl // ignore: cast_nullable_to_non_nullable
 | 
					as String?,faviconUrl: freezed == faviconUrl ? _self.faviconUrl : faviconUrl // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,siteName: null == siteName ? _self.siteName : siteName // ignore: cast_nullable_to_non_nullable
 | 
					as String?,siteName: freezed == siteName ? _self.siteName : siteName // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,contentType: freezed == contentType ? _self.contentType : contentType // ignore: cast_nullable_to_non_nullable
 | 
					as String?,contentType: freezed == contentType ? _self.contentType : contentType // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String?,author: freezed == author ? _self.author : author // ignore: cast_nullable_to_non_nullable
 | 
					as String?,author: freezed == author ? _self.author : author // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String?,publishedDate: freezed == publishedDate ? _self.publishedDate : publishedDate // ignore: cast_nullable_to_non_nullable
 | 
					as String?,publishedDate: freezed == publishedDate ? _self.publishedDate : publishedDate // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as DateTime?,
 | 
					as DateTime?,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,36 +6,6 @@ part of 'embed.dart';
 | 
				
			|||||||
// JsonSerializableGenerator
 | 
					// JsonSerializableGenerator
 | 
				
			||||||
// **************************************************************************
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					
 | 
				
			||||||
_SnEmbedLink _$SnEmbedLinkFromJson(Map<String, dynamic> json) => _SnEmbedLink(
 | 
					 | 
				
			||||||
  type: json['Type'] as String,
 | 
					 | 
				
			||||||
  url: json['Url'] as String,
 | 
					 | 
				
			||||||
  title: json['Title'] as String,
 | 
					 | 
				
			||||||
  description: json['Description'] as String?,
 | 
					 | 
				
			||||||
  imageUrl: json['ImageUrl'] as String?,
 | 
					 | 
				
			||||||
  faviconUrl: json['FaviconUrl'] as String,
 | 
					 | 
				
			||||||
  siteName: json['SiteName'] as String,
 | 
					 | 
				
			||||||
  contentType: json['ContentType'] as String?,
 | 
					 | 
				
			||||||
  author: json['Author'] as String?,
 | 
					 | 
				
			||||||
  publishedDate:
 | 
					 | 
				
			||||||
      json['PublishedDate'] == null
 | 
					 | 
				
			||||||
          ? null
 | 
					 | 
				
			||||||
          : DateTime.parse(json['PublishedDate'] as String),
 | 
					 | 
				
			||||||
);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
Map<String, dynamic> _$SnEmbedLinkToJson(_SnEmbedLink instance) =>
 | 
					 | 
				
			||||||
    <String, dynamic>{
 | 
					 | 
				
			||||||
      'Type': instance.type,
 | 
					 | 
				
			||||||
      'Url': instance.url,
 | 
					 | 
				
			||||||
      'Title': instance.title,
 | 
					 | 
				
			||||||
      'Description': instance.description,
 | 
					 | 
				
			||||||
      'ImageUrl': instance.imageUrl,
 | 
					 | 
				
			||||||
      'FaviconUrl': instance.faviconUrl,
 | 
					 | 
				
			||||||
      'SiteName': instance.siteName,
 | 
					 | 
				
			||||||
      'ContentType': instance.contentType,
 | 
					 | 
				
			||||||
      'Author': instance.author,
 | 
					 | 
				
			||||||
      'PublishedDate': instance.publishedDate?.toIso8601String(),
 | 
					 | 
				
			||||||
    };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
_SnScrappedLink _$SnScrappedLinkFromJson(Map<String, dynamic> json) =>
 | 
					_SnScrappedLink _$SnScrappedLinkFromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
    _SnScrappedLink(
 | 
					    _SnScrappedLink(
 | 
				
			||||||
      type: json['type'] as String,
 | 
					      type: json['type'] as String,
 | 
				
			||||||
@@ -43,8 +13,8 @@ _SnScrappedLink _$SnScrappedLinkFromJson(Map<String, dynamic> json) =>
 | 
				
			|||||||
      title: json['title'] as String,
 | 
					      title: json['title'] as String,
 | 
				
			||||||
      description: json['description'] as String?,
 | 
					      description: json['description'] as String?,
 | 
				
			||||||
      imageUrl: json['image_url'] as String?,
 | 
					      imageUrl: json['image_url'] as String?,
 | 
				
			||||||
      faviconUrl: json['favicon_url'] as String,
 | 
					      faviconUrl: json['favicon_url'] as String?,
 | 
				
			||||||
      siteName: json['site_name'] as String,
 | 
					      siteName: json['site_name'] as String?,
 | 
				
			||||||
      contentType: json['content_type'] as String?,
 | 
					      contentType: json['content_type'] as String?,
 | 
				
			||||||
      author: json['author'] as String?,
 | 
					      author: json['author'] as String?,
 | 
				
			||||||
      publishedDate:
 | 
					      publishedDate:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,6 +12,7 @@ sealed class UniversalFile with _$UniversalFile {
 | 
				
			|||||||
  const factory UniversalFile({
 | 
					  const factory UniversalFile({
 | 
				
			||||||
    required dynamic data,
 | 
					    required dynamic data,
 | 
				
			||||||
    required UniversalFileType type,
 | 
					    required UniversalFileType type,
 | 
				
			||||||
 | 
					    @Default(false) bool isLink,
 | 
				
			||||||
  }) = _UniversalFile;
 | 
					  }) = _UniversalFile;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  factory UniversalFile.fromJson(Map<String, dynamic> json) =>
 | 
					  factory UniversalFile.fromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
@@ -41,6 +42,7 @@ sealed class SnCloudFile with _$SnCloudFile {
 | 
				
			|||||||
    required String? description,
 | 
					    required String? description,
 | 
				
			||||||
    required Map<String, dynamic>? fileMeta,
 | 
					    required Map<String, dynamic>? fileMeta,
 | 
				
			||||||
    required Map<String, dynamic>? userMeta,
 | 
					    required Map<String, dynamic>? userMeta,
 | 
				
			||||||
 | 
					    @Default([]) List<int> sensitiveMarks,
 | 
				
			||||||
    required String? mimeType,
 | 
					    required String? mimeType,
 | 
				
			||||||
    required String? hash,
 | 
					    required String? hash,
 | 
				
			||||||
    required int size,
 | 
					    required int size,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
// dart format width=80
 | 
					 | 
				
			||||||
// coverage:ignore-file
 | 
					 | 
				
			||||||
// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					// coverage:ignore-file
 | 
				
			||||||
// ignore_for_file: type=lint
 | 
					// ignore_for_file: type=lint
 | 
				
			||||||
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
					// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -16,7 +15,7 @@ T _$identity<T>(T value) => value;
 | 
				
			|||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
mixin _$UniversalFile {
 | 
					mixin _$UniversalFile {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 dynamic get data; UniversalFileType get type;
 | 
					 dynamic get data; UniversalFileType get type; bool get isLink;
 | 
				
			||||||
/// Create a copy of UniversalFile
 | 
					/// Create a copy of UniversalFile
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
@@ -29,16 +28,16 @@ $UniversalFileCopyWith<UniversalFile> get copyWith => _$UniversalFileCopyWithImp
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
bool operator ==(Object other) {
 | 
					bool operator ==(Object other) {
 | 
				
			||||||
  return identical(this, other) || (other.runtimeType == runtimeType&&other is UniversalFile&&const DeepCollectionEquality().equals(other.data, data)&&(identical(other.type, type) || other.type == type));
 | 
					  return identical(this, other) || (other.runtimeType == runtimeType&&other is UniversalFile&&const DeepCollectionEquality().equals(other.data, data)&&(identical(other.type, type) || other.type == type)&&(identical(other.isLink, isLink) || other.isLink == isLink));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
int get hashCode => Object.hash(runtimeType,const DeepCollectionEquality().hash(data),type);
 | 
					int get hashCode => Object.hash(runtimeType,const DeepCollectionEquality().hash(data),type,isLink);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
String toString() {
 | 
					String toString() {
 | 
				
			||||||
  return 'UniversalFile(data: $data, type: $type)';
 | 
					  return 'UniversalFile(data: $data, type: $type, isLink: $isLink)';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -49,7 +48,7 @@ abstract mixin class $UniversalFileCopyWith<$Res>  {
 | 
				
			|||||||
  factory $UniversalFileCopyWith(UniversalFile value, $Res Function(UniversalFile) _then) = _$UniversalFileCopyWithImpl;
 | 
					  factory $UniversalFileCopyWith(UniversalFile value, $Res Function(UniversalFile) _then) = _$UniversalFileCopyWithImpl;
 | 
				
			||||||
@useResult
 | 
					@useResult
 | 
				
			||||||
$Res call({
 | 
					$Res call({
 | 
				
			||||||
 dynamic data, UniversalFileType type
 | 
					 dynamic data, UniversalFileType type, bool isLink
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -66,26 +65,152 @@ class _$UniversalFileCopyWithImpl<$Res>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/// Create a copy of UniversalFile
 | 
					/// Create a copy of UniversalFile
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@pragma('vm:prefer-inline') @override $Res call({Object? data = freezed,Object? type = null,}) {
 | 
					@pragma('vm:prefer-inline') @override $Res call({Object? data = freezed,Object? type = null,Object? isLink = null,}) {
 | 
				
			||||||
  return _then(_self.copyWith(
 | 
					  return _then(_self.copyWith(
 | 
				
			||||||
data: freezed == data ? _self.data : data // ignore: cast_nullable_to_non_nullable
 | 
					data: freezed == data ? _self.data : data // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as dynamic,type: null == type ? _self.type : type // ignore: cast_nullable_to_non_nullable
 | 
					as dynamic,type: null == type ? _self.type : type // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as UniversalFileType,
 | 
					as UniversalFileType,isLink: null == isLink ? _self.isLink : isLink // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as bool,
 | 
				
			||||||
  ));
 | 
					  ));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [UniversalFile].
 | 
				
			||||||
 | 
					extension UniversalFilePatterns on UniversalFile {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _UniversalFile value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _UniversalFile() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _UniversalFile value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _UniversalFile():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _UniversalFile value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _UniversalFile() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( dynamic data,  UniversalFileType type,  bool isLink)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _UniversalFile() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.data,_that.type,_that.isLink);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( dynamic data,  UniversalFileType type,  bool isLink)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _UniversalFile():
 | 
				
			||||||
 | 
					return $default(_that.data,_that.type,_that.isLink);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( dynamic data,  UniversalFileType type,  bool isLink)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _UniversalFile() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.data,_that.type,_that.isLink);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class _UniversalFile extends UniversalFile {
 | 
					class _UniversalFile extends UniversalFile {
 | 
				
			||||||
  const _UniversalFile({required this.data, required this.type}): super._();
 | 
					  const _UniversalFile({required this.data, required this.type, this.isLink = false}): super._();
 | 
				
			||||||
  factory _UniversalFile.fromJson(Map<String, dynamic> json) => _$UniversalFileFromJson(json);
 | 
					  factory _UniversalFile.fromJson(Map<String, dynamic> json) => _$UniversalFileFromJson(json);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override final  dynamic data;
 | 
					@override final  dynamic data;
 | 
				
			||||||
@override final  UniversalFileType type;
 | 
					@override final  UniversalFileType type;
 | 
				
			||||||
 | 
					@override@JsonKey() final  bool isLink;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Create a copy of UniversalFile
 | 
					/// Create a copy of UniversalFile
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@@ -100,16 +225,16 @@ Map<String, dynamic> toJson() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
bool operator ==(Object other) {
 | 
					bool operator ==(Object other) {
 | 
				
			||||||
  return identical(this, other) || (other.runtimeType == runtimeType&&other is _UniversalFile&&const DeepCollectionEquality().equals(other.data, data)&&(identical(other.type, type) || other.type == type));
 | 
					  return identical(this, other) || (other.runtimeType == runtimeType&&other is _UniversalFile&&const DeepCollectionEquality().equals(other.data, data)&&(identical(other.type, type) || other.type == type)&&(identical(other.isLink, isLink) || other.isLink == isLink));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
int get hashCode => Object.hash(runtimeType,const DeepCollectionEquality().hash(data),type);
 | 
					int get hashCode => Object.hash(runtimeType,const DeepCollectionEquality().hash(data),type,isLink);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
String toString() {
 | 
					String toString() {
 | 
				
			||||||
  return 'UniversalFile(data: $data, type: $type)';
 | 
					  return 'UniversalFile(data: $data, type: $type, isLink: $isLink)';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -120,7 +245,7 @@ abstract mixin class _$UniversalFileCopyWith<$Res> implements $UniversalFileCopy
 | 
				
			|||||||
  factory _$UniversalFileCopyWith(_UniversalFile value, $Res Function(_UniversalFile) _then) = __$UniversalFileCopyWithImpl;
 | 
					  factory _$UniversalFileCopyWith(_UniversalFile value, $Res Function(_UniversalFile) _then) = __$UniversalFileCopyWithImpl;
 | 
				
			||||||
@override @useResult
 | 
					@override @useResult
 | 
				
			||||||
$Res call({
 | 
					$Res call({
 | 
				
			||||||
 dynamic data, UniversalFileType type
 | 
					 dynamic data, UniversalFileType type, bool isLink
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -137,11 +262,12 @@ class __$UniversalFileCopyWithImpl<$Res>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/// Create a copy of UniversalFile
 | 
					/// Create a copy of UniversalFile
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@override @pragma('vm:prefer-inline') $Res call({Object? data = freezed,Object? type = null,}) {
 | 
					@override @pragma('vm:prefer-inline') $Res call({Object? data = freezed,Object? type = null,Object? isLink = null,}) {
 | 
				
			||||||
  return _then(_UniversalFile(
 | 
					  return _then(_UniversalFile(
 | 
				
			||||||
data: freezed == data ? _self.data : data // ignore: cast_nullable_to_non_nullable
 | 
					data: freezed == data ? _self.data : data // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as dynamic,type: null == type ? _self.type : type // ignore: cast_nullable_to_non_nullable
 | 
					as dynamic,type: null == type ? _self.type : type // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as UniversalFileType,
 | 
					as UniversalFileType,isLink: null == isLink ? _self.isLink : isLink // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as bool,
 | 
				
			||||||
  ));
 | 
					  ));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -152,7 +278,7 @@ as UniversalFileType,
 | 
				
			|||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
mixin _$SnCloudFile {
 | 
					mixin _$SnCloudFile {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 String get id; String get name; String? get description; Map<String, dynamic>? get fileMeta; Map<String, dynamic>? get userMeta; String? get mimeType; String? get hash; int get size; DateTime? get uploadedAt; String? get uploadedTo; DateTime get createdAt; DateTime get updatedAt; DateTime? get deletedAt;
 | 
					 String get id; String get name; String? get description; Map<String, dynamic>? get fileMeta; Map<String, dynamic>? get userMeta; List<int> get sensitiveMarks; String? get mimeType; String? get hash; int get size; DateTime? get uploadedAt; String? get uploadedTo; DateTime get createdAt; DateTime get updatedAt; DateTime? get deletedAt;
 | 
				
			||||||
/// Create a copy of SnCloudFile
 | 
					/// Create a copy of SnCloudFile
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
@@ -165,16 +291,16 @@ $SnCloudFileCopyWith<SnCloudFile> get copyWith => _$SnCloudFileCopyWithImpl<SnCl
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
bool operator ==(Object other) {
 | 
					bool operator ==(Object other) {
 | 
				
			||||||
  return identical(this, other) || (other.runtimeType == runtimeType&&other is SnCloudFile&&(identical(other.id, id) || other.id == id)&&(identical(other.name, name) || other.name == name)&&(identical(other.description, description) || other.description == description)&&const DeepCollectionEquality().equals(other.fileMeta, fileMeta)&&const DeepCollectionEquality().equals(other.userMeta, userMeta)&&(identical(other.mimeType, mimeType) || other.mimeType == mimeType)&&(identical(other.hash, hash) || other.hash == hash)&&(identical(other.size, size) || other.size == size)&&(identical(other.uploadedAt, uploadedAt) || other.uploadedAt == uploadedAt)&&(identical(other.uploadedTo, uploadedTo) || other.uploadedTo == uploadedTo)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.updatedAt, updatedAt) || other.updatedAt == updatedAt)&&(identical(other.deletedAt, deletedAt) || other.deletedAt == deletedAt));
 | 
					  return identical(this, other) || (other.runtimeType == runtimeType&&other is SnCloudFile&&(identical(other.id, id) || other.id == id)&&(identical(other.name, name) || other.name == name)&&(identical(other.description, description) || other.description == description)&&const DeepCollectionEquality().equals(other.fileMeta, fileMeta)&&const DeepCollectionEquality().equals(other.userMeta, userMeta)&&const DeepCollectionEquality().equals(other.sensitiveMarks, sensitiveMarks)&&(identical(other.mimeType, mimeType) || other.mimeType == mimeType)&&(identical(other.hash, hash) || other.hash == hash)&&(identical(other.size, size) || other.size == size)&&(identical(other.uploadedAt, uploadedAt) || other.uploadedAt == uploadedAt)&&(identical(other.uploadedTo, uploadedTo) || other.uploadedTo == uploadedTo)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.updatedAt, updatedAt) || other.updatedAt == updatedAt)&&(identical(other.deletedAt, deletedAt) || other.deletedAt == deletedAt));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
int get hashCode => Object.hash(runtimeType,id,name,description,const DeepCollectionEquality().hash(fileMeta),const DeepCollectionEquality().hash(userMeta),mimeType,hash,size,uploadedAt,uploadedTo,createdAt,updatedAt,deletedAt);
 | 
					int get hashCode => Object.hash(runtimeType,id,name,description,const DeepCollectionEquality().hash(fileMeta),const DeepCollectionEquality().hash(userMeta),const DeepCollectionEquality().hash(sensitiveMarks),mimeType,hash,size,uploadedAt,uploadedTo,createdAt,updatedAt,deletedAt);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
String toString() {
 | 
					String toString() {
 | 
				
			||||||
  return 'SnCloudFile(id: $id, name: $name, description: $description, fileMeta: $fileMeta, userMeta: $userMeta, mimeType: $mimeType, hash: $hash, size: $size, uploadedAt: $uploadedAt, uploadedTo: $uploadedTo, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt)';
 | 
					  return 'SnCloudFile(id: $id, name: $name, description: $description, fileMeta: $fileMeta, userMeta: $userMeta, sensitiveMarks: $sensitiveMarks, mimeType: $mimeType, hash: $hash, size: $size, uploadedAt: $uploadedAt, uploadedTo: $uploadedTo, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt)';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -185,7 +311,7 @@ abstract mixin class $SnCloudFileCopyWith<$Res>  {
 | 
				
			|||||||
  factory $SnCloudFileCopyWith(SnCloudFile value, $Res Function(SnCloudFile) _then) = _$SnCloudFileCopyWithImpl;
 | 
					  factory $SnCloudFileCopyWith(SnCloudFile value, $Res Function(SnCloudFile) _then) = _$SnCloudFileCopyWithImpl;
 | 
				
			||||||
@useResult
 | 
					@useResult
 | 
				
			||||||
$Res call({
 | 
					$Res call({
 | 
				
			||||||
 String id, String name, String? description, Map<String, dynamic>? fileMeta, Map<String, dynamic>? userMeta, String? mimeType, String? hash, int size, DateTime? uploadedAt, String? uploadedTo, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt
 | 
					 String id, String name, String? description, Map<String, dynamic>? fileMeta, Map<String, dynamic>? userMeta, List<int> sensitiveMarks, String? mimeType, String? hash, int size, DateTime? uploadedAt, String? uploadedTo, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -202,14 +328,15 @@ class _$SnCloudFileCopyWithImpl<$Res>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/// Create a copy of SnCloudFile
 | 
					/// Create a copy of SnCloudFile
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@pragma('vm:prefer-inline') @override $Res call({Object? id = null,Object? name = null,Object? description = freezed,Object? fileMeta = freezed,Object? userMeta = freezed,Object? mimeType = freezed,Object? hash = freezed,Object? size = null,Object? uploadedAt = freezed,Object? uploadedTo = freezed,Object? createdAt = null,Object? updatedAt = null,Object? deletedAt = freezed,}) {
 | 
					@pragma('vm:prefer-inline') @override $Res call({Object? id = null,Object? name = null,Object? description = freezed,Object? fileMeta = freezed,Object? userMeta = freezed,Object? sensitiveMarks = null,Object? mimeType = freezed,Object? hash = freezed,Object? size = null,Object? uploadedAt = freezed,Object? uploadedTo = freezed,Object? createdAt = null,Object? updatedAt = null,Object? deletedAt = freezed,}) {
 | 
				
			||||||
  return _then(_self.copyWith(
 | 
					  return _then(_self.copyWith(
 | 
				
			||||||
id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
					id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,name: null == name ? _self.name : name // ignore: cast_nullable_to_non_nullable
 | 
					as String,name: null == name ? _self.name : name // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,description: freezed == description ? _self.description : description // ignore: cast_nullable_to_non_nullable
 | 
					as String,description: freezed == description ? _self.description : description // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String?,fileMeta: freezed == fileMeta ? _self.fileMeta : fileMeta // ignore: cast_nullable_to_non_nullable
 | 
					as String?,fileMeta: freezed == fileMeta ? _self.fileMeta : fileMeta // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as Map<String, dynamic>?,userMeta: freezed == userMeta ? _self.userMeta : userMeta // ignore: cast_nullable_to_non_nullable
 | 
					as Map<String, dynamic>?,userMeta: freezed == userMeta ? _self.userMeta : userMeta // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as Map<String, dynamic>?,mimeType: freezed == mimeType ? _self.mimeType : mimeType // ignore: cast_nullable_to_non_nullable
 | 
					as Map<String, dynamic>?,sensitiveMarks: null == sensitiveMarks ? _self.sensitiveMarks : sensitiveMarks // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as List<int>,mimeType: freezed == mimeType ? _self.mimeType : mimeType // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String?,hash: freezed == hash ? _self.hash : hash // ignore: cast_nullable_to_non_nullable
 | 
					as String?,hash: freezed == hash ? _self.hash : hash // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String?,size: null == size ? _self.size : size // ignore: cast_nullable_to_non_nullable
 | 
					as String?,size: null == size ? _self.size : size // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as int,uploadedAt: freezed == uploadedAt ? _self.uploadedAt : uploadedAt // ignore: cast_nullable_to_non_nullable
 | 
					as int,uploadedAt: freezed == uploadedAt ? _self.uploadedAt : uploadedAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
@@ -224,11 +351,135 @@ as DateTime?,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnCloudFile].
 | 
				
			||||||
 | 
					extension SnCloudFilePatterns on SnCloudFile {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnCloudFile value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnCloudFile() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnCloudFile value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnCloudFile():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnCloudFile value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnCloudFile() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  String name,  String? description,  Map<String, dynamic>? fileMeta,  Map<String, dynamic>? userMeta,  List<int> sensitiveMarks,  String? mimeType,  String? hash,  int size,  DateTime? uploadedAt,  String? uploadedTo,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnCloudFile() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.name,_that.description,_that.fileMeta,_that.userMeta,_that.sensitiveMarks,_that.mimeType,_that.hash,_that.size,_that.uploadedAt,_that.uploadedTo,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  String name,  String? description,  Map<String, dynamic>? fileMeta,  Map<String, dynamic>? userMeta,  List<int> sensitiveMarks,  String? mimeType,  String? hash,  int size,  DateTime? uploadedAt,  String? uploadedTo,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnCloudFile():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.name,_that.description,_that.fileMeta,_that.userMeta,_that.sensitiveMarks,_that.mimeType,_that.hash,_that.size,_that.uploadedAt,_that.uploadedTo,_that.createdAt,_that.updatedAt,_that.deletedAt);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  String name,  String? description,  Map<String, dynamic>? fileMeta,  Map<String, dynamic>? userMeta,  List<int> sensitiveMarks,  String? mimeType,  String? hash,  int size,  DateTime? uploadedAt,  String? uploadedTo,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnCloudFile() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.name,_that.description,_that.fileMeta,_that.userMeta,_that.sensitiveMarks,_that.mimeType,_that.hash,_that.size,_that.uploadedAt,_that.uploadedTo,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class _SnCloudFile implements SnCloudFile {
 | 
					class _SnCloudFile implements SnCloudFile {
 | 
				
			||||||
  const _SnCloudFile({required this.id, required this.name, required this.description, required final  Map<String, dynamic>? fileMeta, required final  Map<String, dynamic>? userMeta, required this.mimeType, required this.hash, required this.size, required this.uploadedAt, required this.uploadedTo, required this.createdAt, required this.updatedAt, required this.deletedAt}): _fileMeta = fileMeta,_userMeta = userMeta;
 | 
					  const _SnCloudFile({required this.id, required this.name, required this.description, required final  Map<String, dynamic>? fileMeta, required final  Map<String, dynamic>? userMeta, final  List<int> sensitiveMarks = const [], required this.mimeType, required this.hash, required this.size, required this.uploadedAt, required this.uploadedTo, required this.createdAt, required this.updatedAt, required this.deletedAt}): _fileMeta = fileMeta,_userMeta = userMeta,_sensitiveMarks = sensitiveMarks;
 | 
				
			||||||
  factory _SnCloudFile.fromJson(Map<String, dynamic> json) => _$SnCloudFileFromJson(json);
 | 
					  factory _SnCloudFile.fromJson(Map<String, dynamic> json) => _$SnCloudFileFromJson(json);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override final  String id;
 | 
					@override final  String id;
 | 
				
			||||||
@@ -252,6 +503,13 @@ class _SnCloudFile implements SnCloudFile {
 | 
				
			|||||||
  return EqualUnmodifiableMapView(value);
 | 
					  return EqualUnmodifiableMapView(value);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 final  List<int> _sensitiveMarks;
 | 
				
			||||||
 | 
					@override@JsonKey() List<int> get sensitiveMarks {
 | 
				
			||||||
 | 
					  if (_sensitiveMarks is EqualUnmodifiableListView) return _sensitiveMarks;
 | 
				
			||||||
 | 
					  // ignore: implicit_dynamic_type
 | 
				
			||||||
 | 
					  return EqualUnmodifiableListView(_sensitiveMarks);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override final  String? mimeType;
 | 
					@override final  String? mimeType;
 | 
				
			||||||
@override final  String? hash;
 | 
					@override final  String? hash;
 | 
				
			||||||
@override final  int size;
 | 
					@override final  int size;
 | 
				
			||||||
@@ -274,16 +532,16 @@ Map<String, dynamic> toJson() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
bool operator ==(Object other) {
 | 
					bool operator ==(Object other) {
 | 
				
			||||||
  return identical(this, other) || (other.runtimeType == runtimeType&&other is _SnCloudFile&&(identical(other.id, id) || other.id == id)&&(identical(other.name, name) || other.name == name)&&(identical(other.description, description) || other.description == description)&&const DeepCollectionEquality().equals(other._fileMeta, _fileMeta)&&const DeepCollectionEquality().equals(other._userMeta, _userMeta)&&(identical(other.mimeType, mimeType) || other.mimeType == mimeType)&&(identical(other.hash, hash) || other.hash == hash)&&(identical(other.size, size) || other.size == size)&&(identical(other.uploadedAt, uploadedAt) || other.uploadedAt == uploadedAt)&&(identical(other.uploadedTo, uploadedTo) || other.uploadedTo == uploadedTo)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.updatedAt, updatedAt) || other.updatedAt == updatedAt)&&(identical(other.deletedAt, deletedAt) || other.deletedAt == deletedAt));
 | 
					  return identical(this, other) || (other.runtimeType == runtimeType&&other is _SnCloudFile&&(identical(other.id, id) || other.id == id)&&(identical(other.name, name) || other.name == name)&&(identical(other.description, description) || other.description == description)&&const DeepCollectionEquality().equals(other._fileMeta, _fileMeta)&&const DeepCollectionEquality().equals(other._userMeta, _userMeta)&&const DeepCollectionEquality().equals(other._sensitiveMarks, _sensitiveMarks)&&(identical(other.mimeType, mimeType) || other.mimeType == mimeType)&&(identical(other.hash, hash) || other.hash == hash)&&(identical(other.size, size) || other.size == size)&&(identical(other.uploadedAt, uploadedAt) || other.uploadedAt == uploadedAt)&&(identical(other.uploadedTo, uploadedTo) || other.uploadedTo == uploadedTo)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.updatedAt, updatedAt) || other.updatedAt == updatedAt)&&(identical(other.deletedAt, deletedAt) || other.deletedAt == deletedAt));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
int get hashCode => Object.hash(runtimeType,id,name,description,const DeepCollectionEquality().hash(_fileMeta),const DeepCollectionEquality().hash(_userMeta),mimeType,hash,size,uploadedAt,uploadedTo,createdAt,updatedAt,deletedAt);
 | 
					int get hashCode => Object.hash(runtimeType,id,name,description,const DeepCollectionEquality().hash(_fileMeta),const DeepCollectionEquality().hash(_userMeta),const DeepCollectionEquality().hash(_sensitiveMarks),mimeType,hash,size,uploadedAt,uploadedTo,createdAt,updatedAt,deletedAt);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
String toString() {
 | 
					String toString() {
 | 
				
			||||||
  return 'SnCloudFile(id: $id, name: $name, description: $description, fileMeta: $fileMeta, userMeta: $userMeta, mimeType: $mimeType, hash: $hash, size: $size, uploadedAt: $uploadedAt, uploadedTo: $uploadedTo, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt)';
 | 
					  return 'SnCloudFile(id: $id, name: $name, description: $description, fileMeta: $fileMeta, userMeta: $userMeta, sensitiveMarks: $sensitiveMarks, mimeType: $mimeType, hash: $hash, size: $size, uploadedAt: $uploadedAt, uploadedTo: $uploadedTo, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt)';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -294,7 +552,7 @@ abstract mixin class _$SnCloudFileCopyWith<$Res> implements $SnCloudFileCopyWith
 | 
				
			|||||||
  factory _$SnCloudFileCopyWith(_SnCloudFile value, $Res Function(_SnCloudFile) _then) = __$SnCloudFileCopyWithImpl;
 | 
					  factory _$SnCloudFileCopyWith(_SnCloudFile value, $Res Function(_SnCloudFile) _then) = __$SnCloudFileCopyWithImpl;
 | 
				
			||||||
@override @useResult
 | 
					@override @useResult
 | 
				
			||||||
$Res call({
 | 
					$Res call({
 | 
				
			||||||
 String id, String name, String? description, Map<String, dynamic>? fileMeta, Map<String, dynamic>? userMeta, String? mimeType, String? hash, int size, DateTime? uploadedAt, String? uploadedTo, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt
 | 
					 String id, String name, String? description, Map<String, dynamic>? fileMeta, Map<String, dynamic>? userMeta, List<int> sensitiveMarks, String? mimeType, String? hash, int size, DateTime? uploadedAt, String? uploadedTo, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -311,14 +569,15 @@ class __$SnCloudFileCopyWithImpl<$Res>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/// Create a copy of SnCloudFile
 | 
					/// Create a copy of SnCloudFile
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@override @pragma('vm:prefer-inline') $Res call({Object? id = null,Object? name = null,Object? description = freezed,Object? fileMeta = freezed,Object? userMeta = freezed,Object? mimeType = freezed,Object? hash = freezed,Object? size = null,Object? uploadedAt = freezed,Object? uploadedTo = freezed,Object? createdAt = null,Object? updatedAt = null,Object? deletedAt = freezed,}) {
 | 
					@override @pragma('vm:prefer-inline') $Res call({Object? id = null,Object? name = null,Object? description = freezed,Object? fileMeta = freezed,Object? userMeta = freezed,Object? sensitiveMarks = null,Object? mimeType = freezed,Object? hash = freezed,Object? size = null,Object? uploadedAt = freezed,Object? uploadedTo = freezed,Object? createdAt = null,Object? updatedAt = null,Object? deletedAt = freezed,}) {
 | 
				
			||||||
  return _then(_SnCloudFile(
 | 
					  return _then(_SnCloudFile(
 | 
				
			||||||
id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
					id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,name: null == name ? _self.name : name // ignore: cast_nullable_to_non_nullable
 | 
					as String,name: null == name ? _self.name : name // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,description: freezed == description ? _self.description : description // ignore: cast_nullable_to_non_nullable
 | 
					as String,description: freezed == description ? _self.description : description // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String?,fileMeta: freezed == fileMeta ? _self._fileMeta : fileMeta // ignore: cast_nullable_to_non_nullable
 | 
					as String?,fileMeta: freezed == fileMeta ? _self._fileMeta : fileMeta // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as Map<String, dynamic>?,userMeta: freezed == userMeta ? _self._userMeta : userMeta // ignore: cast_nullable_to_non_nullable
 | 
					as Map<String, dynamic>?,userMeta: freezed == userMeta ? _self._userMeta : userMeta // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as Map<String, dynamic>?,mimeType: freezed == mimeType ? _self.mimeType : mimeType // ignore: cast_nullable_to_non_nullable
 | 
					as Map<String, dynamic>?,sensitiveMarks: null == sensitiveMarks ? _self._sensitiveMarks : sensitiveMarks // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as List<int>,mimeType: freezed == mimeType ? _self.mimeType : mimeType // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String?,hash: freezed == hash ? _self.hash : hash // ignore: cast_nullable_to_non_nullable
 | 
					as String?,hash: freezed == hash ? _self.hash : hash // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String?,size: null == size ? _self.size : size // ignore: cast_nullable_to_non_nullable
 | 
					as String?,size: null == size ? _self.size : size // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as int,uploadedAt: freezed == uploadedAt ? _self.uploadedAt : uploadedAt // ignore: cast_nullable_to_non_nullable
 | 
					as int,uploadedAt: freezed == uploadedAt ? _self.uploadedAt : uploadedAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,12 +10,14 @@ _UniversalFile _$UniversalFileFromJson(Map<String, dynamic> json) =>
 | 
				
			|||||||
    _UniversalFile(
 | 
					    _UniversalFile(
 | 
				
			||||||
      data: json['data'],
 | 
					      data: json['data'],
 | 
				
			||||||
      type: $enumDecode(_$UniversalFileTypeEnumMap, json['type']),
 | 
					      type: $enumDecode(_$UniversalFileTypeEnumMap, json['type']),
 | 
				
			||||||
 | 
					      isLink: json['is_link'] as bool? ?? false,
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Map<String, dynamic> _$UniversalFileToJson(_UniversalFile instance) =>
 | 
					Map<String, dynamic> _$UniversalFileToJson(_UniversalFile instance) =>
 | 
				
			||||||
    <String, dynamic>{
 | 
					    <String, dynamic>{
 | 
				
			||||||
      'data': instance.data,
 | 
					      'data': instance.data,
 | 
				
			||||||
      'type': _$UniversalFileTypeEnumMap[instance.type]!,
 | 
					      'type': _$UniversalFileTypeEnumMap[instance.type]!,
 | 
				
			||||||
 | 
					      'is_link': instance.isLink,
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const _$UniversalFileTypeEnumMap = {
 | 
					const _$UniversalFileTypeEnumMap = {
 | 
				
			||||||
@@ -31,6 +33,11 @@ _SnCloudFile _$SnCloudFileFromJson(Map<String, dynamic> json) => _SnCloudFile(
 | 
				
			|||||||
  description: json['description'] as String?,
 | 
					  description: json['description'] as String?,
 | 
				
			||||||
  fileMeta: json['file_meta'] as Map<String, dynamic>?,
 | 
					  fileMeta: json['file_meta'] as Map<String, dynamic>?,
 | 
				
			||||||
  userMeta: json['user_meta'] as Map<String, dynamic>?,
 | 
					  userMeta: json['user_meta'] as Map<String, dynamic>?,
 | 
				
			||||||
 | 
					  sensitiveMarks:
 | 
				
			||||||
 | 
					      (json['sensitive_marks'] as List<dynamic>?)
 | 
				
			||||||
 | 
					          ?.map((e) => (e as num).toInt())
 | 
				
			||||||
 | 
					          .toList() ??
 | 
				
			||||||
 | 
					      const [],
 | 
				
			||||||
  mimeType: json['mime_type'] as String?,
 | 
					  mimeType: json['mime_type'] as String?,
 | 
				
			||||||
  hash: json['hash'] as String?,
 | 
					  hash: json['hash'] as String?,
 | 
				
			||||||
  size: (json['size'] as num).toInt(),
 | 
					  size: (json['size'] as num).toInt(),
 | 
				
			||||||
@@ -54,6 +61,7 @@ Map<String, dynamic> _$SnCloudFileToJson(_SnCloudFile instance) =>
 | 
				
			|||||||
      'description': instance.description,
 | 
					      'description': instance.description,
 | 
				
			||||||
      'file_meta': instance.fileMeta,
 | 
					      'file_meta': instance.fileMeta,
 | 
				
			||||||
      'user_meta': instance.userMeta,
 | 
					      'user_meta': instance.userMeta,
 | 
				
			||||||
 | 
					      'sensitive_marks': instance.sensitiveMarks,
 | 
				
			||||||
      'mime_type': instance.mimeType,
 | 
					      'mime_type': instance.mimeType,
 | 
				
			||||||
      'hash': instance.hash,
 | 
					      'hash': instance.hash,
 | 
				
			||||||
      'size': instance.size,
 | 
					      'size': instance.size,
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										108
									
								
								lib/models/poll.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										108
									
								
								lib/models/poll.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,108 @@
 | 
				
			|||||||
 | 
					import 'package:freezed_annotation/freezed_annotation.dart';
 | 
				
			||||||
 | 
					import 'package:island/models/publisher.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					part 'poll.freezed.dart';
 | 
				
			||||||
 | 
					part 'poll.g.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@freezed
 | 
				
			||||||
 | 
					sealed class SnPollWithStats with _$SnPollWithStats {
 | 
				
			||||||
 | 
					  const factory SnPollWithStats({
 | 
				
			||||||
 | 
					    required Map<String, dynamic>? userAnswer,
 | 
				
			||||||
 | 
					    @Default({}) Map<String, dynamic> stats,
 | 
				
			||||||
 | 
					    required String id,
 | 
				
			||||||
 | 
					    required List<SnPollQuestion> questions,
 | 
				
			||||||
 | 
					    String? title,
 | 
				
			||||||
 | 
					    String? description,
 | 
				
			||||||
 | 
					    DateTime? endedAt,
 | 
				
			||||||
 | 
					    required String publisherId,
 | 
				
			||||||
 | 
					    required DateTime createdAt,
 | 
				
			||||||
 | 
					    required DateTime updatedAt,
 | 
				
			||||||
 | 
					    DateTime? deletedAt,
 | 
				
			||||||
 | 
					  }) = _SnPollWithStats;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory SnPollWithStats.fromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					      _$SnPollWithStatsFromJson(json);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@freezed
 | 
				
			||||||
 | 
					sealed class SnPoll with _$SnPoll {
 | 
				
			||||||
 | 
					  const factory SnPoll({
 | 
				
			||||||
 | 
					    required String id,
 | 
				
			||||||
 | 
					    required List<SnPollQuestion> questions,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    String? title,
 | 
				
			||||||
 | 
					    String? description,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    DateTime? endedAt,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    required String publisherId,
 | 
				
			||||||
 | 
					    SnPublisher? publisher,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // ModelBase fields
 | 
				
			||||||
 | 
					    required DateTime createdAt,
 | 
				
			||||||
 | 
					    required DateTime updatedAt,
 | 
				
			||||||
 | 
					    DateTime? deletedAt,
 | 
				
			||||||
 | 
					  }) = _SnPoll;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory SnPoll.fromJson(Map<String, dynamic> json) => _$SnPollFromJson(json);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@freezed
 | 
				
			||||||
 | 
					sealed class SnPollQuestion with _$SnPollQuestion {
 | 
				
			||||||
 | 
					  const factory SnPollQuestion({
 | 
				
			||||||
 | 
					    required String id,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    required SnPollQuestionType type,
 | 
				
			||||||
 | 
					    List<SnPollOption>? options,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    required String title,
 | 
				
			||||||
 | 
					    String? description,
 | 
				
			||||||
 | 
					    required int order,
 | 
				
			||||||
 | 
					    required bool isRequired,
 | 
				
			||||||
 | 
					  }) = _SnPollQuestion;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory SnPollQuestion.fromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					      _$SnPollQuestionFromJson(json);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@freezed
 | 
				
			||||||
 | 
					sealed class SnPollOption with _$SnPollOption {
 | 
				
			||||||
 | 
					  const factory SnPollOption({
 | 
				
			||||||
 | 
					    required String id,
 | 
				
			||||||
 | 
					    required String label,
 | 
				
			||||||
 | 
					    String? description,
 | 
				
			||||||
 | 
					    required int order,
 | 
				
			||||||
 | 
					  }) = _SnPollOption;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory SnPollOption.fromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					      _$SnPollOptionFromJson(json);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					enum SnPollQuestionType {
 | 
				
			||||||
 | 
					  @JsonValue(0)
 | 
				
			||||||
 | 
					  singleChoice,
 | 
				
			||||||
 | 
					  @JsonValue(1)
 | 
				
			||||||
 | 
					  multipleChoice,
 | 
				
			||||||
 | 
					  @JsonValue(2)
 | 
				
			||||||
 | 
					  yesNo,
 | 
				
			||||||
 | 
					  @JsonValue(3)
 | 
				
			||||||
 | 
					  rating,
 | 
				
			||||||
 | 
					  @JsonValue(4)
 | 
				
			||||||
 | 
					  freeText,
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@freezed
 | 
				
			||||||
 | 
					sealed class SnPollAnswer with _$SnPollAnswer {
 | 
				
			||||||
 | 
					  const factory SnPollAnswer({
 | 
				
			||||||
 | 
					    required String id,
 | 
				
			||||||
 | 
					    required Map<String, dynamic> answer,
 | 
				
			||||||
 | 
					    required String accountId,
 | 
				
			||||||
 | 
					    required String pollId,
 | 
				
			||||||
 | 
					    required DateTime createdAt,
 | 
				
			||||||
 | 
					    required DateTime updatedAt,
 | 
				
			||||||
 | 
					    required DateTime? deletedAt,
 | 
				
			||||||
 | 
					  }) = _SnPollAnswer;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  factory SnPollAnswer.fromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					      _$SnPollAnswerFromJson(json);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										1467
									
								
								lib/models/poll.freezed.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1467
									
								
								lib/models/poll.freezed.dart
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										158
									
								
								lib/models/poll.g.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										158
									
								
								lib/models/poll.g.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,158 @@
 | 
				
			|||||||
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					part of 'poll.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					// JsonSerializableGenerator
 | 
				
			||||||
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_SnPollWithStats _$SnPollWithStatsFromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					    _SnPollWithStats(
 | 
				
			||||||
 | 
					      userAnswer: json['user_answer'] as Map<String, dynamic>?,
 | 
				
			||||||
 | 
					      stats: json['stats'] as Map<String, dynamic>? ?? const {},
 | 
				
			||||||
 | 
					      id: json['id'] as String,
 | 
				
			||||||
 | 
					      questions:
 | 
				
			||||||
 | 
					          (json['questions'] as List<dynamic>)
 | 
				
			||||||
 | 
					              .map((e) => SnPollQuestion.fromJson(e as Map<String, dynamic>))
 | 
				
			||||||
 | 
					              .toList(),
 | 
				
			||||||
 | 
					      title: json['title'] as String?,
 | 
				
			||||||
 | 
					      description: json['description'] as String?,
 | 
				
			||||||
 | 
					      endedAt:
 | 
				
			||||||
 | 
					          json['ended_at'] == null
 | 
				
			||||||
 | 
					              ? null
 | 
				
			||||||
 | 
					              : DateTime.parse(json['ended_at'] as String),
 | 
				
			||||||
 | 
					      publisherId: json['publisher_id'] as String,
 | 
				
			||||||
 | 
					      createdAt: DateTime.parse(json['created_at'] as String),
 | 
				
			||||||
 | 
					      updatedAt: DateTime.parse(json['updated_at'] as String),
 | 
				
			||||||
 | 
					      deletedAt:
 | 
				
			||||||
 | 
					          json['deleted_at'] == null
 | 
				
			||||||
 | 
					              ? null
 | 
				
			||||||
 | 
					              : DateTime.parse(json['deleted_at'] as String),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$SnPollWithStatsToJson(_SnPollWithStats instance) =>
 | 
				
			||||||
 | 
					    <String, dynamic>{
 | 
				
			||||||
 | 
					      'user_answer': instance.userAnswer,
 | 
				
			||||||
 | 
					      'stats': instance.stats,
 | 
				
			||||||
 | 
					      'id': instance.id,
 | 
				
			||||||
 | 
					      'questions': instance.questions.map((e) => e.toJson()).toList(),
 | 
				
			||||||
 | 
					      'title': instance.title,
 | 
				
			||||||
 | 
					      'description': instance.description,
 | 
				
			||||||
 | 
					      'ended_at': instance.endedAt?.toIso8601String(),
 | 
				
			||||||
 | 
					      'publisher_id': instance.publisherId,
 | 
				
			||||||
 | 
					      'created_at': instance.createdAt.toIso8601String(),
 | 
				
			||||||
 | 
					      'updated_at': instance.updatedAt.toIso8601String(),
 | 
				
			||||||
 | 
					      'deleted_at': instance.deletedAt?.toIso8601String(),
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_SnPoll _$SnPollFromJson(Map<String, dynamic> json) => _SnPoll(
 | 
				
			||||||
 | 
					  id: json['id'] as String,
 | 
				
			||||||
 | 
					  questions:
 | 
				
			||||||
 | 
					      (json['questions'] as List<dynamic>)
 | 
				
			||||||
 | 
					          .map((e) => SnPollQuestion.fromJson(e as Map<String, dynamic>))
 | 
				
			||||||
 | 
					          .toList(),
 | 
				
			||||||
 | 
					  title: json['title'] as String?,
 | 
				
			||||||
 | 
					  description: json['description'] as String?,
 | 
				
			||||||
 | 
					  endedAt:
 | 
				
			||||||
 | 
					      json['ended_at'] == null
 | 
				
			||||||
 | 
					          ? null
 | 
				
			||||||
 | 
					          : DateTime.parse(json['ended_at'] as String),
 | 
				
			||||||
 | 
					  publisherId: json['publisher_id'] as String,
 | 
				
			||||||
 | 
					  publisher:
 | 
				
			||||||
 | 
					      json['publisher'] == null
 | 
				
			||||||
 | 
					          ? null
 | 
				
			||||||
 | 
					          : SnPublisher.fromJson(json['publisher'] as Map<String, dynamic>),
 | 
				
			||||||
 | 
					  createdAt: DateTime.parse(json['created_at'] as String),
 | 
				
			||||||
 | 
					  updatedAt: DateTime.parse(json['updated_at'] as String),
 | 
				
			||||||
 | 
					  deletedAt:
 | 
				
			||||||
 | 
					      json['deleted_at'] == null
 | 
				
			||||||
 | 
					          ? null
 | 
				
			||||||
 | 
					          : DateTime.parse(json['deleted_at'] as String),
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$SnPollToJson(_SnPoll instance) => <String, dynamic>{
 | 
				
			||||||
 | 
					  'id': instance.id,
 | 
				
			||||||
 | 
					  'questions': instance.questions.map((e) => e.toJson()).toList(),
 | 
				
			||||||
 | 
					  'title': instance.title,
 | 
				
			||||||
 | 
					  'description': instance.description,
 | 
				
			||||||
 | 
					  'ended_at': instance.endedAt?.toIso8601String(),
 | 
				
			||||||
 | 
					  'publisher_id': instance.publisherId,
 | 
				
			||||||
 | 
					  'publisher': instance.publisher?.toJson(),
 | 
				
			||||||
 | 
					  'created_at': instance.createdAt.toIso8601String(),
 | 
				
			||||||
 | 
					  'updated_at': instance.updatedAt.toIso8601String(),
 | 
				
			||||||
 | 
					  'deleted_at': instance.deletedAt?.toIso8601String(),
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_SnPollQuestion _$SnPollQuestionFromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					    _SnPollQuestion(
 | 
				
			||||||
 | 
					      id: json['id'] as String,
 | 
				
			||||||
 | 
					      type: $enumDecode(_$SnPollQuestionTypeEnumMap, json['type']),
 | 
				
			||||||
 | 
					      options:
 | 
				
			||||||
 | 
					          (json['options'] as List<dynamic>?)
 | 
				
			||||||
 | 
					              ?.map((e) => SnPollOption.fromJson(e as Map<String, dynamic>))
 | 
				
			||||||
 | 
					              .toList(),
 | 
				
			||||||
 | 
					      title: json['title'] as String,
 | 
				
			||||||
 | 
					      description: json['description'] as String?,
 | 
				
			||||||
 | 
					      order: (json['order'] as num).toInt(),
 | 
				
			||||||
 | 
					      isRequired: json['is_required'] as bool,
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$SnPollQuestionToJson(_SnPollQuestion instance) =>
 | 
				
			||||||
 | 
					    <String, dynamic>{
 | 
				
			||||||
 | 
					      'id': instance.id,
 | 
				
			||||||
 | 
					      'type': _$SnPollQuestionTypeEnumMap[instance.type]!,
 | 
				
			||||||
 | 
					      'options': instance.options?.map((e) => e.toJson()).toList(),
 | 
				
			||||||
 | 
					      'title': instance.title,
 | 
				
			||||||
 | 
					      'description': instance.description,
 | 
				
			||||||
 | 
					      'order': instance.order,
 | 
				
			||||||
 | 
					      'is_required': instance.isRequired,
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const _$SnPollQuestionTypeEnumMap = {
 | 
				
			||||||
 | 
					  SnPollQuestionType.singleChoice: 0,
 | 
				
			||||||
 | 
					  SnPollQuestionType.multipleChoice: 1,
 | 
				
			||||||
 | 
					  SnPollQuestionType.yesNo: 2,
 | 
				
			||||||
 | 
					  SnPollQuestionType.rating: 3,
 | 
				
			||||||
 | 
					  SnPollQuestionType.freeText: 4,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_SnPollOption _$SnPollOptionFromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					    _SnPollOption(
 | 
				
			||||||
 | 
					      id: json['id'] as String,
 | 
				
			||||||
 | 
					      label: json['label'] as String,
 | 
				
			||||||
 | 
					      description: json['description'] as String?,
 | 
				
			||||||
 | 
					      order: (json['order'] as num).toInt(),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$SnPollOptionToJson(_SnPollOption instance) =>
 | 
				
			||||||
 | 
					    <String, dynamic>{
 | 
				
			||||||
 | 
					      'id': instance.id,
 | 
				
			||||||
 | 
					      'label': instance.label,
 | 
				
			||||||
 | 
					      'description': instance.description,
 | 
				
			||||||
 | 
					      'order': instance.order,
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					_SnPollAnswer _$SnPollAnswerFromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 | 
					    _SnPollAnswer(
 | 
				
			||||||
 | 
					      id: json['id'] as String,
 | 
				
			||||||
 | 
					      answer: json['answer'] as Map<String, dynamic>,
 | 
				
			||||||
 | 
					      accountId: json['account_id'] as String,
 | 
				
			||||||
 | 
					      pollId: json['poll_id'] as String,
 | 
				
			||||||
 | 
					      createdAt: DateTime.parse(json['created_at'] as String),
 | 
				
			||||||
 | 
					      updatedAt: DateTime.parse(json['updated_at'] as String),
 | 
				
			||||||
 | 
					      deletedAt:
 | 
				
			||||||
 | 
					          json['deleted_at'] == null
 | 
				
			||||||
 | 
					              ? null
 | 
				
			||||||
 | 
					              : DateTime.parse(json['deleted_at'] as String),
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Map<String, dynamic> _$SnPollAnswerToJson(_SnPollAnswer instance) =>
 | 
				
			||||||
 | 
					    <String, dynamic>{
 | 
				
			||||||
 | 
					      'id': instance.id,
 | 
				
			||||||
 | 
					      'answer': instance.answer,
 | 
				
			||||||
 | 
					      'account_id': instance.accountId,
 | 
				
			||||||
 | 
					      'poll_id': instance.pollId,
 | 
				
			||||||
 | 
					      'created_at': instance.createdAt.toIso8601String(),
 | 
				
			||||||
 | 
					      'updated_at': instance.updatedAt.toIso8601String(),
 | 
				
			||||||
 | 
					      'deleted_at': instance.deletedAt?.toIso8601String(),
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
@@ -3,6 +3,7 @@ import 'package:island/models/file.dart';
 | 
				
			|||||||
import 'package:island/models/post_category.dart';
 | 
					import 'package:island/models/post_category.dart';
 | 
				
			||||||
import 'package:island/models/post_tag.dart';
 | 
					import 'package:island/models/post_tag.dart';
 | 
				
			||||||
import 'package:island/models/publisher.dart';
 | 
					import 'package:island/models/publisher.dart';
 | 
				
			||||||
 | 
					import 'package:island/models/realm.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
part 'post.freezed.dart';
 | 
					part 'post.freezed.dart';
 | 
				
			||||||
part 'post.g.dart';
 | 
					part 'post.g.dart';
 | 
				
			||||||
@@ -18,6 +19,7 @@ sealed class SnPost with _$SnPost {
 | 
				
			|||||||
    @Default(null) DateTime? publishedAt,
 | 
					    @Default(null) DateTime? publishedAt,
 | 
				
			||||||
    @Default(0) int visibility,
 | 
					    @Default(0) int visibility,
 | 
				
			||||||
    String? content,
 | 
					    String? content,
 | 
				
			||||||
 | 
					    String? slug,
 | 
				
			||||||
    @Default(0) int type,
 | 
					    @Default(0) int type,
 | 
				
			||||||
    Map<String, dynamic>? meta,
 | 
					    Map<String, dynamic>? meta,
 | 
				
			||||||
    @Default(0) int viewsUnique,
 | 
					    @Default(0) int viewsUnique,
 | 
				
			||||||
@@ -31,12 +33,15 @@ sealed class SnPost with _$SnPost {
 | 
				
			|||||||
    SnPost? repliedPost,
 | 
					    SnPost? repliedPost,
 | 
				
			||||||
    String? forwardedPostId,
 | 
					    String? forwardedPostId,
 | 
				
			||||||
    SnPost? forwardedPost,
 | 
					    SnPost? forwardedPost,
 | 
				
			||||||
 | 
					    String? realmId,
 | 
				
			||||||
 | 
					    SnRealm? realm,
 | 
				
			||||||
    @Default([]) List<SnCloudFile> attachments,
 | 
					    @Default([]) List<SnCloudFile> attachments,
 | 
				
			||||||
    required SnPublisher publisher,
 | 
					    required SnPublisher publisher,
 | 
				
			||||||
    @Default({}) Map<String, int> reactionsCount,
 | 
					    @Default({}) Map<String, int> reactionsCount,
 | 
				
			||||||
 | 
					    @Default({}) Map<String, bool> reactionsMade,
 | 
				
			||||||
    @Default([]) List<dynamic> reactions,
 | 
					    @Default([]) List<dynamic> reactions,
 | 
				
			||||||
    @Default([]) List<PostTag> tags,
 | 
					    @Default([]) List<SnPostTag> tags,
 | 
				
			||||||
    @Default([]) List<PostCategory> categories,
 | 
					    @Default([]) List<SnPostCategory> categories,
 | 
				
			||||||
    @Default([]) List<dynamic> collections,
 | 
					    @Default([]) List<dynamic> collections,
 | 
				
			||||||
    @Default(null) DateTime? createdAt,
 | 
					    @Default(null) DateTime? createdAt,
 | 
				
			||||||
    @Default(null) DateTime? updatedAt,
 | 
					    @Default(null) DateTime? updatedAt,
 | 
				
			||||||
@@ -77,6 +82,13 @@ sealed class SnSubscriptionStatus with _$SnSubscriptionStatus {
 | 
				
			|||||||
sealed class ReactInfo with _$ReactInfo {
 | 
					sealed class ReactInfo with _$ReactInfo {
 | 
				
			||||||
  const factory ReactInfo({required String icon, required int attitude}) =
 | 
					  const factory ReactInfo({required String icon, required int attitude}) =
 | 
				
			||||||
      _ReactInfo;
 | 
					      _ReactInfo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  static String getTranslationKey(String templateKey) {
 | 
				
			||||||
 | 
					    final parts = templateKey.split('_');
 | 
				
			||||||
 | 
					    final camelCase =
 | 
				
			||||||
 | 
					        parts.map((p) => p[0].toUpperCase() + p.substring(1)).join();
 | 
				
			||||||
 | 
					    return 'reaction$camelCase';
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const Map<String, ReactInfo> kReactionTemplates = {
 | 
					const Map<String, ReactInfo> kReactionTemplates = {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
// dart format width=80
 | 
					 | 
				
			||||||
// coverage:ignore-file
 | 
					 | 
				
			||||||
// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					// coverage:ignore-file
 | 
				
			||||||
// ignore_for_file: type=lint
 | 
					// ignore_for_file: type=lint
 | 
				
			||||||
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
					// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -16,7 +15,7 @@ T _$identity<T>(T value) => value;
 | 
				
			|||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
mixin _$SnPost {
 | 
					mixin _$SnPost {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 String get id; String? get title; String? get description; String? get language; DateTime? get editedAt; DateTime? get publishedAt; int get visibility; String? get content; int get type; Map<String, dynamic>? get meta; int get viewsUnique; int get viewsTotal; int get upvotes; int get downvotes; int get repliesCount; String? get threadedPostId; SnPost? get threadedPost; String? get repliedPostId; SnPost? get repliedPost; String? get forwardedPostId; SnPost? get forwardedPost; List<SnCloudFile> get attachments; SnPublisher get publisher; Map<String, int> get reactionsCount; List<dynamic> get reactions; List<PostTag> get tags; List<PostCategory> get categories; List<dynamic> get collections; DateTime? get createdAt; DateTime? get updatedAt; DateTime? get deletedAt; bool get isTruncated;
 | 
					 String get id; String? get title; String? get description; String? get language; DateTime? get editedAt; DateTime? get publishedAt; int get visibility; String? get content; String? get slug; int get type; Map<String, dynamic>? get meta; int get viewsUnique; int get viewsTotal; int get upvotes; int get downvotes; int get repliesCount; String? get threadedPostId; SnPost? get threadedPost; String? get repliedPostId; SnPost? get repliedPost; String? get forwardedPostId; SnPost? get forwardedPost; String? get realmId; SnRealm? get realm; List<SnCloudFile> get attachments; SnPublisher get publisher; Map<String, int> get reactionsCount; Map<String, bool> get reactionsMade; List<dynamic> get reactions; List<SnPostTag> get tags; List<SnPostCategory> get categories; List<dynamic> get collections; DateTime? get createdAt; DateTime? get updatedAt; DateTime? get deletedAt; bool get isTruncated;
 | 
				
			||||||
/// Create a copy of SnPost
 | 
					/// Create a copy of SnPost
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
@@ -29,16 +28,16 @@ $SnPostCopyWith<SnPost> get copyWith => _$SnPostCopyWithImpl<SnPost>(this as SnP
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
bool operator ==(Object other) {
 | 
					bool operator ==(Object other) {
 | 
				
			||||||
  return identical(this, other) || (other.runtimeType == runtimeType&&other is SnPost&&(identical(other.id, id) || other.id == id)&&(identical(other.title, title) || other.title == title)&&(identical(other.description, description) || other.description == description)&&(identical(other.language, language) || other.language == language)&&(identical(other.editedAt, editedAt) || other.editedAt == editedAt)&&(identical(other.publishedAt, publishedAt) || other.publishedAt == publishedAt)&&(identical(other.visibility, visibility) || other.visibility == visibility)&&(identical(other.content, content) || other.content == content)&&(identical(other.type, type) || other.type == type)&&const DeepCollectionEquality().equals(other.meta, meta)&&(identical(other.viewsUnique, viewsUnique) || other.viewsUnique == viewsUnique)&&(identical(other.viewsTotal, viewsTotal) || other.viewsTotal == viewsTotal)&&(identical(other.upvotes, upvotes) || other.upvotes == upvotes)&&(identical(other.downvotes, downvotes) || other.downvotes == downvotes)&&(identical(other.repliesCount, repliesCount) || other.repliesCount == repliesCount)&&(identical(other.threadedPostId, threadedPostId) || other.threadedPostId == threadedPostId)&&(identical(other.threadedPost, threadedPost) || other.threadedPost == threadedPost)&&(identical(other.repliedPostId, repliedPostId) || other.repliedPostId == repliedPostId)&&(identical(other.repliedPost, repliedPost) || other.repliedPost == repliedPost)&&(identical(other.forwardedPostId, forwardedPostId) || other.forwardedPostId == forwardedPostId)&&(identical(other.forwardedPost, forwardedPost) || other.forwardedPost == forwardedPost)&&const DeepCollectionEquality().equals(other.attachments, attachments)&&(identical(other.publisher, publisher) || other.publisher == publisher)&&const DeepCollectionEquality().equals(other.reactionsCount, reactionsCount)&&const DeepCollectionEquality().equals(other.reactions, reactions)&&const DeepCollectionEquality().equals(other.tags, tags)&&const DeepCollectionEquality().equals(other.categories, categories)&&const DeepCollectionEquality().equals(other.collections, collections)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.updatedAt, updatedAt) || other.updatedAt == updatedAt)&&(identical(other.deletedAt, deletedAt) || other.deletedAt == deletedAt)&&(identical(other.isTruncated, isTruncated) || other.isTruncated == isTruncated));
 | 
					  return identical(this, other) || (other.runtimeType == runtimeType&&other is SnPost&&(identical(other.id, id) || other.id == id)&&(identical(other.title, title) || other.title == title)&&(identical(other.description, description) || other.description == description)&&(identical(other.language, language) || other.language == language)&&(identical(other.editedAt, editedAt) || other.editedAt == editedAt)&&(identical(other.publishedAt, publishedAt) || other.publishedAt == publishedAt)&&(identical(other.visibility, visibility) || other.visibility == visibility)&&(identical(other.content, content) || other.content == content)&&(identical(other.slug, slug) || other.slug == slug)&&(identical(other.type, type) || other.type == type)&&const DeepCollectionEquality().equals(other.meta, meta)&&(identical(other.viewsUnique, viewsUnique) || other.viewsUnique == viewsUnique)&&(identical(other.viewsTotal, viewsTotal) || other.viewsTotal == viewsTotal)&&(identical(other.upvotes, upvotes) || other.upvotes == upvotes)&&(identical(other.downvotes, downvotes) || other.downvotes == downvotes)&&(identical(other.repliesCount, repliesCount) || other.repliesCount == repliesCount)&&(identical(other.threadedPostId, threadedPostId) || other.threadedPostId == threadedPostId)&&(identical(other.threadedPost, threadedPost) || other.threadedPost == threadedPost)&&(identical(other.repliedPostId, repliedPostId) || other.repliedPostId == repliedPostId)&&(identical(other.repliedPost, repliedPost) || other.repliedPost == repliedPost)&&(identical(other.forwardedPostId, forwardedPostId) || other.forwardedPostId == forwardedPostId)&&(identical(other.forwardedPost, forwardedPost) || other.forwardedPost == forwardedPost)&&(identical(other.realmId, realmId) || other.realmId == realmId)&&(identical(other.realm, realm) || other.realm == realm)&&const DeepCollectionEquality().equals(other.attachments, attachments)&&(identical(other.publisher, publisher) || other.publisher == publisher)&&const DeepCollectionEquality().equals(other.reactionsCount, reactionsCount)&&const DeepCollectionEquality().equals(other.reactionsMade, reactionsMade)&&const DeepCollectionEquality().equals(other.reactions, reactions)&&const DeepCollectionEquality().equals(other.tags, tags)&&const DeepCollectionEquality().equals(other.categories, categories)&&const DeepCollectionEquality().equals(other.collections, collections)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.updatedAt, updatedAt) || other.updatedAt == updatedAt)&&(identical(other.deletedAt, deletedAt) || other.deletedAt == deletedAt)&&(identical(other.isTruncated, isTruncated) || other.isTruncated == isTruncated));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
int get hashCode => Object.hashAll([runtimeType,id,title,description,language,editedAt,publishedAt,visibility,content,type,const DeepCollectionEquality().hash(meta),viewsUnique,viewsTotal,upvotes,downvotes,repliesCount,threadedPostId,threadedPost,repliedPostId,repliedPost,forwardedPostId,forwardedPost,const DeepCollectionEquality().hash(attachments),publisher,const DeepCollectionEquality().hash(reactionsCount),const DeepCollectionEquality().hash(reactions),const DeepCollectionEquality().hash(tags),const DeepCollectionEquality().hash(categories),const DeepCollectionEquality().hash(collections),createdAt,updatedAt,deletedAt,isTruncated]);
 | 
					int get hashCode => Object.hashAll([runtimeType,id,title,description,language,editedAt,publishedAt,visibility,content,slug,type,const DeepCollectionEquality().hash(meta),viewsUnique,viewsTotal,upvotes,downvotes,repliesCount,threadedPostId,threadedPost,repliedPostId,repliedPost,forwardedPostId,forwardedPost,realmId,realm,const DeepCollectionEquality().hash(attachments),publisher,const DeepCollectionEquality().hash(reactionsCount),const DeepCollectionEquality().hash(reactionsMade),const DeepCollectionEquality().hash(reactions),const DeepCollectionEquality().hash(tags),const DeepCollectionEquality().hash(categories),const DeepCollectionEquality().hash(collections),createdAt,updatedAt,deletedAt,isTruncated]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
String toString() {
 | 
					String toString() {
 | 
				
			||||||
  return 'SnPost(id: $id, title: $title, description: $description, language: $language, editedAt: $editedAt, publishedAt: $publishedAt, visibility: $visibility, content: $content, type: $type, meta: $meta, viewsUnique: $viewsUnique, viewsTotal: $viewsTotal, upvotes: $upvotes, downvotes: $downvotes, repliesCount: $repliesCount, threadedPostId: $threadedPostId, threadedPost: $threadedPost, repliedPostId: $repliedPostId, repliedPost: $repliedPost, forwardedPostId: $forwardedPostId, forwardedPost: $forwardedPost, attachments: $attachments, publisher: $publisher, reactionsCount: $reactionsCount, reactions: $reactions, tags: $tags, categories: $categories, collections: $collections, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt, isTruncated: $isTruncated)';
 | 
					  return 'SnPost(id: $id, title: $title, description: $description, language: $language, editedAt: $editedAt, publishedAt: $publishedAt, visibility: $visibility, content: $content, slug: $slug, type: $type, meta: $meta, viewsUnique: $viewsUnique, viewsTotal: $viewsTotal, upvotes: $upvotes, downvotes: $downvotes, repliesCount: $repliesCount, threadedPostId: $threadedPostId, threadedPost: $threadedPost, repliedPostId: $repliedPostId, repliedPost: $repliedPost, forwardedPostId: $forwardedPostId, forwardedPost: $forwardedPost, realmId: $realmId, realm: $realm, attachments: $attachments, publisher: $publisher, reactionsCount: $reactionsCount, reactionsMade: $reactionsMade, reactions: $reactions, tags: $tags, categories: $categories, collections: $collections, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt, isTruncated: $isTruncated)';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -49,11 +48,11 @@ abstract mixin class $SnPostCopyWith<$Res>  {
 | 
				
			|||||||
  factory $SnPostCopyWith(SnPost value, $Res Function(SnPost) _then) = _$SnPostCopyWithImpl;
 | 
					  factory $SnPostCopyWith(SnPost value, $Res Function(SnPost) _then) = _$SnPostCopyWithImpl;
 | 
				
			||||||
@useResult
 | 
					@useResult
 | 
				
			||||||
$Res call({
 | 
					$Res call({
 | 
				
			||||||
 String id, String? title, String? description, String? language, DateTime? editedAt, DateTime? publishedAt, int visibility, String? content, int type, Map<String, dynamic>? meta, int viewsUnique, int viewsTotal, int upvotes, int downvotes, int repliesCount, String? threadedPostId, SnPost? threadedPost, String? repliedPostId, SnPost? repliedPost, String? forwardedPostId, SnPost? forwardedPost, List<SnCloudFile> attachments, SnPublisher publisher, Map<String, int> reactionsCount, List<dynamic> reactions, List<PostTag> tags, List<PostCategory> categories, List<dynamic> collections, DateTime? createdAt, DateTime? updatedAt, DateTime? deletedAt, bool isTruncated
 | 
					 String id, String? title, String? description, String? language, DateTime? editedAt, DateTime? publishedAt, int visibility, String? content, String? slug, int type, Map<String, dynamic>? meta, int viewsUnique, int viewsTotal, int upvotes, int downvotes, int repliesCount, String? threadedPostId, SnPost? threadedPost, String? repliedPostId, SnPost? repliedPost, String? forwardedPostId, SnPost? forwardedPost, String? realmId, SnRealm? realm, List<SnCloudFile> attachments, SnPublisher publisher, Map<String, int> reactionsCount, Map<String, bool> reactionsMade, List<dynamic> reactions, List<SnPostTag> tags, List<SnPostCategory> categories, List<dynamic> collections, DateTime? createdAt, DateTime? updatedAt, DateTime? deletedAt, bool isTruncated
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$SnPostCopyWith<$Res>? get threadedPost;$SnPostCopyWith<$Res>? get repliedPost;$SnPostCopyWith<$Res>? get forwardedPost;$SnPublisherCopyWith<$Res> get publisher;
 | 
					$SnPostCopyWith<$Res>? get threadedPost;$SnPostCopyWith<$Res>? get repliedPost;$SnPostCopyWith<$Res>? get forwardedPost;$SnRealmCopyWith<$Res>? get realm;$SnPublisherCopyWith<$Res> get publisher;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@@ -66,7 +65,7 @@ class _$SnPostCopyWithImpl<$Res>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/// Create a copy of SnPost
 | 
					/// Create a copy of SnPost
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@pragma('vm:prefer-inline') @override $Res call({Object? id = null,Object? title = freezed,Object? description = freezed,Object? language = freezed,Object? editedAt = freezed,Object? publishedAt = freezed,Object? visibility = null,Object? content = freezed,Object? type = null,Object? meta = freezed,Object? viewsUnique = null,Object? viewsTotal = null,Object? upvotes = null,Object? downvotes = null,Object? repliesCount = null,Object? threadedPostId = freezed,Object? threadedPost = freezed,Object? repliedPostId = freezed,Object? repliedPost = freezed,Object? forwardedPostId = freezed,Object? forwardedPost = freezed,Object? attachments = null,Object? publisher = null,Object? reactionsCount = null,Object? reactions = null,Object? tags = null,Object? categories = null,Object? collections = null,Object? createdAt = freezed,Object? updatedAt = freezed,Object? deletedAt = freezed,Object? isTruncated = null,}) {
 | 
					@pragma('vm:prefer-inline') @override $Res call({Object? id = null,Object? title = freezed,Object? description = freezed,Object? language = freezed,Object? editedAt = freezed,Object? publishedAt = freezed,Object? visibility = null,Object? content = freezed,Object? slug = freezed,Object? type = null,Object? meta = freezed,Object? viewsUnique = null,Object? viewsTotal = null,Object? upvotes = null,Object? downvotes = null,Object? repliesCount = null,Object? threadedPostId = freezed,Object? threadedPost = freezed,Object? repliedPostId = freezed,Object? repliedPost = freezed,Object? forwardedPostId = freezed,Object? forwardedPost = freezed,Object? realmId = freezed,Object? realm = freezed,Object? attachments = null,Object? publisher = null,Object? reactionsCount = null,Object? reactionsMade = null,Object? reactions = null,Object? tags = null,Object? categories = null,Object? collections = null,Object? createdAt = freezed,Object? updatedAt = freezed,Object? deletedAt = freezed,Object? isTruncated = null,}) {
 | 
				
			||||||
  return _then(_self.copyWith(
 | 
					  return _then(_self.copyWith(
 | 
				
			||||||
id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
					id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,title: freezed == title ? _self.title : title // ignore: cast_nullable_to_non_nullable
 | 
					as String,title: freezed == title ? _self.title : title // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
@@ -76,6 +75,7 @@ as String?,editedAt: freezed == editedAt ? _self.editedAt : editedAt // ignore:
 | 
				
			|||||||
as DateTime?,publishedAt: freezed == publishedAt ? _self.publishedAt : publishedAt // ignore: cast_nullable_to_non_nullable
 | 
					as DateTime?,publishedAt: freezed == publishedAt ? _self.publishedAt : publishedAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as DateTime?,visibility: null == visibility ? _self.visibility : visibility // ignore: cast_nullable_to_non_nullable
 | 
					as DateTime?,visibility: null == visibility ? _self.visibility : visibility // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as int,content: freezed == content ? _self.content : content // ignore: cast_nullable_to_non_nullable
 | 
					as int,content: freezed == content ? _self.content : content // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String?,slug: freezed == slug ? _self.slug : slug // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String?,type: null == type ? _self.type : type // ignore: cast_nullable_to_non_nullable
 | 
					as String?,type: null == type ? _self.type : type // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as int,meta: freezed == meta ? _self.meta : meta // ignore: cast_nullable_to_non_nullable
 | 
					as int,meta: freezed == meta ? _self.meta : meta // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as Map<String, dynamic>?,viewsUnique: null == viewsUnique ? _self.viewsUnique : viewsUnique // ignore: cast_nullable_to_non_nullable
 | 
					as Map<String, dynamic>?,viewsUnique: null == viewsUnique ? _self.viewsUnique : viewsUnique // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
@@ -89,13 +89,16 @@ as SnPost?,repliedPostId: freezed == repliedPostId ? _self.repliedPostId : repli
 | 
				
			|||||||
as String?,repliedPost: freezed == repliedPost ? _self.repliedPost : repliedPost // ignore: cast_nullable_to_non_nullable
 | 
					as String?,repliedPost: freezed == repliedPost ? _self.repliedPost : repliedPost // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as SnPost?,forwardedPostId: freezed == forwardedPostId ? _self.forwardedPostId : forwardedPostId // ignore: cast_nullable_to_non_nullable
 | 
					as SnPost?,forwardedPostId: freezed == forwardedPostId ? _self.forwardedPostId : forwardedPostId // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String?,forwardedPost: freezed == forwardedPost ? _self.forwardedPost : forwardedPost // ignore: cast_nullable_to_non_nullable
 | 
					as String?,forwardedPost: freezed == forwardedPost ? _self.forwardedPost : forwardedPost // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as SnPost?,attachments: null == attachments ? _self.attachments : attachments // ignore: cast_nullable_to_non_nullable
 | 
					as SnPost?,realmId: freezed == realmId ? _self.realmId : realmId // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String?,realm: freezed == realm ? _self.realm : realm // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as SnRealm?,attachments: null == attachments ? _self.attachments : attachments // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as List<SnCloudFile>,publisher: null == publisher ? _self.publisher : publisher // ignore: cast_nullable_to_non_nullable
 | 
					as List<SnCloudFile>,publisher: null == publisher ? _self.publisher : publisher // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as SnPublisher,reactionsCount: null == reactionsCount ? _self.reactionsCount : reactionsCount // ignore: cast_nullable_to_non_nullable
 | 
					as SnPublisher,reactionsCount: null == reactionsCount ? _self.reactionsCount : reactionsCount // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as Map<String, int>,reactions: null == reactions ? _self.reactions : reactions // ignore: cast_nullable_to_non_nullable
 | 
					as Map<String, int>,reactionsMade: null == reactionsMade ? _self.reactionsMade : reactionsMade // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as Map<String, bool>,reactions: null == reactions ? _self.reactions : reactions // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as List<dynamic>,tags: null == tags ? _self.tags : tags // ignore: cast_nullable_to_non_nullable
 | 
					as List<dynamic>,tags: null == tags ? _self.tags : tags // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as List<PostTag>,categories: null == categories ? _self.categories : categories // ignore: cast_nullable_to_non_nullable
 | 
					as List<SnPostTag>,categories: null == categories ? _self.categories : categories // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as List<PostCategory>,collections: null == collections ? _self.collections : collections // ignore: cast_nullable_to_non_nullable
 | 
					as List<SnPostCategory>,collections: null == collections ? _self.collections : collections // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as List<dynamic>,createdAt: freezed == createdAt ? _self.createdAt : createdAt // ignore: cast_nullable_to_non_nullable
 | 
					as List<dynamic>,createdAt: freezed == createdAt ? _self.createdAt : createdAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as DateTime?,updatedAt: freezed == updatedAt ? _self.updatedAt : updatedAt // ignore: cast_nullable_to_non_nullable
 | 
					as DateTime?,updatedAt: freezed == updatedAt ? _self.updatedAt : updatedAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as DateTime?,deletedAt: freezed == deletedAt ? _self.deletedAt : deletedAt // ignore: cast_nullable_to_non_nullable
 | 
					as DateTime?,deletedAt: freezed == deletedAt ? _self.deletedAt : deletedAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
@@ -143,6 +146,18 @@ $SnPostCopyWith<$Res>? get forwardedPost {
 | 
				
			|||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
@pragma('vm:prefer-inline')
 | 
					@pragma('vm:prefer-inline')
 | 
				
			||||||
 | 
					$SnRealmCopyWith<$Res>? get realm {
 | 
				
			||||||
 | 
					    if (_self.realm == null) {
 | 
				
			||||||
 | 
					    return null;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return $SnRealmCopyWith<$Res>(_self.realm!, (value) {
 | 
				
			||||||
 | 
					    return _then(_self.copyWith(realm: value));
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					}/// Create a copy of SnPost
 | 
				
			||||||
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					@pragma('vm:prefer-inline')
 | 
				
			||||||
$SnPublisherCopyWith<$Res> get publisher {
 | 
					$SnPublisherCopyWith<$Res> get publisher {
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  return $SnPublisherCopyWith<$Res>(_self.publisher, (value) {
 | 
					  return $SnPublisherCopyWith<$Res>(_self.publisher, (value) {
 | 
				
			||||||
@@ -152,11 +167,135 @@ $SnPublisherCopyWith<$Res> get publisher {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnPost].
 | 
				
			||||||
 | 
					extension SnPostPatterns on SnPost {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnPost value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPost() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnPost value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPost():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnPost value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPost() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  String? title,  String? description,  String? language,  DateTime? editedAt,  DateTime? publishedAt,  int visibility,  String? content,  String? slug,  int type,  Map<String, dynamic>? meta,  int viewsUnique,  int viewsTotal,  int upvotes,  int downvotes,  int repliesCount,  String? threadedPostId,  SnPost? threadedPost,  String? repliedPostId,  SnPost? repliedPost,  String? forwardedPostId,  SnPost? forwardedPost,  String? realmId,  SnRealm? realm,  List<SnCloudFile> attachments,  SnPublisher publisher,  Map<String, int> reactionsCount,  Map<String, bool> reactionsMade,  List<dynamic> reactions,  List<SnPostTag> tags,  List<SnPostCategory> categories,  List<dynamic> collections,  DateTime? createdAt,  DateTime? updatedAt,  DateTime? deletedAt,  bool isTruncated)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPost() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.title,_that.description,_that.language,_that.editedAt,_that.publishedAt,_that.visibility,_that.content,_that.slug,_that.type,_that.meta,_that.viewsUnique,_that.viewsTotal,_that.upvotes,_that.downvotes,_that.repliesCount,_that.threadedPostId,_that.threadedPost,_that.repliedPostId,_that.repliedPost,_that.forwardedPostId,_that.forwardedPost,_that.realmId,_that.realm,_that.attachments,_that.publisher,_that.reactionsCount,_that.reactionsMade,_that.reactions,_that.tags,_that.categories,_that.collections,_that.createdAt,_that.updatedAt,_that.deletedAt,_that.isTruncated);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  String? title,  String? description,  String? language,  DateTime? editedAt,  DateTime? publishedAt,  int visibility,  String? content,  String? slug,  int type,  Map<String, dynamic>? meta,  int viewsUnique,  int viewsTotal,  int upvotes,  int downvotes,  int repliesCount,  String? threadedPostId,  SnPost? threadedPost,  String? repliedPostId,  SnPost? repliedPost,  String? forwardedPostId,  SnPost? forwardedPost,  String? realmId,  SnRealm? realm,  List<SnCloudFile> attachments,  SnPublisher publisher,  Map<String, int> reactionsCount,  Map<String, bool> reactionsMade,  List<dynamic> reactions,  List<SnPostTag> tags,  List<SnPostCategory> categories,  List<dynamic> collections,  DateTime? createdAt,  DateTime? updatedAt,  DateTime? deletedAt,  bool isTruncated)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPost():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.title,_that.description,_that.language,_that.editedAt,_that.publishedAt,_that.visibility,_that.content,_that.slug,_that.type,_that.meta,_that.viewsUnique,_that.viewsTotal,_that.upvotes,_that.downvotes,_that.repliesCount,_that.threadedPostId,_that.threadedPost,_that.repliedPostId,_that.repliedPost,_that.forwardedPostId,_that.forwardedPost,_that.realmId,_that.realm,_that.attachments,_that.publisher,_that.reactionsCount,_that.reactionsMade,_that.reactions,_that.tags,_that.categories,_that.collections,_that.createdAt,_that.updatedAt,_that.deletedAt,_that.isTruncated);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  String? title,  String? description,  String? language,  DateTime? editedAt,  DateTime? publishedAt,  int visibility,  String? content,  String? slug,  int type,  Map<String, dynamic>? meta,  int viewsUnique,  int viewsTotal,  int upvotes,  int downvotes,  int repliesCount,  String? threadedPostId,  SnPost? threadedPost,  String? repliedPostId,  SnPost? repliedPost,  String? forwardedPostId,  SnPost? forwardedPost,  String? realmId,  SnRealm? realm,  List<SnCloudFile> attachments,  SnPublisher publisher,  Map<String, int> reactionsCount,  Map<String, bool> reactionsMade,  List<dynamic> reactions,  List<SnPostTag> tags,  List<SnPostCategory> categories,  List<dynamic> collections,  DateTime? createdAt,  DateTime? updatedAt,  DateTime? deletedAt,  bool isTruncated)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPost() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.title,_that.description,_that.language,_that.editedAt,_that.publishedAt,_that.visibility,_that.content,_that.slug,_that.type,_that.meta,_that.viewsUnique,_that.viewsTotal,_that.upvotes,_that.downvotes,_that.repliesCount,_that.threadedPostId,_that.threadedPost,_that.repliedPostId,_that.repliedPost,_that.forwardedPostId,_that.forwardedPost,_that.realmId,_that.realm,_that.attachments,_that.publisher,_that.reactionsCount,_that.reactionsMade,_that.reactions,_that.tags,_that.categories,_that.collections,_that.createdAt,_that.updatedAt,_that.deletedAt,_that.isTruncated);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class _SnPost implements SnPost {
 | 
					class _SnPost implements SnPost {
 | 
				
			||||||
  const _SnPost({required this.id, this.title, this.description, this.language, this.editedAt, this.publishedAt = null, this.visibility = 0, this.content, this.type = 0, final  Map<String, dynamic>? meta, this.viewsUnique = 0, this.viewsTotal = 0, this.upvotes = 0, this.downvotes = 0, this.repliesCount = 0, this.threadedPostId, this.threadedPost, this.repliedPostId, this.repliedPost, this.forwardedPostId, this.forwardedPost, final  List<SnCloudFile> attachments = const [], required this.publisher, final  Map<String, int> reactionsCount = const {}, final  List<dynamic> reactions = const [], final  List<PostTag> tags = const [], final  List<PostCategory> categories = const [], final  List<dynamic> collections = const [], this.createdAt = null, this.updatedAt = null, this.deletedAt, this.isTruncated = false}): _meta = meta,_attachments = attachments,_reactionsCount = reactionsCount,_reactions = reactions,_tags = tags,_categories = categories,_collections = collections;
 | 
					  const _SnPost({required this.id, this.title, this.description, this.language, this.editedAt, this.publishedAt = null, this.visibility = 0, this.content, this.slug, this.type = 0, final  Map<String, dynamic>? meta, this.viewsUnique = 0, this.viewsTotal = 0, this.upvotes = 0, this.downvotes = 0, this.repliesCount = 0, this.threadedPostId, this.threadedPost, this.repliedPostId, this.repliedPost, this.forwardedPostId, this.forwardedPost, this.realmId, this.realm, final  List<SnCloudFile> attachments = const [], required this.publisher, final  Map<String, int> reactionsCount = const {}, final  Map<String, bool> reactionsMade = const {}, final  List<dynamic> reactions = const [], final  List<SnPostTag> tags = const [], final  List<SnPostCategory> categories = const [], final  List<dynamic> collections = const [], this.createdAt = null, this.updatedAt = null, this.deletedAt, this.isTruncated = false}): _meta = meta,_attachments = attachments,_reactionsCount = reactionsCount,_reactionsMade = reactionsMade,_reactions = reactions,_tags = tags,_categories = categories,_collections = collections;
 | 
				
			||||||
  factory _SnPost.fromJson(Map<String, dynamic> json) => _$SnPostFromJson(json);
 | 
					  factory _SnPost.fromJson(Map<String, dynamic> json) => _$SnPostFromJson(json);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override final  String id;
 | 
					@override final  String id;
 | 
				
			||||||
@@ -167,6 +306,7 @@ class _SnPost implements SnPost {
 | 
				
			|||||||
@override@JsonKey() final  DateTime? publishedAt;
 | 
					@override@JsonKey() final  DateTime? publishedAt;
 | 
				
			||||||
@override@JsonKey() final  int visibility;
 | 
					@override@JsonKey() final  int visibility;
 | 
				
			||||||
@override final  String? content;
 | 
					@override final  String? content;
 | 
				
			||||||
 | 
					@override final  String? slug;
 | 
				
			||||||
@override@JsonKey() final  int type;
 | 
					@override@JsonKey() final  int type;
 | 
				
			||||||
 final  Map<String, dynamic>? _meta;
 | 
					 final  Map<String, dynamic>? _meta;
 | 
				
			||||||
@override Map<String, dynamic>? get meta {
 | 
					@override Map<String, dynamic>? get meta {
 | 
				
			||||||
@@ -188,6 +328,8 @@ class _SnPost implements SnPost {
 | 
				
			|||||||
@override final  SnPost? repliedPost;
 | 
					@override final  SnPost? repliedPost;
 | 
				
			||||||
@override final  String? forwardedPostId;
 | 
					@override final  String? forwardedPostId;
 | 
				
			||||||
@override final  SnPost? forwardedPost;
 | 
					@override final  SnPost? forwardedPost;
 | 
				
			||||||
 | 
					@override final  String? realmId;
 | 
				
			||||||
 | 
					@override final  SnRealm? realm;
 | 
				
			||||||
 final  List<SnCloudFile> _attachments;
 | 
					 final  List<SnCloudFile> _attachments;
 | 
				
			||||||
@override@JsonKey() List<SnCloudFile> get attachments {
 | 
					@override@JsonKey() List<SnCloudFile> get attachments {
 | 
				
			||||||
  if (_attachments is EqualUnmodifiableListView) return _attachments;
 | 
					  if (_attachments is EqualUnmodifiableListView) return _attachments;
 | 
				
			||||||
@@ -203,6 +345,13 @@ class _SnPost implements SnPost {
 | 
				
			|||||||
  return EqualUnmodifiableMapView(_reactionsCount);
 | 
					  return EqualUnmodifiableMapView(_reactionsCount);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 final  Map<String, bool> _reactionsMade;
 | 
				
			||||||
 | 
					@override@JsonKey() Map<String, bool> get reactionsMade {
 | 
				
			||||||
 | 
					  if (_reactionsMade is EqualUnmodifiableMapView) return _reactionsMade;
 | 
				
			||||||
 | 
					  // ignore: implicit_dynamic_type
 | 
				
			||||||
 | 
					  return EqualUnmodifiableMapView(_reactionsMade);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 final  List<dynamic> _reactions;
 | 
					 final  List<dynamic> _reactions;
 | 
				
			||||||
@override@JsonKey() List<dynamic> get reactions {
 | 
					@override@JsonKey() List<dynamic> get reactions {
 | 
				
			||||||
  if (_reactions is EqualUnmodifiableListView) return _reactions;
 | 
					  if (_reactions is EqualUnmodifiableListView) return _reactions;
 | 
				
			||||||
@@ -210,15 +359,15 @@ class _SnPost implements SnPost {
 | 
				
			|||||||
  return EqualUnmodifiableListView(_reactions);
 | 
					  return EqualUnmodifiableListView(_reactions);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 final  List<PostTag> _tags;
 | 
					 final  List<SnPostTag> _tags;
 | 
				
			||||||
@override@JsonKey() List<PostTag> get tags {
 | 
					@override@JsonKey() List<SnPostTag> get tags {
 | 
				
			||||||
  if (_tags is EqualUnmodifiableListView) return _tags;
 | 
					  if (_tags is EqualUnmodifiableListView) return _tags;
 | 
				
			||||||
  // ignore: implicit_dynamic_type
 | 
					  // ignore: implicit_dynamic_type
 | 
				
			||||||
  return EqualUnmodifiableListView(_tags);
 | 
					  return EqualUnmodifiableListView(_tags);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 final  List<PostCategory> _categories;
 | 
					 final  List<SnPostCategory> _categories;
 | 
				
			||||||
@override@JsonKey() List<PostCategory> get categories {
 | 
					@override@JsonKey() List<SnPostCategory> get categories {
 | 
				
			||||||
  if (_categories is EqualUnmodifiableListView) return _categories;
 | 
					  if (_categories is EqualUnmodifiableListView) return _categories;
 | 
				
			||||||
  // ignore: implicit_dynamic_type
 | 
					  // ignore: implicit_dynamic_type
 | 
				
			||||||
  return EqualUnmodifiableListView(_categories);
 | 
					  return EqualUnmodifiableListView(_categories);
 | 
				
			||||||
@@ -249,16 +398,16 @@ Map<String, dynamic> toJson() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
bool operator ==(Object other) {
 | 
					bool operator ==(Object other) {
 | 
				
			||||||
  return identical(this, other) || (other.runtimeType == runtimeType&&other is _SnPost&&(identical(other.id, id) || other.id == id)&&(identical(other.title, title) || other.title == title)&&(identical(other.description, description) || other.description == description)&&(identical(other.language, language) || other.language == language)&&(identical(other.editedAt, editedAt) || other.editedAt == editedAt)&&(identical(other.publishedAt, publishedAt) || other.publishedAt == publishedAt)&&(identical(other.visibility, visibility) || other.visibility == visibility)&&(identical(other.content, content) || other.content == content)&&(identical(other.type, type) || other.type == type)&&const DeepCollectionEquality().equals(other._meta, _meta)&&(identical(other.viewsUnique, viewsUnique) || other.viewsUnique == viewsUnique)&&(identical(other.viewsTotal, viewsTotal) || other.viewsTotal == viewsTotal)&&(identical(other.upvotes, upvotes) || other.upvotes == upvotes)&&(identical(other.downvotes, downvotes) || other.downvotes == downvotes)&&(identical(other.repliesCount, repliesCount) || other.repliesCount == repliesCount)&&(identical(other.threadedPostId, threadedPostId) || other.threadedPostId == threadedPostId)&&(identical(other.threadedPost, threadedPost) || other.threadedPost == threadedPost)&&(identical(other.repliedPostId, repliedPostId) || other.repliedPostId == repliedPostId)&&(identical(other.repliedPost, repliedPost) || other.repliedPost == repliedPost)&&(identical(other.forwardedPostId, forwardedPostId) || other.forwardedPostId == forwardedPostId)&&(identical(other.forwardedPost, forwardedPost) || other.forwardedPost == forwardedPost)&&const DeepCollectionEquality().equals(other._attachments, _attachments)&&(identical(other.publisher, publisher) || other.publisher == publisher)&&const DeepCollectionEquality().equals(other._reactionsCount, _reactionsCount)&&const DeepCollectionEquality().equals(other._reactions, _reactions)&&const DeepCollectionEquality().equals(other._tags, _tags)&&const DeepCollectionEquality().equals(other._categories, _categories)&&const DeepCollectionEquality().equals(other._collections, _collections)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.updatedAt, updatedAt) || other.updatedAt == updatedAt)&&(identical(other.deletedAt, deletedAt) || other.deletedAt == deletedAt)&&(identical(other.isTruncated, isTruncated) || other.isTruncated == isTruncated));
 | 
					  return identical(this, other) || (other.runtimeType == runtimeType&&other is _SnPost&&(identical(other.id, id) || other.id == id)&&(identical(other.title, title) || other.title == title)&&(identical(other.description, description) || other.description == description)&&(identical(other.language, language) || other.language == language)&&(identical(other.editedAt, editedAt) || other.editedAt == editedAt)&&(identical(other.publishedAt, publishedAt) || other.publishedAt == publishedAt)&&(identical(other.visibility, visibility) || other.visibility == visibility)&&(identical(other.content, content) || other.content == content)&&(identical(other.slug, slug) || other.slug == slug)&&(identical(other.type, type) || other.type == type)&&const DeepCollectionEquality().equals(other._meta, _meta)&&(identical(other.viewsUnique, viewsUnique) || other.viewsUnique == viewsUnique)&&(identical(other.viewsTotal, viewsTotal) || other.viewsTotal == viewsTotal)&&(identical(other.upvotes, upvotes) || other.upvotes == upvotes)&&(identical(other.downvotes, downvotes) || other.downvotes == downvotes)&&(identical(other.repliesCount, repliesCount) || other.repliesCount == repliesCount)&&(identical(other.threadedPostId, threadedPostId) || other.threadedPostId == threadedPostId)&&(identical(other.threadedPost, threadedPost) || other.threadedPost == threadedPost)&&(identical(other.repliedPostId, repliedPostId) || other.repliedPostId == repliedPostId)&&(identical(other.repliedPost, repliedPost) || other.repliedPost == repliedPost)&&(identical(other.forwardedPostId, forwardedPostId) || other.forwardedPostId == forwardedPostId)&&(identical(other.forwardedPost, forwardedPost) || other.forwardedPost == forwardedPost)&&(identical(other.realmId, realmId) || other.realmId == realmId)&&(identical(other.realm, realm) || other.realm == realm)&&const DeepCollectionEquality().equals(other._attachments, _attachments)&&(identical(other.publisher, publisher) || other.publisher == publisher)&&const DeepCollectionEquality().equals(other._reactionsCount, _reactionsCount)&&const DeepCollectionEquality().equals(other._reactionsMade, _reactionsMade)&&const DeepCollectionEquality().equals(other._reactions, _reactions)&&const DeepCollectionEquality().equals(other._tags, _tags)&&const DeepCollectionEquality().equals(other._categories, _categories)&&const DeepCollectionEquality().equals(other._collections, _collections)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.updatedAt, updatedAt) || other.updatedAt == updatedAt)&&(identical(other.deletedAt, deletedAt) || other.deletedAt == deletedAt)&&(identical(other.isTruncated, isTruncated) || other.isTruncated == isTruncated));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
int get hashCode => Object.hashAll([runtimeType,id,title,description,language,editedAt,publishedAt,visibility,content,type,const DeepCollectionEquality().hash(_meta),viewsUnique,viewsTotal,upvotes,downvotes,repliesCount,threadedPostId,threadedPost,repliedPostId,repliedPost,forwardedPostId,forwardedPost,const DeepCollectionEquality().hash(_attachments),publisher,const DeepCollectionEquality().hash(_reactionsCount),const DeepCollectionEquality().hash(_reactions),const DeepCollectionEquality().hash(_tags),const DeepCollectionEquality().hash(_categories),const DeepCollectionEquality().hash(_collections),createdAt,updatedAt,deletedAt,isTruncated]);
 | 
					int get hashCode => Object.hashAll([runtimeType,id,title,description,language,editedAt,publishedAt,visibility,content,slug,type,const DeepCollectionEquality().hash(_meta),viewsUnique,viewsTotal,upvotes,downvotes,repliesCount,threadedPostId,threadedPost,repliedPostId,repliedPost,forwardedPostId,forwardedPost,realmId,realm,const DeepCollectionEquality().hash(_attachments),publisher,const DeepCollectionEquality().hash(_reactionsCount),const DeepCollectionEquality().hash(_reactionsMade),const DeepCollectionEquality().hash(_reactions),const DeepCollectionEquality().hash(_tags),const DeepCollectionEquality().hash(_categories),const DeepCollectionEquality().hash(_collections),createdAt,updatedAt,deletedAt,isTruncated]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
String toString() {
 | 
					String toString() {
 | 
				
			||||||
  return 'SnPost(id: $id, title: $title, description: $description, language: $language, editedAt: $editedAt, publishedAt: $publishedAt, visibility: $visibility, content: $content, type: $type, meta: $meta, viewsUnique: $viewsUnique, viewsTotal: $viewsTotal, upvotes: $upvotes, downvotes: $downvotes, repliesCount: $repliesCount, threadedPostId: $threadedPostId, threadedPost: $threadedPost, repliedPostId: $repliedPostId, repliedPost: $repliedPost, forwardedPostId: $forwardedPostId, forwardedPost: $forwardedPost, attachments: $attachments, publisher: $publisher, reactionsCount: $reactionsCount, reactions: $reactions, tags: $tags, categories: $categories, collections: $collections, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt, isTruncated: $isTruncated)';
 | 
					  return 'SnPost(id: $id, title: $title, description: $description, language: $language, editedAt: $editedAt, publishedAt: $publishedAt, visibility: $visibility, content: $content, slug: $slug, type: $type, meta: $meta, viewsUnique: $viewsUnique, viewsTotal: $viewsTotal, upvotes: $upvotes, downvotes: $downvotes, repliesCount: $repliesCount, threadedPostId: $threadedPostId, threadedPost: $threadedPost, repliedPostId: $repliedPostId, repliedPost: $repliedPost, forwardedPostId: $forwardedPostId, forwardedPost: $forwardedPost, realmId: $realmId, realm: $realm, attachments: $attachments, publisher: $publisher, reactionsCount: $reactionsCount, reactionsMade: $reactionsMade, reactions: $reactions, tags: $tags, categories: $categories, collections: $collections, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt, isTruncated: $isTruncated)';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -269,11 +418,11 @@ abstract mixin class _$SnPostCopyWith<$Res> implements $SnPostCopyWith<$Res> {
 | 
				
			|||||||
  factory _$SnPostCopyWith(_SnPost value, $Res Function(_SnPost) _then) = __$SnPostCopyWithImpl;
 | 
					  factory _$SnPostCopyWith(_SnPost value, $Res Function(_SnPost) _then) = __$SnPostCopyWithImpl;
 | 
				
			||||||
@override @useResult
 | 
					@override @useResult
 | 
				
			||||||
$Res call({
 | 
					$Res call({
 | 
				
			||||||
 String id, String? title, String? description, String? language, DateTime? editedAt, DateTime? publishedAt, int visibility, String? content, int type, Map<String, dynamic>? meta, int viewsUnique, int viewsTotal, int upvotes, int downvotes, int repliesCount, String? threadedPostId, SnPost? threadedPost, String? repliedPostId, SnPost? repliedPost, String? forwardedPostId, SnPost? forwardedPost, List<SnCloudFile> attachments, SnPublisher publisher, Map<String, int> reactionsCount, List<dynamic> reactions, List<PostTag> tags, List<PostCategory> categories, List<dynamic> collections, DateTime? createdAt, DateTime? updatedAt, DateTime? deletedAt, bool isTruncated
 | 
					 String id, String? title, String? description, String? language, DateTime? editedAt, DateTime? publishedAt, int visibility, String? content, String? slug, int type, Map<String, dynamic>? meta, int viewsUnique, int viewsTotal, int upvotes, int downvotes, int repliesCount, String? threadedPostId, SnPost? threadedPost, String? repliedPostId, SnPost? repliedPost, String? forwardedPostId, SnPost? forwardedPost, String? realmId, SnRealm? realm, List<SnCloudFile> attachments, SnPublisher publisher, Map<String, int> reactionsCount, Map<String, bool> reactionsMade, List<dynamic> reactions, List<SnPostTag> tags, List<SnPostCategory> categories, List<dynamic> collections, DateTime? createdAt, DateTime? updatedAt, DateTime? deletedAt, bool isTruncated
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override $SnPostCopyWith<$Res>? get threadedPost;@override $SnPostCopyWith<$Res>? get repliedPost;@override $SnPostCopyWith<$Res>? get forwardedPost;@override $SnPublisherCopyWith<$Res> get publisher;
 | 
					@override $SnPostCopyWith<$Res>? get threadedPost;@override $SnPostCopyWith<$Res>? get repliedPost;@override $SnPostCopyWith<$Res>? get forwardedPost;@override $SnRealmCopyWith<$Res>? get realm;@override $SnPublisherCopyWith<$Res> get publisher;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@@ -286,7 +435,7 @@ class __$SnPostCopyWithImpl<$Res>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/// Create a copy of SnPost
 | 
					/// Create a copy of SnPost
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@override @pragma('vm:prefer-inline') $Res call({Object? id = null,Object? title = freezed,Object? description = freezed,Object? language = freezed,Object? editedAt = freezed,Object? publishedAt = freezed,Object? visibility = null,Object? content = freezed,Object? type = null,Object? meta = freezed,Object? viewsUnique = null,Object? viewsTotal = null,Object? upvotes = null,Object? downvotes = null,Object? repliesCount = null,Object? threadedPostId = freezed,Object? threadedPost = freezed,Object? repliedPostId = freezed,Object? repliedPost = freezed,Object? forwardedPostId = freezed,Object? forwardedPost = freezed,Object? attachments = null,Object? publisher = null,Object? reactionsCount = null,Object? reactions = null,Object? tags = null,Object? categories = null,Object? collections = null,Object? createdAt = freezed,Object? updatedAt = freezed,Object? deletedAt = freezed,Object? isTruncated = null,}) {
 | 
					@override @pragma('vm:prefer-inline') $Res call({Object? id = null,Object? title = freezed,Object? description = freezed,Object? language = freezed,Object? editedAt = freezed,Object? publishedAt = freezed,Object? visibility = null,Object? content = freezed,Object? slug = freezed,Object? type = null,Object? meta = freezed,Object? viewsUnique = null,Object? viewsTotal = null,Object? upvotes = null,Object? downvotes = null,Object? repliesCount = null,Object? threadedPostId = freezed,Object? threadedPost = freezed,Object? repliedPostId = freezed,Object? repliedPost = freezed,Object? forwardedPostId = freezed,Object? forwardedPost = freezed,Object? realmId = freezed,Object? realm = freezed,Object? attachments = null,Object? publisher = null,Object? reactionsCount = null,Object? reactionsMade = null,Object? reactions = null,Object? tags = null,Object? categories = null,Object? collections = null,Object? createdAt = freezed,Object? updatedAt = freezed,Object? deletedAt = freezed,Object? isTruncated = null,}) {
 | 
				
			||||||
  return _then(_SnPost(
 | 
					  return _then(_SnPost(
 | 
				
			||||||
id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
					id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,title: freezed == title ? _self.title : title // ignore: cast_nullable_to_non_nullable
 | 
					as String,title: freezed == title ? _self.title : title // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
@@ -296,6 +445,7 @@ as String?,editedAt: freezed == editedAt ? _self.editedAt : editedAt // ignore:
 | 
				
			|||||||
as DateTime?,publishedAt: freezed == publishedAt ? _self.publishedAt : publishedAt // ignore: cast_nullable_to_non_nullable
 | 
					as DateTime?,publishedAt: freezed == publishedAt ? _self.publishedAt : publishedAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as DateTime?,visibility: null == visibility ? _self.visibility : visibility // ignore: cast_nullable_to_non_nullable
 | 
					as DateTime?,visibility: null == visibility ? _self.visibility : visibility // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as int,content: freezed == content ? _self.content : content // ignore: cast_nullable_to_non_nullable
 | 
					as int,content: freezed == content ? _self.content : content // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String?,slug: freezed == slug ? _self.slug : slug // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String?,type: null == type ? _self.type : type // ignore: cast_nullable_to_non_nullable
 | 
					as String?,type: null == type ? _self.type : type // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as int,meta: freezed == meta ? _self._meta : meta // ignore: cast_nullable_to_non_nullable
 | 
					as int,meta: freezed == meta ? _self._meta : meta // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as Map<String, dynamic>?,viewsUnique: null == viewsUnique ? _self.viewsUnique : viewsUnique // ignore: cast_nullable_to_non_nullable
 | 
					as Map<String, dynamic>?,viewsUnique: null == viewsUnique ? _self.viewsUnique : viewsUnique // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
@@ -309,13 +459,16 @@ as SnPost?,repliedPostId: freezed == repliedPostId ? _self.repliedPostId : repli
 | 
				
			|||||||
as String?,repliedPost: freezed == repliedPost ? _self.repliedPost : repliedPost // ignore: cast_nullable_to_non_nullable
 | 
					as String?,repliedPost: freezed == repliedPost ? _self.repliedPost : repliedPost // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as SnPost?,forwardedPostId: freezed == forwardedPostId ? _self.forwardedPostId : forwardedPostId // ignore: cast_nullable_to_non_nullable
 | 
					as SnPost?,forwardedPostId: freezed == forwardedPostId ? _self.forwardedPostId : forwardedPostId // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String?,forwardedPost: freezed == forwardedPost ? _self.forwardedPost : forwardedPost // ignore: cast_nullable_to_non_nullable
 | 
					as String?,forwardedPost: freezed == forwardedPost ? _self.forwardedPost : forwardedPost // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as SnPost?,attachments: null == attachments ? _self._attachments : attachments // ignore: cast_nullable_to_non_nullable
 | 
					as SnPost?,realmId: freezed == realmId ? _self.realmId : realmId // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as String?,realm: freezed == realm ? _self.realm : realm // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as SnRealm?,attachments: null == attachments ? _self._attachments : attachments // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as List<SnCloudFile>,publisher: null == publisher ? _self.publisher : publisher // ignore: cast_nullable_to_non_nullable
 | 
					as List<SnCloudFile>,publisher: null == publisher ? _self.publisher : publisher // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as SnPublisher,reactionsCount: null == reactionsCount ? _self._reactionsCount : reactionsCount // ignore: cast_nullable_to_non_nullable
 | 
					as SnPublisher,reactionsCount: null == reactionsCount ? _self._reactionsCount : reactionsCount // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as Map<String, int>,reactions: null == reactions ? _self._reactions : reactions // ignore: cast_nullable_to_non_nullable
 | 
					as Map<String, int>,reactionsMade: null == reactionsMade ? _self._reactionsMade : reactionsMade // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as Map<String, bool>,reactions: null == reactions ? _self._reactions : reactions // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as List<dynamic>,tags: null == tags ? _self._tags : tags // ignore: cast_nullable_to_non_nullable
 | 
					as List<dynamic>,tags: null == tags ? _self._tags : tags // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as List<PostTag>,categories: null == categories ? _self._categories : categories // ignore: cast_nullable_to_non_nullable
 | 
					as List<SnPostTag>,categories: null == categories ? _self._categories : categories // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as List<PostCategory>,collections: null == collections ? _self._collections : collections // ignore: cast_nullable_to_non_nullable
 | 
					as List<SnPostCategory>,collections: null == collections ? _self._collections : collections // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as List<dynamic>,createdAt: freezed == createdAt ? _self.createdAt : createdAt // ignore: cast_nullable_to_non_nullable
 | 
					as List<dynamic>,createdAt: freezed == createdAt ? _self.createdAt : createdAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as DateTime?,updatedAt: freezed == updatedAt ? _self.updatedAt : updatedAt // ignore: cast_nullable_to_non_nullable
 | 
					as DateTime?,updatedAt: freezed == updatedAt ? _self.updatedAt : updatedAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as DateTime?,deletedAt: freezed == deletedAt ? _self.deletedAt : deletedAt // ignore: cast_nullable_to_non_nullable
 | 
					as DateTime?,deletedAt: freezed == deletedAt ? _self.deletedAt : deletedAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
@@ -364,6 +517,18 @@ $SnPostCopyWith<$Res>? get forwardedPost {
 | 
				
			|||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
@pragma('vm:prefer-inline')
 | 
					@pragma('vm:prefer-inline')
 | 
				
			||||||
 | 
					$SnRealmCopyWith<$Res>? get realm {
 | 
				
			||||||
 | 
					    if (_self.realm == null) {
 | 
				
			||||||
 | 
					    return null;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return $SnRealmCopyWith<$Res>(_self.realm!, (value) {
 | 
				
			||||||
 | 
					    return _then(_self.copyWith(realm: value));
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					}/// Create a copy of SnPost
 | 
				
			||||||
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					@pragma('vm:prefer-inline')
 | 
				
			||||||
$SnPublisherCopyWith<$Res> get publisher {
 | 
					$SnPublisherCopyWith<$Res> get publisher {
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
  return $SnPublisherCopyWith<$Res>(_self.publisher, (value) {
 | 
					  return $SnPublisherCopyWith<$Res>(_self.publisher, (value) {
 | 
				
			||||||
@@ -440,6 +605,130 @@ as int,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnPublisherStats].
 | 
				
			||||||
 | 
					extension SnPublisherStatsPatterns on SnPublisherStats {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnPublisherStats value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPublisherStats() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnPublisherStats value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPublisherStats():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnPublisherStats value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPublisherStats() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( int postsCreated,  int stickerPacksCreated,  int stickersCreated,  int upvoteReceived,  int downvoteReceived)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPublisherStats() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.postsCreated,_that.stickerPacksCreated,_that.stickersCreated,_that.upvoteReceived,_that.downvoteReceived);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( int postsCreated,  int stickerPacksCreated,  int stickersCreated,  int upvoteReceived,  int downvoteReceived)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPublisherStats():
 | 
				
			||||||
 | 
					return $default(_that.postsCreated,_that.stickerPacksCreated,_that.stickersCreated,_that.upvoteReceived,_that.downvoteReceived);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( int postsCreated,  int stickerPacksCreated,  int stickersCreated,  int upvoteReceived,  int downvoteReceived)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPublisherStats() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.postsCreated,_that.stickerPacksCreated,_that.stickersCreated,_that.upvoteReceived,_that.downvoteReceived);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -583,6 +872,130 @@ as String,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnSubscriptionStatus].
 | 
				
			||||||
 | 
					extension SnSubscriptionStatusPatterns on SnSubscriptionStatus {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnSubscriptionStatus value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnSubscriptionStatus() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnSubscriptionStatus value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnSubscriptionStatus():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnSubscriptionStatus value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnSubscriptionStatus() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( bool isSubscribed,  String publisherId,  String publisherName)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnSubscriptionStatus() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.isSubscribed,_that.publisherId,_that.publisherName);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( bool isSubscribed,  String publisherId,  String publisherName)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnSubscriptionStatus():
 | 
				
			||||||
 | 
					return $default(_that.isSubscribed,_that.publisherId,_that.publisherName);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( bool isSubscribed,  String publisherId,  String publisherName)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnSubscriptionStatus() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.isSubscribed,_that.publisherId,_that.publisherName);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -718,6 +1131,130 @@ as int,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [ReactInfo].
 | 
				
			||||||
 | 
					extension ReactInfoPatterns on ReactInfo {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _ReactInfo value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _ReactInfo() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _ReactInfo value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _ReactInfo():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _ReactInfo value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _ReactInfo() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String icon,  int attitude)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _ReactInfo() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.icon,_that.attitude);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String icon,  int attitude)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _ReactInfo():
 | 
				
			||||||
 | 
					return $default(_that.icon,_that.attitude);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String icon,  int attitude)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _ReactInfo() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.icon,_that.attitude);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -21,6 +21,7 @@ _SnPost _$SnPostFromJson(Map<String, dynamic> json) => _SnPost(
 | 
				
			|||||||
          : DateTime.parse(json['published_at'] as String),
 | 
					          : DateTime.parse(json['published_at'] as String),
 | 
				
			||||||
  visibility: (json['visibility'] as num?)?.toInt() ?? 0,
 | 
					  visibility: (json['visibility'] as num?)?.toInt() ?? 0,
 | 
				
			||||||
  content: json['content'] as String?,
 | 
					  content: json['content'] as String?,
 | 
				
			||||||
 | 
					  slug: json['slug'] as String?,
 | 
				
			||||||
  type: (json['type'] as num?)?.toInt() ?? 0,
 | 
					  type: (json['type'] as num?)?.toInt() ?? 0,
 | 
				
			||||||
  meta: json['meta'] as Map<String, dynamic>?,
 | 
					  meta: json['meta'] as Map<String, dynamic>?,
 | 
				
			||||||
  viewsUnique: (json['views_unique'] as num?)?.toInt() ?? 0,
 | 
					  viewsUnique: (json['views_unique'] as num?)?.toInt() ?? 0,
 | 
				
			||||||
@@ -43,6 +44,11 @@ _SnPost _$SnPostFromJson(Map<String, dynamic> json) => _SnPost(
 | 
				
			|||||||
      json['forwarded_post'] == null
 | 
					      json['forwarded_post'] == null
 | 
				
			||||||
          ? null
 | 
					          ? null
 | 
				
			||||||
          : SnPost.fromJson(json['forwarded_post'] as Map<String, dynamic>),
 | 
					          : SnPost.fromJson(json['forwarded_post'] as Map<String, dynamic>),
 | 
				
			||||||
 | 
					  realmId: json['realm_id'] as String?,
 | 
				
			||||||
 | 
					  realm:
 | 
				
			||||||
 | 
					      json['realm'] == null
 | 
				
			||||||
 | 
					          ? null
 | 
				
			||||||
 | 
					          : SnRealm.fromJson(json['realm'] as Map<String, dynamic>),
 | 
				
			||||||
  attachments:
 | 
					  attachments:
 | 
				
			||||||
      (json['attachments'] as List<dynamic>?)
 | 
					      (json['attachments'] as List<dynamic>?)
 | 
				
			||||||
          ?.map((e) => SnCloudFile.fromJson(e as Map<String, dynamic>))
 | 
					          ?.map((e) => SnCloudFile.fromJson(e as Map<String, dynamic>))
 | 
				
			||||||
@@ -54,15 +60,20 @@ _SnPost _$SnPostFromJson(Map<String, dynamic> json) => _SnPost(
 | 
				
			|||||||
        (k, e) => MapEntry(k, (e as num).toInt()),
 | 
					        (k, e) => MapEntry(k, (e as num).toInt()),
 | 
				
			||||||
      ) ??
 | 
					      ) ??
 | 
				
			||||||
      const {},
 | 
					      const {},
 | 
				
			||||||
 | 
					  reactionsMade:
 | 
				
			||||||
 | 
					      (json['reactions_made'] as Map<String, dynamic>?)?.map(
 | 
				
			||||||
 | 
					        (k, e) => MapEntry(k, e as bool),
 | 
				
			||||||
 | 
					      ) ??
 | 
				
			||||||
 | 
					      const {},
 | 
				
			||||||
  reactions: json['reactions'] as List<dynamic>? ?? const [],
 | 
					  reactions: json['reactions'] as List<dynamic>? ?? const [],
 | 
				
			||||||
  tags:
 | 
					  tags:
 | 
				
			||||||
      (json['tags'] as List<dynamic>?)
 | 
					      (json['tags'] as List<dynamic>?)
 | 
				
			||||||
          ?.map((e) => PostTag.fromJson(e as Map<String, dynamic>))
 | 
					          ?.map((e) => SnPostTag.fromJson(e as Map<String, dynamic>))
 | 
				
			||||||
          .toList() ??
 | 
					          .toList() ??
 | 
				
			||||||
      const [],
 | 
					      const [],
 | 
				
			||||||
  categories:
 | 
					  categories:
 | 
				
			||||||
      (json['categories'] as List<dynamic>?)
 | 
					      (json['categories'] as List<dynamic>?)
 | 
				
			||||||
          ?.map((e) => PostCategory.fromJson(e as Map<String, dynamic>))
 | 
					          ?.map((e) => SnPostCategory.fromJson(e as Map<String, dynamic>))
 | 
				
			||||||
          .toList() ??
 | 
					          .toList() ??
 | 
				
			||||||
      const [],
 | 
					      const [],
 | 
				
			||||||
  collections: json['collections'] as List<dynamic>? ?? const [],
 | 
					  collections: json['collections'] as List<dynamic>? ?? const [],
 | 
				
			||||||
@@ -90,6 +101,7 @@ Map<String, dynamic> _$SnPostToJson(_SnPost instance) => <String, dynamic>{
 | 
				
			|||||||
  'published_at': instance.publishedAt?.toIso8601String(),
 | 
					  'published_at': instance.publishedAt?.toIso8601String(),
 | 
				
			||||||
  'visibility': instance.visibility,
 | 
					  'visibility': instance.visibility,
 | 
				
			||||||
  'content': instance.content,
 | 
					  'content': instance.content,
 | 
				
			||||||
 | 
					  'slug': instance.slug,
 | 
				
			||||||
  'type': instance.type,
 | 
					  'type': instance.type,
 | 
				
			||||||
  'meta': instance.meta,
 | 
					  'meta': instance.meta,
 | 
				
			||||||
  'views_unique': instance.viewsUnique,
 | 
					  'views_unique': instance.viewsUnique,
 | 
				
			||||||
@@ -103,9 +115,12 @@ Map<String, dynamic> _$SnPostToJson(_SnPost instance) => <String, dynamic>{
 | 
				
			|||||||
  'replied_post': instance.repliedPost?.toJson(),
 | 
					  'replied_post': instance.repliedPost?.toJson(),
 | 
				
			||||||
  'forwarded_post_id': instance.forwardedPostId,
 | 
					  'forwarded_post_id': instance.forwardedPostId,
 | 
				
			||||||
  'forwarded_post': instance.forwardedPost?.toJson(),
 | 
					  'forwarded_post': instance.forwardedPost?.toJson(),
 | 
				
			||||||
 | 
					  'realm_id': instance.realmId,
 | 
				
			||||||
 | 
					  'realm': instance.realm?.toJson(),
 | 
				
			||||||
  'attachments': instance.attachments.map((e) => e.toJson()).toList(),
 | 
					  'attachments': instance.attachments.map((e) => e.toJson()).toList(),
 | 
				
			||||||
  'publisher': instance.publisher.toJson(),
 | 
					  'publisher': instance.publisher.toJson(),
 | 
				
			||||||
  'reactions_count': instance.reactionsCount,
 | 
					  'reactions_count': instance.reactionsCount,
 | 
				
			||||||
 | 
					  'reactions_made': instance.reactionsMade,
 | 
				
			||||||
  'reactions': instance.reactions,
 | 
					  'reactions': instance.reactions,
 | 
				
			||||||
  'tags': instance.tags.map((e) => e.toJson()).toList(),
 | 
					  'tags': instance.tags.map((e) => e.toJson()).toList(),
 | 
				
			||||||
  'categories': instance.categories.map((e) => e.toJson()).toList(),
 | 
					  'categories': instance.categories.map((e) => e.toJson()).toList(),
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,19 +1,31 @@
 | 
				
			|||||||
 | 
					import 'package:easy_localization/easy_localization.dart';
 | 
				
			||||||
import 'package:freezed_annotation/freezed_annotation.dart';
 | 
					import 'package:freezed_annotation/freezed_annotation.dart';
 | 
				
			||||||
import 'package:island/models/post.dart';
 | 
					import 'package:island/models/post.dart';
 | 
				
			||||||
 | 
					import 'package:island/services/text.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
part 'post_category.freezed.dart';
 | 
					part 'post_category.freezed.dart';
 | 
				
			||||||
part 'post_category.g.dart';
 | 
					part 'post_category.g.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@freezed
 | 
					@freezed
 | 
				
			||||||
sealed class PostCategory with _$PostCategory {
 | 
					sealed class SnPostCategory with _$SnPostCategory {
 | 
				
			||||||
  const factory PostCategory({
 | 
					  const SnPostCategory._();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const factory SnPostCategory({
 | 
				
			||||||
    required String id,
 | 
					    required String id,
 | 
				
			||||||
    required String slug,
 | 
					    required String slug,
 | 
				
			||||||
    String? name,
 | 
					    String? name,
 | 
				
			||||||
    @Default([]) List<SnPost> posts,
 | 
					    @Default([]) List<SnPost> posts,
 | 
				
			||||||
  }) = _PostCategory;
 | 
					    @Default(0) int usage,
 | 
				
			||||||
 | 
					  }) = _SnPostCategory;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  factory PostCategory.fromJson(Map<String, dynamic> json) =>
 | 
					  factory SnPostCategory.fromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
      _$PostCategoryFromJson(json);
 | 
					      _$SnPostCategoryFromJson(json);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  String get categoryDisplayTitle {
 | 
				
			||||||
 | 
					    final capitalizedSlug = slug.capitalizeEachWord();
 | 
				
			||||||
 | 
					    if ('postCategory$capitalizedSlug'.trExists()) {
 | 
				
			||||||
 | 
					      return 'postCategory$capitalizedSlug'.tr();
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    return name ?? slug;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
// dart format width=80
 | 
					 | 
				
			||||||
// coverage:ignore-file
 | 
					 | 
				
			||||||
// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					// coverage:ignore-file
 | 
				
			||||||
// ignore_for_file: type=lint
 | 
					// ignore_for_file: type=lint
 | 
				
			||||||
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
					// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -14,42 +13,42 @@ part of 'post_category.dart';
 | 
				
			|||||||
T _$identity<T>(T value) => value;
 | 
					T _$identity<T>(T value) => value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
mixin _$PostCategory {
 | 
					mixin _$SnPostCategory {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 String get id; String get slug; String? get name; List<SnPost> get posts;
 | 
					 String get id; String get slug; String? get name; List<SnPost> get posts; int get usage;
 | 
				
			||||||
/// Create a copy of PostCategory
 | 
					/// Create a copy of SnPostCategory
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
@pragma('vm:prefer-inline')
 | 
					@pragma('vm:prefer-inline')
 | 
				
			||||||
$PostCategoryCopyWith<PostCategory> get copyWith => _$PostCategoryCopyWithImpl<PostCategory>(this as PostCategory, _$identity);
 | 
					$SnPostCategoryCopyWith<SnPostCategory> get copyWith => _$SnPostCategoryCopyWithImpl<SnPostCategory>(this as SnPostCategory, _$identity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /// Serializes this PostCategory to a JSON map.
 | 
					  /// Serializes this SnPostCategory to a JSON map.
 | 
				
			||||||
  Map<String, dynamic> toJson();
 | 
					  Map<String, dynamic> toJson();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
bool operator ==(Object other) {
 | 
					bool operator ==(Object other) {
 | 
				
			||||||
  return identical(this, other) || (other.runtimeType == runtimeType&&other is PostCategory&&(identical(other.id, id) || other.id == id)&&(identical(other.slug, slug) || other.slug == slug)&&(identical(other.name, name) || other.name == name)&&const DeepCollectionEquality().equals(other.posts, posts));
 | 
					  return identical(this, other) || (other.runtimeType == runtimeType&&other is SnPostCategory&&(identical(other.id, id) || other.id == id)&&(identical(other.slug, slug) || other.slug == slug)&&(identical(other.name, name) || other.name == name)&&const DeepCollectionEquality().equals(other.posts, posts)&&(identical(other.usage, usage) || other.usage == usage));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
int get hashCode => Object.hash(runtimeType,id,slug,name,const DeepCollectionEquality().hash(posts));
 | 
					int get hashCode => Object.hash(runtimeType,id,slug,name,const DeepCollectionEquality().hash(posts),usage);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
String toString() {
 | 
					String toString() {
 | 
				
			||||||
  return 'PostCategory(id: $id, slug: $slug, name: $name, posts: $posts)';
 | 
					  return 'SnPostCategory(id: $id, slug: $slug, name: $name, posts: $posts, usage: $usage)';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
abstract mixin class $PostCategoryCopyWith<$Res>  {
 | 
					abstract mixin class $SnPostCategoryCopyWith<$Res>  {
 | 
				
			||||||
  factory $PostCategoryCopyWith(PostCategory value, $Res Function(PostCategory) _then) = _$PostCategoryCopyWithImpl;
 | 
					  factory $SnPostCategoryCopyWith(SnPostCategory value, $Res Function(SnPostCategory) _then) = _$SnPostCategoryCopyWithImpl;
 | 
				
			||||||
@useResult
 | 
					@useResult
 | 
				
			||||||
$Res call({
 | 
					$Res call({
 | 
				
			||||||
 String id, String slug, String? name, List<SnPost> posts
 | 
					 String id, String slug, String? name, List<SnPost> posts, int usage
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -57,34 +56,159 @@ $Res call({
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
class _$PostCategoryCopyWithImpl<$Res>
 | 
					class _$SnPostCategoryCopyWithImpl<$Res>
 | 
				
			||||||
    implements $PostCategoryCopyWith<$Res> {
 | 
					    implements $SnPostCategoryCopyWith<$Res> {
 | 
				
			||||||
  _$PostCategoryCopyWithImpl(this._self, this._then);
 | 
					  _$SnPostCategoryCopyWithImpl(this._self, this._then);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  final PostCategory _self;
 | 
					  final SnPostCategory _self;
 | 
				
			||||||
  final $Res Function(PostCategory) _then;
 | 
					  final $Res Function(SnPostCategory) _then;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Create a copy of PostCategory
 | 
					/// Create a copy of SnPostCategory
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@pragma('vm:prefer-inline') @override $Res call({Object? id = null,Object? slug = null,Object? name = freezed,Object? posts = null,}) {
 | 
					@pragma('vm:prefer-inline') @override $Res call({Object? id = null,Object? slug = null,Object? name = freezed,Object? posts = null,Object? usage = null,}) {
 | 
				
			||||||
  return _then(_self.copyWith(
 | 
					  return _then(_self.copyWith(
 | 
				
			||||||
id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
					id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,slug: null == slug ? _self.slug : slug // ignore: cast_nullable_to_non_nullable
 | 
					as String,slug: null == slug ? _self.slug : slug // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,name: freezed == name ? _self.name : name // ignore: cast_nullable_to_non_nullable
 | 
					as String,name: freezed == name ? _self.name : name // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String?,posts: null == posts ? _self.posts : posts // ignore: cast_nullable_to_non_nullable
 | 
					as String?,posts: null == posts ? _self.posts : posts // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as List<SnPost>,
 | 
					as List<SnPost>,usage: null == usage ? _self.usage : usage // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as int,
 | 
				
			||||||
  ));
 | 
					  ));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnPostCategory].
 | 
				
			||||||
 | 
					extension SnPostCategoryPatterns on SnPostCategory {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnPostCategory value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPostCategory() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnPostCategory value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPostCategory():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnPostCategory value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPostCategory() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  String slug,  String? name,  List<SnPost> posts,  int usage)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPostCategory() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.slug,_that.name,_that.posts,_that.usage);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  String slug,  String? name,  List<SnPost> posts,  int usage)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPostCategory():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.slug,_that.name,_that.posts,_that.usage);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  String slug,  String? name,  List<SnPost> posts,  int usage)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPostCategory() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.slug,_that.name,_that.posts,_that.usage);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class _PostCategory implements PostCategory {
 | 
					class _SnPostCategory extends SnPostCategory {
 | 
				
			||||||
  const _PostCategory({required this.id, required this.slug, this.name, final  List<SnPost> posts = const []}): _posts = posts;
 | 
					  const _SnPostCategory({required this.id, required this.slug, this.name, final  List<SnPost> posts = const [], this.usage = 0}): _posts = posts,super._();
 | 
				
			||||||
  factory _PostCategory.fromJson(Map<String, dynamic> json) => _$PostCategoryFromJson(json);
 | 
					  factory _SnPostCategory.fromJson(Map<String, dynamic> json) => _$SnPostCategoryFromJson(json);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override final  String id;
 | 
					@override final  String id;
 | 
				
			||||||
@override final  String slug;
 | 
					@override final  String slug;
 | 
				
			||||||
@@ -96,41 +220,42 @@ class _PostCategory implements PostCategory {
 | 
				
			|||||||
  return EqualUnmodifiableListView(_posts);
 | 
					  return EqualUnmodifiableListView(_posts);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override@JsonKey() final  int usage;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Create a copy of PostCategory
 | 
					/// Create a copy of SnPostCategory
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@override @JsonKey(includeFromJson: false, includeToJson: false)
 | 
					@override @JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
@pragma('vm:prefer-inline')
 | 
					@pragma('vm:prefer-inline')
 | 
				
			||||||
_$PostCategoryCopyWith<_PostCategory> get copyWith => __$PostCategoryCopyWithImpl<_PostCategory>(this, _$identity);
 | 
					_$SnPostCategoryCopyWith<_SnPostCategory> get copyWith => __$SnPostCategoryCopyWithImpl<_SnPostCategory>(this, _$identity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
Map<String, dynamic> toJson() {
 | 
					Map<String, dynamic> toJson() {
 | 
				
			||||||
  return _$PostCategoryToJson(this, );
 | 
					  return _$SnPostCategoryToJson(this, );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
bool operator ==(Object other) {
 | 
					bool operator ==(Object other) {
 | 
				
			||||||
  return identical(this, other) || (other.runtimeType == runtimeType&&other is _PostCategory&&(identical(other.id, id) || other.id == id)&&(identical(other.slug, slug) || other.slug == slug)&&(identical(other.name, name) || other.name == name)&&const DeepCollectionEquality().equals(other._posts, _posts));
 | 
					  return identical(this, other) || (other.runtimeType == runtimeType&&other is _SnPostCategory&&(identical(other.id, id) || other.id == id)&&(identical(other.slug, slug) || other.slug == slug)&&(identical(other.name, name) || other.name == name)&&const DeepCollectionEquality().equals(other._posts, _posts)&&(identical(other.usage, usage) || other.usage == usage));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
int get hashCode => Object.hash(runtimeType,id,slug,name,const DeepCollectionEquality().hash(_posts));
 | 
					int get hashCode => Object.hash(runtimeType,id,slug,name,const DeepCollectionEquality().hash(_posts),usage);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
String toString() {
 | 
					String toString() {
 | 
				
			||||||
  return 'PostCategory(id: $id, slug: $slug, name: $name, posts: $posts)';
 | 
					  return 'SnPostCategory(id: $id, slug: $slug, name: $name, posts: $posts, usage: $usage)';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
abstract mixin class _$PostCategoryCopyWith<$Res> implements $PostCategoryCopyWith<$Res> {
 | 
					abstract mixin class _$SnPostCategoryCopyWith<$Res> implements $SnPostCategoryCopyWith<$Res> {
 | 
				
			||||||
  factory _$PostCategoryCopyWith(_PostCategory value, $Res Function(_PostCategory) _then) = __$PostCategoryCopyWithImpl;
 | 
					  factory _$SnPostCategoryCopyWith(_SnPostCategory value, $Res Function(_SnPostCategory) _then) = __$SnPostCategoryCopyWithImpl;
 | 
				
			||||||
@override @useResult
 | 
					@override @useResult
 | 
				
			||||||
$Res call({
 | 
					$Res call({
 | 
				
			||||||
 String id, String slug, String? name, List<SnPost> posts
 | 
					 String id, String slug, String? name, List<SnPost> posts, int usage
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -138,22 +263,23 @@ $Res call({
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
class __$PostCategoryCopyWithImpl<$Res>
 | 
					class __$SnPostCategoryCopyWithImpl<$Res>
 | 
				
			||||||
    implements _$PostCategoryCopyWith<$Res> {
 | 
					    implements _$SnPostCategoryCopyWith<$Res> {
 | 
				
			||||||
  __$PostCategoryCopyWithImpl(this._self, this._then);
 | 
					  __$SnPostCategoryCopyWithImpl(this._self, this._then);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  final _PostCategory _self;
 | 
					  final _SnPostCategory _self;
 | 
				
			||||||
  final $Res Function(_PostCategory) _then;
 | 
					  final $Res Function(_SnPostCategory) _then;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Create a copy of PostCategory
 | 
					/// Create a copy of SnPostCategory
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@override @pragma('vm:prefer-inline') $Res call({Object? id = null,Object? slug = null,Object? name = freezed,Object? posts = null,}) {
 | 
					@override @pragma('vm:prefer-inline') $Res call({Object? id = null,Object? slug = null,Object? name = freezed,Object? posts = null,Object? usage = null,}) {
 | 
				
			||||||
  return _then(_PostCategory(
 | 
					  return _then(_SnPostCategory(
 | 
				
			||||||
id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
					id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,slug: null == slug ? _self.slug : slug // ignore: cast_nullable_to_non_nullable
 | 
					as String,slug: null == slug ? _self.slug : slug // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,name: freezed == name ? _self.name : name // ignore: cast_nullable_to_non_nullable
 | 
					as String,name: freezed == name ? _self.name : name // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String?,posts: null == posts ? _self._posts : posts // ignore: cast_nullable_to_non_nullable
 | 
					as String?,posts: null == posts ? _self._posts : posts // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as List<SnPost>,
 | 
					as List<SnPost>,usage: null == usage ? _self.usage : usage // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as int,
 | 
				
			||||||
  ));
 | 
					  ));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,8 +6,8 @@ part of 'post_category.dart';
 | 
				
			|||||||
// JsonSerializableGenerator
 | 
					// JsonSerializableGenerator
 | 
				
			||||||
// **************************************************************************
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					
 | 
				
			||||||
_PostCategory _$PostCategoryFromJson(Map<String, dynamic> json) =>
 | 
					_SnPostCategory _$SnPostCategoryFromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
    _PostCategory(
 | 
					    _SnPostCategory(
 | 
				
			||||||
      id: json['id'] as String,
 | 
					      id: json['id'] as String,
 | 
				
			||||||
      slug: json['slug'] as String,
 | 
					      slug: json['slug'] as String,
 | 
				
			||||||
      name: json['name'] as String?,
 | 
					      name: json['name'] as String?,
 | 
				
			||||||
@@ -16,12 +16,14 @@ _PostCategory _$PostCategoryFromJson(Map<String, dynamic> json) =>
 | 
				
			|||||||
              ?.map((e) => SnPost.fromJson(e as Map<String, dynamic>))
 | 
					              ?.map((e) => SnPost.fromJson(e as Map<String, dynamic>))
 | 
				
			||||||
              .toList() ??
 | 
					              .toList() ??
 | 
				
			||||||
          const [],
 | 
					          const [],
 | 
				
			||||||
 | 
					      usage: (json['usage'] as num?)?.toInt() ?? 0,
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Map<String, dynamic> _$PostCategoryToJson(_PostCategory instance) =>
 | 
					Map<String, dynamic> _$SnPostCategoryToJson(_SnPostCategory instance) =>
 | 
				
			||||||
    <String, dynamic>{
 | 
					    <String, dynamic>{
 | 
				
			||||||
      'id': instance.id,
 | 
					      'id': instance.id,
 | 
				
			||||||
      'slug': instance.slug,
 | 
					      'slug': instance.slug,
 | 
				
			||||||
      'name': instance.name,
 | 
					      'name': instance.name,
 | 
				
			||||||
      'posts': instance.posts.map((e) => e.toJson()).toList(),
 | 
					      'posts': instance.posts.map((e) => e.toJson()).toList(),
 | 
				
			||||||
 | 
					      'usage': instance.usage,
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,3 @@
 | 
				
			|||||||
 | 
					 | 
				
			||||||
import 'package:freezed_annotation/freezed_annotation.dart';
 | 
					import 'package:freezed_annotation/freezed_annotation.dart';
 | 
				
			||||||
import 'package:island/models/post.dart';
 | 
					import 'package:island/models/post.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -6,14 +5,15 @@ part 'post_tag.freezed.dart';
 | 
				
			|||||||
part 'post_tag.g.dart';
 | 
					part 'post_tag.g.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@freezed
 | 
					@freezed
 | 
				
			||||||
sealed class PostTag with _$PostTag {
 | 
					sealed class SnPostTag with _$SnPostTag {
 | 
				
			||||||
  const factory PostTag({
 | 
					  const factory SnPostTag({
 | 
				
			||||||
    required String id,
 | 
					    required String id,
 | 
				
			||||||
    required String slug,
 | 
					    required String slug,
 | 
				
			||||||
    String? name,
 | 
					    String? name,
 | 
				
			||||||
    @Default([]) List<SnPost> posts,
 | 
					    @Default([]) List<SnPost> posts,
 | 
				
			||||||
  }) = _PostTag;
 | 
					    @Default(0) int usage,
 | 
				
			||||||
 | 
					  }) = _SnPostTag;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  factory PostTag.fromJson(Map<String, dynamic> json) =>
 | 
					  factory SnPostTag.fromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
      _$PostTagFromJson(json);
 | 
					      _$SnPostTagFromJson(json);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
// dart format width=80
 | 
					 | 
				
			||||||
// coverage:ignore-file
 | 
					 | 
				
			||||||
// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					// coverage:ignore-file
 | 
				
			||||||
// ignore_for_file: type=lint
 | 
					// ignore_for_file: type=lint
 | 
				
			||||||
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
					// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -14,42 +13,42 @@ part of 'post_tag.dart';
 | 
				
			|||||||
T _$identity<T>(T value) => value;
 | 
					T _$identity<T>(T value) => value;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
mixin _$PostTag {
 | 
					mixin _$SnPostTag {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 String get id; String get slug; String? get name; List<SnPost> get posts;
 | 
					 String get id; String get slug; String? get name; List<SnPost> get posts; int get usage;
 | 
				
			||||||
/// Create a copy of PostTag
 | 
					/// Create a copy of SnPostTag
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
@pragma('vm:prefer-inline')
 | 
					@pragma('vm:prefer-inline')
 | 
				
			||||||
$PostTagCopyWith<PostTag> get copyWith => _$PostTagCopyWithImpl<PostTag>(this as PostTag, _$identity);
 | 
					$SnPostTagCopyWith<SnPostTag> get copyWith => _$SnPostTagCopyWithImpl<SnPostTag>(this as SnPostTag, _$identity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /// Serializes this PostTag to a JSON map.
 | 
					  /// Serializes this SnPostTag to a JSON map.
 | 
				
			||||||
  Map<String, dynamic> toJson();
 | 
					  Map<String, dynamic> toJson();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
bool operator ==(Object other) {
 | 
					bool operator ==(Object other) {
 | 
				
			||||||
  return identical(this, other) || (other.runtimeType == runtimeType&&other is PostTag&&(identical(other.id, id) || other.id == id)&&(identical(other.slug, slug) || other.slug == slug)&&(identical(other.name, name) || other.name == name)&&const DeepCollectionEquality().equals(other.posts, posts));
 | 
					  return identical(this, other) || (other.runtimeType == runtimeType&&other is SnPostTag&&(identical(other.id, id) || other.id == id)&&(identical(other.slug, slug) || other.slug == slug)&&(identical(other.name, name) || other.name == name)&&const DeepCollectionEquality().equals(other.posts, posts)&&(identical(other.usage, usage) || other.usage == usage));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
int get hashCode => Object.hash(runtimeType,id,slug,name,const DeepCollectionEquality().hash(posts));
 | 
					int get hashCode => Object.hash(runtimeType,id,slug,name,const DeepCollectionEquality().hash(posts),usage);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
String toString() {
 | 
					String toString() {
 | 
				
			||||||
  return 'PostTag(id: $id, slug: $slug, name: $name, posts: $posts)';
 | 
					  return 'SnPostTag(id: $id, slug: $slug, name: $name, posts: $posts, usage: $usage)';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
abstract mixin class $PostTagCopyWith<$Res>  {
 | 
					abstract mixin class $SnPostTagCopyWith<$Res>  {
 | 
				
			||||||
  factory $PostTagCopyWith(PostTag value, $Res Function(PostTag) _then) = _$PostTagCopyWithImpl;
 | 
					  factory $SnPostTagCopyWith(SnPostTag value, $Res Function(SnPostTag) _then) = _$SnPostTagCopyWithImpl;
 | 
				
			||||||
@useResult
 | 
					@useResult
 | 
				
			||||||
$Res call({
 | 
					$Res call({
 | 
				
			||||||
 String id, String slug, String? name, List<SnPost> posts
 | 
					 String id, String slug, String? name, List<SnPost> posts, int usage
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -57,34 +56,159 @@ $Res call({
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
class _$PostTagCopyWithImpl<$Res>
 | 
					class _$SnPostTagCopyWithImpl<$Res>
 | 
				
			||||||
    implements $PostTagCopyWith<$Res> {
 | 
					    implements $SnPostTagCopyWith<$Res> {
 | 
				
			||||||
  _$PostTagCopyWithImpl(this._self, this._then);
 | 
					  _$SnPostTagCopyWithImpl(this._self, this._then);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  final PostTag _self;
 | 
					  final SnPostTag _self;
 | 
				
			||||||
  final $Res Function(PostTag) _then;
 | 
					  final $Res Function(SnPostTag) _then;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Create a copy of PostTag
 | 
					/// Create a copy of SnPostTag
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@pragma('vm:prefer-inline') @override $Res call({Object? id = null,Object? slug = null,Object? name = freezed,Object? posts = null,}) {
 | 
					@pragma('vm:prefer-inline') @override $Res call({Object? id = null,Object? slug = null,Object? name = freezed,Object? posts = null,Object? usage = null,}) {
 | 
				
			||||||
  return _then(_self.copyWith(
 | 
					  return _then(_self.copyWith(
 | 
				
			||||||
id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
					id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,slug: null == slug ? _self.slug : slug // ignore: cast_nullable_to_non_nullable
 | 
					as String,slug: null == slug ? _self.slug : slug // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,name: freezed == name ? _self.name : name // ignore: cast_nullable_to_non_nullable
 | 
					as String,name: freezed == name ? _self.name : name // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String?,posts: null == posts ? _self.posts : posts // ignore: cast_nullable_to_non_nullable
 | 
					as String?,posts: null == posts ? _self.posts : posts // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as List<SnPost>,
 | 
					as List<SnPost>,usage: null == usage ? _self.usage : usage // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as int,
 | 
				
			||||||
  ));
 | 
					  ));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnPostTag].
 | 
				
			||||||
 | 
					extension SnPostTagPatterns on SnPostTag {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnPostTag value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPostTag() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnPostTag value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPostTag():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnPostTag value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPostTag() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  String slug,  String? name,  List<SnPost> posts,  int usage)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPostTag() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.slug,_that.name,_that.posts,_that.usage);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  String slug,  String? name,  List<SnPost> posts,  int usage)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPostTag():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.slug,_that.name,_that.posts,_that.usage);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  String slug,  String? name,  List<SnPost> posts,  int usage)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPostTag() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.slug,_that.name,_that.posts,_that.usage);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class _PostTag implements PostTag {
 | 
					class _SnPostTag implements SnPostTag {
 | 
				
			||||||
  const _PostTag({required this.id, required this.slug, this.name, final  List<SnPost> posts = const []}): _posts = posts;
 | 
					  const _SnPostTag({required this.id, required this.slug, this.name, final  List<SnPost> posts = const [], this.usage = 0}): _posts = posts;
 | 
				
			||||||
  factory _PostTag.fromJson(Map<String, dynamic> json) => _$PostTagFromJson(json);
 | 
					  factory _SnPostTag.fromJson(Map<String, dynamic> json) => _$SnPostTagFromJson(json);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override final  String id;
 | 
					@override final  String id;
 | 
				
			||||||
@override final  String slug;
 | 
					@override final  String slug;
 | 
				
			||||||
@@ -96,41 +220,42 @@ class _PostTag implements PostTag {
 | 
				
			|||||||
  return EqualUnmodifiableListView(_posts);
 | 
					  return EqualUnmodifiableListView(_posts);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@override@JsonKey() final  int usage;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Create a copy of PostTag
 | 
					/// Create a copy of SnPostTag
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@override @JsonKey(includeFromJson: false, includeToJson: false)
 | 
					@override @JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
@pragma('vm:prefer-inline')
 | 
					@pragma('vm:prefer-inline')
 | 
				
			||||||
_$PostTagCopyWith<_PostTag> get copyWith => __$PostTagCopyWithImpl<_PostTag>(this, _$identity);
 | 
					_$SnPostTagCopyWith<_SnPostTag> get copyWith => __$SnPostTagCopyWithImpl<_SnPostTag>(this, _$identity);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
Map<String, dynamic> toJson() {
 | 
					Map<String, dynamic> toJson() {
 | 
				
			||||||
  return _$PostTagToJson(this, );
 | 
					  return _$SnPostTagToJson(this, );
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
bool operator ==(Object other) {
 | 
					bool operator ==(Object other) {
 | 
				
			||||||
  return identical(this, other) || (other.runtimeType == runtimeType&&other is _PostTag&&(identical(other.id, id) || other.id == id)&&(identical(other.slug, slug) || other.slug == slug)&&(identical(other.name, name) || other.name == name)&&const DeepCollectionEquality().equals(other._posts, _posts));
 | 
					  return identical(this, other) || (other.runtimeType == runtimeType&&other is _SnPostTag&&(identical(other.id, id) || other.id == id)&&(identical(other.slug, slug) || other.slug == slug)&&(identical(other.name, name) || other.name == name)&&const DeepCollectionEquality().equals(other._posts, _posts)&&(identical(other.usage, usage) || other.usage == usage));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
int get hashCode => Object.hash(runtimeType,id,slug,name,const DeepCollectionEquality().hash(_posts));
 | 
					int get hashCode => Object.hash(runtimeType,id,slug,name,const DeepCollectionEquality().hash(_posts),usage);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
String toString() {
 | 
					String toString() {
 | 
				
			||||||
  return 'PostTag(id: $id, slug: $slug, name: $name, posts: $posts)';
 | 
					  return 'SnPostTag(id: $id, slug: $slug, name: $name, posts: $posts, usage: $usage)';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
abstract mixin class _$PostTagCopyWith<$Res> implements $PostTagCopyWith<$Res> {
 | 
					abstract mixin class _$SnPostTagCopyWith<$Res> implements $SnPostTagCopyWith<$Res> {
 | 
				
			||||||
  factory _$PostTagCopyWith(_PostTag value, $Res Function(_PostTag) _then) = __$PostTagCopyWithImpl;
 | 
					  factory _$SnPostTagCopyWith(_SnPostTag value, $Res Function(_SnPostTag) _then) = __$SnPostTagCopyWithImpl;
 | 
				
			||||||
@override @useResult
 | 
					@override @useResult
 | 
				
			||||||
$Res call({
 | 
					$Res call({
 | 
				
			||||||
 String id, String slug, String? name, List<SnPost> posts
 | 
					 String id, String slug, String? name, List<SnPost> posts, int usage
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -138,22 +263,23 @@ $Res call({
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
class __$PostTagCopyWithImpl<$Res>
 | 
					class __$SnPostTagCopyWithImpl<$Res>
 | 
				
			||||||
    implements _$PostTagCopyWith<$Res> {
 | 
					    implements _$SnPostTagCopyWith<$Res> {
 | 
				
			||||||
  __$PostTagCopyWithImpl(this._self, this._then);
 | 
					  __$SnPostTagCopyWithImpl(this._self, this._then);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  final _PostTag _self;
 | 
					  final _SnPostTag _self;
 | 
				
			||||||
  final $Res Function(_PostTag) _then;
 | 
					  final $Res Function(_SnPostTag) _then;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Create a copy of PostTag
 | 
					/// Create a copy of SnPostTag
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@override @pragma('vm:prefer-inline') $Res call({Object? id = null,Object? slug = null,Object? name = freezed,Object? posts = null,}) {
 | 
					@override @pragma('vm:prefer-inline') $Res call({Object? id = null,Object? slug = null,Object? name = freezed,Object? posts = null,Object? usage = null,}) {
 | 
				
			||||||
  return _then(_PostTag(
 | 
					  return _then(_SnPostTag(
 | 
				
			||||||
id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
					id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,slug: null == slug ? _self.slug : slug // ignore: cast_nullable_to_non_nullable
 | 
					as String,slug: null == slug ? _self.slug : slug // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,name: freezed == name ? _self.name : name // ignore: cast_nullable_to_non_nullable
 | 
					as String,name: freezed == name ? _self.name : name // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String?,posts: null == posts ? _self._posts : posts // ignore: cast_nullable_to_non_nullable
 | 
					as String?,posts: null == posts ? _self._posts : posts // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as List<SnPost>,
 | 
					as List<SnPost>,usage: null == usage ? _self.usage : usage // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as int,
 | 
				
			||||||
  ));
 | 
					  ));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@ part of 'post_tag.dart';
 | 
				
			|||||||
// JsonSerializableGenerator
 | 
					// JsonSerializableGenerator
 | 
				
			||||||
// **************************************************************************
 | 
					// **************************************************************************
 | 
				
			||||||
 | 
					
 | 
				
			||||||
_PostTag _$PostTagFromJson(Map<String, dynamic> json) => _PostTag(
 | 
					_SnPostTag _$SnPostTagFromJson(Map<String, dynamic> json) => _SnPostTag(
 | 
				
			||||||
  id: json['id'] as String,
 | 
					  id: json['id'] as String,
 | 
				
			||||||
  slug: json['slug'] as String,
 | 
					  slug: json['slug'] as String,
 | 
				
			||||||
  name: json['name'] as String?,
 | 
					  name: json['name'] as String?,
 | 
				
			||||||
@@ -15,11 +15,14 @@ _PostTag _$PostTagFromJson(Map<String, dynamic> json) => _PostTag(
 | 
				
			|||||||
          ?.map((e) => SnPost.fromJson(e as Map<String, dynamic>))
 | 
					          ?.map((e) => SnPost.fromJson(e as Map<String, dynamic>))
 | 
				
			||||||
          .toList() ??
 | 
					          .toList() ??
 | 
				
			||||||
      const [],
 | 
					      const [],
 | 
				
			||||||
 | 
					  usage: (json['usage'] as num?)?.toInt() ?? 0,
 | 
				
			||||||
);
 | 
					);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Map<String, dynamic> _$PostTagToJson(_PostTag instance) => <String, dynamic>{
 | 
					Map<String, dynamic> _$SnPostTagToJson(_SnPostTag instance) =>
 | 
				
			||||||
  'id': instance.id,
 | 
					    <String, dynamic>{
 | 
				
			||||||
  'slug': instance.slug,
 | 
					      'id': instance.id,
 | 
				
			||||||
  'name': instance.name,
 | 
					      'slug': instance.slug,
 | 
				
			||||||
  'posts': instance.posts.map((e) => e.toJson()).toList(),
 | 
					      'name': instance.name,
 | 
				
			||||||
};
 | 
					      'posts': instance.posts.map((e) => e.toJson()).toList(),
 | 
				
			||||||
 | 
					      'usage': instance.usage,
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
import 'package:freezed_annotation/freezed_annotation.dart';
 | 
					import 'package:freezed_annotation/freezed_annotation.dart';
 | 
				
			||||||
import 'package:island/models/file.dart';
 | 
					import 'package:island/models/file.dart';
 | 
				
			||||||
import 'package:island/models/user.dart';
 | 
					import 'package:island/models/account.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
part 'publisher.freezed.dart';
 | 
					part 'publisher.freezed.dart';
 | 
				
			||||||
part 'publisher.g.dart';
 | 
					part 'publisher.g.dart';
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
// dart format width=80
 | 
					 | 
				
			||||||
// coverage:ignore-file
 | 
					 | 
				
			||||||
// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					// coverage:ignore-file
 | 
				
			||||||
// ignore_for_file: type=lint
 | 
					// ignore_for_file: type=lint
 | 
				
			||||||
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
					// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -137,6 +136,130 @@ $SnVerificationMarkCopyWith<$Res>? get verification {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnPublisher].
 | 
				
			||||||
 | 
					extension SnPublisherPatterns on SnPublisher {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnPublisher value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPublisher() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnPublisher value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPublisher():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnPublisher value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPublisher() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  int type,  String name,  String nick,  String bio,  SnCloudFile? picture,  SnCloudFile? background,  SnAccount? account,  String? accountId,  DateTime? createdAt,  DateTime? updatedAt,  DateTime? deletedAt,  String? realmId,  SnVerificationMark? verification)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPublisher() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.type,_that.name,_that.nick,_that.bio,_that.picture,_that.background,_that.account,_that.accountId,_that.createdAt,_that.updatedAt,_that.deletedAt,_that.realmId,_that.verification);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  int type,  String name,  String nick,  String bio,  SnCloudFile? picture,  SnCloudFile? background,  SnAccount? account,  String? accountId,  DateTime? createdAt,  DateTime? updatedAt,  DateTime? deletedAt,  String? realmId,  SnVerificationMark? verification)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPublisher():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.type,_that.name,_that.nick,_that.bio,_that.picture,_that.background,_that.account,_that.accountId,_that.createdAt,_that.updatedAt,_that.deletedAt,_that.realmId,_that.verification);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  int type,  String name,  String nick,  String bio,  SnCloudFile? picture,  SnCloudFile? background,  SnAccount? account,  String? accountId,  DateTime? createdAt,  DateTime? updatedAt,  DateTime? deletedAt,  String? realmId,  SnVerificationMark? verification)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPublisher() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.type,_that.name,_that.nick,_that.bio,_that.picture,_that.background,_that.account,_that.accountId,_that.createdAt,_that.updatedAt,_that.deletedAt,_that.realmId,_that.verification);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -376,6 +499,130 @@ $SnAccountCopyWith<$Res>? get account {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnPublisherMember].
 | 
				
			||||||
 | 
					extension SnPublisherMemberPatterns on SnPublisherMember {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnPublisherMember value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPublisherMember() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnPublisherMember value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPublisherMember():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnPublisherMember value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPublisherMember() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String publisherId,  SnPublisher? publisher,  String accountId,  SnAccount? account,  int role,  DateTime? joinedAt,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPublisherMember() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.publisherId,_that.publisher,_that.accountId,_that.account,_that.role,_that.joinedAt,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String publisherId,  SnPublisher? publisher,  String accountId,  SnAccount? account,  int role,  DateTime? joinedAt,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPublisherMember():
 | 
				
			||||||
 | 
					return $default(_that.publisherId,_that.publisher,_that.accountId,_that.account,_that.role,_that.joinedAt,_that.createdAt,_that.updatedAt,_that.deletedAt);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String publisherId,  SnPublisher? publisher,  String accountId,  SnAccount? account,  int role,  DateTime? joinedAt,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnPublisherMember() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.publisherId,_that.publisher,_that.accountId,_that.account,_that.role,_that.joinedAt,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
import 'package:freezed_annotation/freezed_annotation.dart';
 | 
					import 'package:freezed_annotation/freezed_annotation.dart';
 | 
				
			||||||
import 'package:island/models/file.dart';
 | 
					import 'package:island/models/file.dart';
 | 
				
			||||||
import 'package:island/models/user.dart';
 | 
					import 'package:island/models/account.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
part 'realm.freezed.dart';
 | 
					part 'realm.freezed.dart';
 | 
				
			||||||
part 'realm.g.dart';
 | 
					part 'realm.g.dart';
 | 
				
			||||||
@@ -40,6 +40,7 @@ sealed class SnRealmMember with _$SnRealmMember {
 | 
				
			|||||||
    required DateTime createdAt,
 | 
					    required DateTime createdAt,
 | 
				
			||||||
    required DateTime updatedAt,
 | 
					    required DateTime updatedAt,
 | 
				
			||||||
    required DateTime? deletedAt,
 | 
					    required DateTime? deletedAt,
 | 
				
			||||||
 | 
					    required SnAccountStatus? status,
 | 
				
			||||||
  }) = _SnRealmMember;
 | 
					  }) = _SnRealmMember;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  factory SnRealmMember.fromJson(Map<String, dynamic> json) =>
 | 
					  factory SnRealmMember.fromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
// dart format width=80
 | 
					 | 
				
			||||||
// coverage:ignore-file
 | 
					 | 
				
			||||||
// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					// coverage:ignore-file
 | 
				
			||||||
// ignore_for_file: type=lint
 | 
					// ignore_for_file: type=lint
 | 
				
			||||||
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
					// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -113,6 +112,130 @@ $SnCloudFileCopyWith<$Res>? get background {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnRealm].
 | 
				
			||||||
 | 
					extension SnRealmPatterns on SnRealm {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnRealm value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnRealm() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnRealm value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnRealm():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnRealm value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnRealm() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  String slug,  String name,  String description,  String? verifiedAs,  DateTime? verifiedAt,  bool isCommunity,  bool isPublic,  SnCloudFile? picture,  SnCloudFile? background,  String accountId,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnRealm() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.slug,_that.name,_that.description,_that.verifiedAs,_that.verifiedAt,_that.isCommunity,_that.isPublic,_that.picture,_that.background,_that.accountId,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  String slug,  String name,  String description,  String? verifiedAs,  DateTime? verifiedAt,  bool isCommunity,  bool isPublic,  SnCloudFile? picture,  SnCloudFile? background,  String accountId,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnRealm():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.slug,_that.name,_that.description,_that.verifiedAs,_that.verifiedAt,_that.isCommunity,_that.isPublic,_that.picture,_that.background,_that.accountId,_that.createdAt,_that.updatedAt,_that.deletedAt);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  String slug,  String name,  String description,  String? verifiedAs,  DateTime? verifiedAt,  bool isCommunity,  bool isPublic,  SnCloudFile? picture,  SnCloudFile? background,  String accountId,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnRealm() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.slug,_that.name,_that.description,_that.verifiedAs,_that.verifiedAt,_that.isCommunity,_that.isPublic,_that.picture,_that.background,_that.accountId,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -236,7 +359,7 @@ $SnCloudFileCopyWith<$Res>? get background {
 | 
				
			|||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
mixin _$SnRealmMember {
 | 
					mixin _$SnRealmMember {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 String get realmId; SnRealm? get realm; String get accountId; SnAccount? get account; int get role; DateTime? get joinedAt; DateTime get createdAt; DateTime get updatedAt; DateTime? get deletedAt;
 | 
					 String get realmId; SnRealm? get realm; String get accountId; SnAccount? get account; int get role; DateTime? get joinedAt; DateTime get createdAt; DateTime get updatedAt; DateTime? get deletedAt; SnAccountStatus? get status;
 | 
				
			||||||
/// Create a copy of SnRealmMember
 | 
					/// Create a copy of SnRealmMember
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
@@ -249,16 +372,16 @@ $SnRealmMemberCopyWith<SnRealmMember> get copyWith => _$SnRealmMemberCopyWithImp
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
bool operator ==(Object other) {
 | 
					bool operator ==(Object other) {
 | 
				
			||||||
  return identical(this, other) || (other.runtimeType == runtimeType&&other is SnRealmMember&&(identical(other.realmId, realmId) || other.realmId == realmId)&&(identical(other.realm, realm) || other.realm == realm)&&(identical(other.accountId, accountId) || other.accountId == accountId)&&(identical(other.account, account) || other.account == account)&&(identical(other.role, role) || other.role == role)&&(identical(other.joinedAt, joinedAt) || other.joinedAt == joinedAt)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.updatedAt, updatedAt) || other.updatedAt == updatedAt)&&(identical(other.deletedAt, deletedAt) || other.deletedAt == deletedAt));
 | 
					  return identical(this, other) || (other.runtimeType == runtimeType&&other is SnRealmMember&&(identical(other.realmId, realmId) || other.realmId == realmId)&&(identical(other.realm, realm) || other.realm == realm)&&(identical(other.accountId, accountId) || other.accountId == accountId)&&(identical(other.account, account) || other.account == account)&&(identical(other.role, role) || other.role == role)&&(identical(other.joinedAt, joinedAt) || other.joinedAt == joinedAt)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.updatedAt, updatedAt) || other.updatedAt == updatedAt)&&(identical(other.deletedAt, deletedAt) || other.deletedAt == deletedAt)&&(identical(other.status, status) || other.status == status));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
int get hashCode => Object.hash(runtimeType,realmId,realm,accountId,account,role,joinedAt,createdAt,updatedAt,deletedAt);
 | 
					int get hashCode => Object.hash(runtimeType,realmId,realm,accountId,account,role,joinedAt,createdAt,updatedAt,deletedAt,status);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
String toString() {
 | 
					String toString() {
 | 
				
			||||||
  return 'SnRealmMember(realmId: $realmId, realm: $realm, accountId: $accountId, account: $account, role: $role, joinedAt: $joinedAt, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt)';
 | 
					  return 'SnRealmMember(realmId: $realmId, realm: $realm, accountId: $accountId, account: $account, role: $role, joinedAt: $joinedAt, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt, status: $status)';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -269,11 +392,11 @@ abstract mixin class $SnRealmMemberCopyWith<$Res>  {
 | 
				
			|||||||
  factory $SnRealmMemberCopyWith(SnRealmMember value, $Res Function(SnRealmMember) _then) = _$SnRealmMemberCopyWithImpl;
 | 
					  factory $SnRealmMemberCopyWith(SnRealmMember value, $Res Function(SnRealmMember) _then) = _$SnRealmMemberCopyWithImpl;
 | 
				
			||||||
@useResult
 | 
					@useResult
 | 
				
			||||||
$Res call({
 | 
					$Res call({
 | 
				
			||||||
 String realmId, SnRealm? realm, String accountId, SnAccount? account, int role, DateTime? joinedAt, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt
 | 
					 String realmId, SnRealm? realm, String accountId, SnAccount? account, int role, DateTime? joinedAt, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt, SnAccountStatus? status
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$SnRealmCopyWith<$Res>? get realm;$SnAccountCopyWith<$Res>? get account;
 | 
					$SnRealmCopyWith<$Res>? get realm;$SnAccountCopyWith<$Res>? get account;$SnAccountStatusCopyWith<$Res>? get status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@@ -286,7 +409,7 @@ class _$SnRealmMemberCopyWithImpl<$Res>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/// Create a copy of SnRealmMember
 | 
					/// Create a copy of SnRealmMember
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@pragma('vm:prefer-inline') @override $Res call({Object? realmId = null,Object? realm = freezed,Object? accountId = null,Object? account = freezed,Object? role = null,Object? joinedAt = freezed,Object? createdAt = null,Object? updatedAt = null,Object? deletedAt = freezed,}) {
 | 
					@pragma('vm:prefer-inline') @override $Res call({Object? realmId = null,Object? realm = freezed,Object? accountId = null,Object? account = freezed,Object? role = null,Object? joinedAt = freezed,Object? createdAt = null,Object? updatedAt = null,Object? deletedAt = freezed,Object? status = freezed,}) {
 | 
				
			||||||
  return _then(_self.copyWith(
 | 
					  return _then(_self.copyWith(
 | 
				
			||||||
realmId: null == realmId ? _self.realmId : realmId // ignore: cast_nullable_to_non_nullable
 | 
					realmId: null == realmId ? _self.realmId : realmId // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,realm: freezed == realm ? _self.realm : realm // ignore: cast_nullable_to_non_nullable
 | 
					as String,realm: freezed == realm ? _self.realm : realm // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
@@ -297,7 +420,8 @@ as int,joinedAt: freezed == joinedAt ? _self.joinedAt : joinedAt // ignore: cast
 | 
				
			|||||||
as DateTime?,createdAt: null == createdAt ? _self.createdAt : createdAt // ignore: cast_nullable_to_non_nullable
 | 
					as DateTime?,createdAt: null == createdAt ? _self.createdAt : createdAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as DateTime,updatedAt: null == updatedAt ? _self.updatedAt : updatedAt // ignore: cast_nullable_to_non_nullable
 | 
					as DateTime,updatedAt: null == updatedAt ? _self.updatedAt : updatedAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as DateTime,deletedAt: freezed == deletedAt ? _self.deletedAt : deletedAt // ignore: cast_nullable_to_non_nullable
 | 
					as DateTime,deletedAt: freezed == deletedAt ? _self.deletedAt : deletedAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as DateTime?,
 | 
					as DateTime?,status: freezed == status ? _self.status : status // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as SnAccountStatus?,
 | 
				
			||||||
  ));
 | 
					  ));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
/// Create a copy of SnRealmMember
 | 
					/// Create a copy of SnRealmMember
 | 
				
			||||||
@@ -324,15 +448,151 @@ $SnAccountCopyWith<$Res>? get account {
 | 
				
			|||||||
  return $SnAccountCopyWith<$Res>(_self.account!, (value) {
 | 
					  return $SnAccountCopyWith<$Res>(_self.account!, (value) {
 | 
				
			||||||
    return _then(_self.copyWith(account: value));
 | 
					    return _then(_self.copyWith(account: value));
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					}/// Create a copy of SnRealmMember
 | 
				
			||||||
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					@pragma('vm:prefer-inline')
 | 
				
			||||||
 | 
					$SnAccountStatusCopyWith<$Res>? get status {
 | 
				
			||||||
 | 
					    if (_self.status == null) {
 | 
				
			||||||
 | 
					    return null;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return $SnAccountStatusCopyWith<$Res>(_self.status!, (value) {
 | 
				
			||||||
 | 
					    return _then(_self.copyWith(status: value));
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnRealmMember].
 | 
				
			||||||
 | 
					extension SnRealmMemberPatterns on SnRealmMember {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnRealmMember value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnRealmMember() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnRealmMember value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnRealmMember():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnRealmMember value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnRealmMember() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String realmId,  SnRealm? realm,  String accountId,  SnAccount? account,  int role,  DateTime? joinedAt,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt,  SnAccountStatus? status)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnRealmMember() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.realmId,_that.realm,_that.accountId,_that.account,_that.role,_that.joinedAt,_that.createdAt,_that.updatedAt,_that.deletedAt,_that.status);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String realmId,  SnRealm? realm,  String accountId,  SnAccount? account,  int role,  DateTime? joinedAt,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt,  SnAccountStatus? status)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnRealmMember():
 | 
				
			||||||
 | 
					return $default(_that.realmId,_that.realm,_that.accountId,_that.account,_that.role,_that.joinedAt,_that.createdAt,_that.updatedAt,_that.deletedAt,_that.status);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String realmId,  SnRealm? realm,  String accountId,  SnAccount? account,  int role,  DateTime? joinedAt,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt,  SnAccountStatus? status)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnRealmMember() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.realmId,_that.realm,_that.accountId,_that.account,_that.role,_that.joinedAt,_that.createdAt,_that.updatedAt,_that.deletedAt,_that.status);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class _SnRealmMember implements SnRealmMember {
 | 
					class _SnRealmMember implements SnRealmMember {
 | 
				
			||||||
  const _SnRealmMember({required this.realmId, required this.realm, required this.accountId, required this.account, required this.role, required this.joinedAt, required this.createdAt, required this.updatedAt, required this.deletedAt});
 | 
					  const _SnRealmMember({required this.realmId, required this.realm, required this.accountId, required this.account, required this.role, required this.joinedAt, required this.createdAt, required this.updatedAt, required this.deletedAt, required this.status});
 | 
				
			||||||
  factory _SnRealmMember.fromJson(Map<String, dynamic> json) => _$SnRealmMemberFromJson(json);
 | 
					  factory _SnRealmMember.fromJson(Map<String, dynamic> json) => _$SnRealmMemberFromJson(json);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override final  String realmId;
 | 
					@override final  String realmId;
 | 
				
			||||||
@@ -344,6 +604,7 @@ class _SnRealmMember implements SnRealmMember {
 | 
				
			|||||||
@override final  DateTime createdAt;
 | 
					@override final  DateTime createdAt;
 | 
				
			||||||
@override final  DateTime updatedAt;
 | 
					@override final  DateTime updatedAt;
 | 
				
			||||||
@override final  DateTime? deletedAt;
 | 
					@override final  DateTime? deletedAt;
 | 
				
			||||||
 | 
					@override final  SnAccountStatus? status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Create a copy of SnRealmMember
 | 
					/// Create a copy of SnRealmMember
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@@ -358,16 +619,16 @@ Map<String, dynamic> toJson() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
bool operator ==(Object other) {
 | 
					bool operator ==(Object other) {
 | 
				
			||||||
  return identical(this, other) || (other.runtimeType == runtimeType&&other is _SnRealmMember&&(identical(other.realmId, realmId) || other.realmId == realmId)&&(identical(other.realm, realm) || other.realm == realm)&&(identical(other.accountId, accountId) || other.accountId == accountId)&&(identical(other.account, account) || other.account == account)&&(identical(other.role, role) || other.role == role)&&(identical(other.joinedAt, joinedAt) || other.joinedAt == joinedAt)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.updatedAt, updatedAt) || other.updatedAt == updatedAt)&&(identical(other.deletedAt, deletedAt) || other.deletedAt == deletedAt));
 | 
					  return identical(this, other) || (other.runtimeType == runtimeType&&other is _SnRealmMember&&(identical(other.realmId, realmId) || other.realmId == realmId)&&(identical(other.realm, realm) || other.realm == realm)&&(identical(other.accountId, accountId) || other.accountId == accountId)&&(identical(other.account, account) || other.account == account)&&(identical(other.role, role) || other.role == role)&&(identical(other.joinedAt, joinedAt) || other.joinedAt == joinedAt)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.updatedAt, updatedAt) || other.updatedAt == updatedAt)&&(identical(other.deletedAt, deletedAt) || other.deletedAt == deletedAt)&&(identical(other.status, status) || other.status == status));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
int get hashCode => Object.hash(runtimeType,realmId,realm,accountId,account,role,joinedAt,createdAt,updatedAt,deletedAt);
 | 
					int get hashCode => Object.hash(runtimeType,realmId,realm,accountId,account,role,joinedAt,createdAt,updatedAt,deletedAt,status);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
String toString() {
 | 
					String toString() {
 | 
				
			||||||
  return 'SnRealmMember(realmId: $realmId, realm: $realm, accountId: $accountId, account: $account, role: $role, joinedAt: $joinedAt, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt)';
 | 
					  return 'SnRealmMember(realmId: $realmId, realm: $realm, accountId: $accountId, account: $account, role: $role, joinedAt: $joinedAt, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt, status: $status)';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -378,11 +639,11 @@ abstract mixin class _$SnRealmMemberCopyWith<$Res> implements $SnRealmMemberCopy
 | 
				
			|||||||
  factory _$SnRealmMemberCopyWith(_SnRealmMember value, $Res Function(_SnRealmMember) _then) = __$SnRealmMemberCopyWithImpl;
 | 
					  factory _$SnRealmMemberCopyWith(_SnRealmMember value, $Res Function(_SnRealmMember) _then) = __$SnRealmMemberCopyWithImpl;
 | 
				
			||||||
@override @useResult
 | 
					@override @useResult
 | 
				
			||||||
$Res call({
 | 
					$Res call({
 | 
				
			||||||
 String realmId, SnRealm? realm, String accountId, SnAccount? account, int role, DateTime? joinedAt, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt
 | 
					 String realmId, SnRealm? realm, String accountId, SnAccount? account, int role, DateTime? joinedAt, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt, SnAccountStatus? status
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override $SnRealmCopyWith<$Res>? get realm;@override $SnAccountCopyWith<$Res>? get account;
 | 
					@override $SnRealmCopyWith<$Res>? get realm;@override $SnAccountCopyWith<$Res>? get account;@override $SnAccountStatusCopyWith<$Res>? get status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@@ -395,7 +656,7 @@ class __$SnRealmMemberCopyWithImpl<$Res>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/// Create a copy of SnRealmMember
 | 
					/// Create a copy of SnRealmMember
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@override @pragma('vm:prefer-inline') $Res call({Object? realmId = null,Object? realm = freezed,Object? accountId = null,Object? account = freezed,Object? role = null,Object? joinedAt = freezed,Object? createdAt = null,Object? updatedAt = null,Object? deletedAt = freezed,}) {
 | 
					@override @pragma('vm:prefer-inline') $Res call({Object? realmId = null,Object? realm = freezed,Object? accountId = null,Object? account = freezed,Object? role = null,Object? joinedAt = freezed,Object? createdAt = null,Object? updatedAt = null,Object? deletedAt = freezed,Object? status = freezed,}) {
 | 
				
			||||||
  return _then(_SnRealmMember(
 | 
					  return _then(_SnRealmMember(
 | 
				
			||||||
realmId: null == realmId ? _self.realmId : realmId // ignore: cast_nullable_to_non_nullable
 | 
					realmId: null == realmId ? _self.realmId : realmId // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,realm: freezed == realm ? _self.realm : realm // ignore: cast_nullable_to_non_nullable
 | 
					as String,realm: freezed == realm ? _self.realm : realm // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
@@ -406,7 +667,8 @@ as int,joinedAt: freezed == joinedAt ? _self.joinedAt : joinedAt // ignore: cast
 | 
				
			|||||||
as DateTime?,createdAt: null == createdAt ? _self.createdAt : createdAt // ignore: cast_nullable_to_non_nullable
 | 
					as DateTime?,createdAt: null == createdAt ? _self.createdAt : createdAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as DateTime,updatedAt: null == updatedAt ? _self.updatedAt : updatedAt // ignore: cast_nullable_to_non_nullable
 | 
					as DateTime,updatedAt: null == updatedAt ? _self.updatedAt : updatedAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as DateTime,deletedAt: freezed == deletedAt ? _self.deletedAt : deletedAt // ignore: cast_nullable_to_non_nullable
 | 
					as DateTime,deletedAt: freezed == deletedAt ? _self.deletedAt : deletedAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as DateTime?,
 | 
					as DateTime?,status: freezed == status ? _self.status : status // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as SnAccountStatus?,
 | 
				
			||||||
  ));
 | 
					  ));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -434,6 +696,18 @@ $SnAccountCopyWith<$Res>? get account {
 | 
				
			|||||||
  return $SnAccountCopyWith<$Res>(_self.account!, (value) {
 | 
					  return $SnAccountCopyWith<$Res>(_self.account!, (value) {
 | 
				
			||||||
    return _then(_self.copyWith(account: value));
 | 
					    return _then(_self.copyWith(account: value));
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					}/// Create a copy of SnRealmMember
 | 
				
			||||||
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
 | 
					@override
 | 
				
			||||||
 | 
					@pragma('vm:prefer-inline')
 | 
				
			||||||
 | 
					$SnAccountStatusCopyWith<$Res>? get status {
 | 
				
			||||||
 | 
					    if (_self.status == null) {
 | 
				
			||||||
 | 
					    return null;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return $SnAccountStatusCopyWith<$Res>(_self.status!, (value) {
 | 
				
			||||||
 | 
					    return _then(_self.copyWith(status: value));
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -75,6 +75,12 @@ _SnRealmMember _$SnRealmMemberFromJson(Map<String, dynamic> json) =>
 | 
				
			|||||||
          json['deleted_at'] == null
 | 
					          json['deleted_at'] == null
 | 
				
			||||||
              ? null
 | 
					              ? null
 | 
				
			||||||
              : DateTime.parse(json['deleted_at'] as String),
 | 
					              : DateTime.parse(json['deleted_at'] as String),
 | 
				
			||||||
 | 
					      status:
 | 
				
			||||||
 | 
					          json['status'] == null
 | 
				
			||||||
 | 
					              ? null
 | 
				
			||||||
 | 
					              : SnAccountStatus.fromJson(
 | 
				
			||||||
 | 
					                json['status'] as Map<String, dynamic>,
 | 
				
			||||||
 | 
					              ),
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Map<String, dynamic> _$SnRealmMemberToJson(_SnRealmMember instance) =>
 | 
					Map<String, dynamic> _$SnRealmMemberToJson(_SnRealmMember instance) =>
 | 
				
			||||||
@@ -88,4 +94,5 @@ Map<String, dynamic> _$SnRealmMemberToJson(_SnRealmMember instance) =>
 | 
				
			|||||||
      'created_at': instance.createdAt.toIso8601String(),
 | 
					      'created_at': instance.createdAt.toIso8601String(),
 | 
				
			||||||
      'updated_at': instance.updatedAt.toIso8601String(),
 | 
					      'updated_at': instance.updatedAt.toIso8601String(),
 | 
				
			||||||
      'deleted_at': instance.deletedAt?.toIso8601String(),
 | 
					      'deleted_at': instance.deletedAt?.toIso8601String(),
 | 
				
			||||||
 | 
					      'status': instance.status?.toJson(),
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
import 'package:freezed_annotation/freezed_annotation.dart';
 | 
					import 'package:freezed_annotation/freezed_annotation.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import 'package:island/models/user.dart';
 | 
					import 'package:island/models/account.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
part 'relationship.freezed.dart';
 | 
					part 'relationship.freezed.dart';
 | 
				
			||||||
part 'relationship.g.dart';
 | 
					part 'relationship.g.dart';
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
// dart format width=80
 | 
					 | 
				
			||||||
// coverage:ignore-file
 | 
					 | 
				
			||||||
// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					// coverage:ignore-file
 | 
				
			||||||
// ignore_for_file: type=lint
 | 
					// ignore_for_file: type=lint
 | 
				
			||||||
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
					// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -102,6 +101,130 @@ $SnAccountCopyWith<$Res> get related {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnRelationship].
 | 
				
			||||||
 | 
					extension SnRelationshipPatterns on SnRelationship {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnRelationship value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnRelationship() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnRelationship value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnRelationship():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnRelationship value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnRelationship() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( DateTime? createdAt,  DateTime? updatedAt,  DateTime? deletedAt,  String accountId,  SnAccount account,  String relatedId,  SnAccount related,  DateTime? expiredAt,  int status)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnRelationship() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.createdAt,_that.updatedAt,_that.deletedAt,_that.accountId,_that.account,_that.relatedId,_that.related,_that.expiredAt,_that.status);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( DateTime? createdAt,  DateTime? updatedAt,  DateTime? deletedAt,  String accountId,  SnAccount account,  String relatedId,  SnAccount related,  DateTime? expiredAt,  int status)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnRelationship():
 | 
				
			||||||
 | 
					return $default(_that.createdAt,_that.updatedAt,_that.deletedAt,_that.accountId,_that.account,_that.relatedId,_that.related,_that.expiredAt,_that.status);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( DateTime? createdAt,  DateTime? updatedAt,  DateTime? deletedAt,  String accountId,  SnAccount account,  String relatedId,  SnAccount related,  DateTime? expiredAt,  int status)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnRelationship() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.createdAt,_that.updatedAt,_that.deletedAt,_that.accountId,_that.account,_that.relatedId,_that.related,_that.expiredAt,_that.status);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,6 +35,7 @@ sealed class SnStickerPack with _$SnStickerPack {
 | 
				
			|||||||
    required DateTime createdAt,
 | 
					    required DateTime createdAt,
 | 
				
			||||||
    required DateTime updatedAt,
 | 
					    required DateTime updatedAt,
 | 
				
			||||||
    required DateTime? deletedAt,
 | 
					    required DateTime? deletedAt,
 | 
				
			||||||
 | 
					    @Default([]) List<SnSticker> stickers,
 | 
				
			||||||
  }) = _SnStickerPack;
 | 
					  }) = _SnStickerPack;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  factory SnStickerPack.fromJson(Map<String, dynamic> json) =>
 | 
					  factory SnStickerPack.fromJson(Map<String, dynamic> json) =>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
// dart format width=80
 | 
					 | 
				
			||||||
// coverage:ignore-file
 | 
					 | 
				
			||||||
// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					// coverage:ignore-file
 | 
				
			||||||
// ignore_for_file: type=lint
 | 
					// ignore_for_file: type=lint
 | 
				
			||||||
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
					// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -105,6 +104,130 @@ $SnStickerPackCopyWith<$Res>? get pack {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnSticker].
 | 
				
			||||||
 | 
					extension SnStickerPatterns on SnSticker {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnSticker value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnSticker() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnSticker value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnSticker():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnSticker value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnSticker() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  String slug,  String imageId,  SnCloudFile image,  String packId,  SnStickerPack? pack,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnSticker() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.slug,_that.imageId,_that.image,_that.packId,_that.pack,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  String slug,  String imageId,  SnCloudFile image,  String packId,  SnStickerPack? pack,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnSticker():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.slug,_that.imageId,_that.image,_that.packId,_that.pack,_that.createdAt,_that.updatedAt,_that.deletedAt);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  String slug,  String imageId,  SnCloudFile image,  String packId,  SnStickerPack? pack,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnSticker() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.slug,_that.imageId,_that.image,_that.packId,_that.pack,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -215,7 +338,7 @@ $SnStickerPackCopyWith<$Res>? get pack {
 | 
				
			|||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
mixin _$SnStickerPack {
 | 
					mixin _$SnStickerPack {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 String get id; String get name; String get description; String get prefix; String get publisherId; SnPublisher? get publisher; DateTime get createdAt; DateTime get updatedAt; DateTime? get deletedAt;
 | 
					 String get id; String get name; String get description; String get prefix; String get publisherId; SnPublisher? get publisher; DateTime get createdAt; DateTime get updatedAt; DateTime? get deletedAt; List<SnSticker> get stickers;
 | 
				
			||||||
/// Create a copy of SnStickerPack
 | 
					/// Create a copy of SnStickerPack
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
@@ -228,16 +351,16 @@ $SnStickerPackCopyWith<SnStickerPack> get copyWith => _$SnStickerPackCopyWithImp
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
bool operator ==(Object other) {
 | 
					bool operator ==(Object other) {
 | 
				
			||||||
  return identical(this, other) || (other.runtimeType == runtimeType&&other is SnStickerPack&&(identical(other.id, id) || other.id == id)&&(identical(other.name, name) || other.name == name)&&(identical(other.description, description) || other.description == description)&&(identical(other.prefix, prefix) || other.prefix == prefix)&&(identical(other.publisherId, publisherId) || other.publisherId == publisherId)&&(identical(other.publisher, publisher) || other.publisher == publisher)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.updatedAt, updatedAt) || other.updatedAt == updatedAt)&&(identical(other.deletedAt, deletedAt) || other.deletedAt == deletedAt));
 | 
					  return identical(this, other) || (other.runtimeType == runtimeType&&other is SnStickerPack&&(identical(other.id, id) || other.id == id)&&(identical(other.name, name) || other.name == name)&&(identical(other.description, description) || other.description == description)&&(identical(other.prefix, prefix) || other.prefix == prefix)&&(identical(other.publisherId, publisherId) || other.publisherId == publisherId)&&(identical(other.publisher, publisher) || other.publisher == publisher)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.updatedAt, updatedAt) || other.updatedAt == updatedAt)&&(identical(other.deletedAt, deletedAt) || other.deletedAt == deletedAt)&&const DeepCollectionEquality().equals(other.stickers, stickers));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
int get hashCode => Object.hash(runtimeType,id,name,description,prefix,publisherId,publisher,createdAt,updatedAt,deletedAt);
 | 
					int get hashCode => Object.hash(runtimeType,id,name,description,prefix,publisherId,publisher,createdAt,updatedAt,deletedAt,const DeepCollectionEquality().hash(stickers));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
String toString() {
 | 
					String toString() {
 | 
				
			||||||
  return 'SnStickerPack(id: $id, name: $name, description: $description, prefix: $prefix, publisherId: $publisherId, publisher: $publisher, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt)';
 | 
					  return 'SnStickerPack(id: $id, name: $name, description: $description, prefix: $prefix, publisherId: $publisherId, publisher: $publisher, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt, stickers: $stickers)';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -248,7 +371,7 @@ abstract mixin class $SnStickerPackCopyWith<$Res>  {
 | 
				
			|||||||
  factory $SnStickerPackCopyWith(SnStickerPack value, $Res Function(SnStickerPack) _then) = _$SnStickerPackCopyWithImpl;
 | 
					  factory $SnStickerPackCopyWith(SnStickerPack value, $Res Function(SnStickerPack) _then) = _$SnStickerPackCopyWithImpl;
 | 
				
			||||||
@useResult
 | 
					@useResult
 | 
				
			||||||
$Res call({
 | 
					$Res call({
 | 
				
			||||||
 String id, String name, String description, String prefix, String publisherId, SnPublisher? publisher, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt
 | 
					 String id, String name, String description, String prefix, String publisherId, SnPublisher? publisher, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt, List<SnSticker> stickers
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -265,7 +388,7 @@ class _$SnStickerPackCopyWithImpl<$Res>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/// Create a copy of SnStickerPack
 | 
					/// Create a copy of SnStickerPack
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@pragma('vm:prefer-inline') @override $Res call({Object? id = null,Object? name = null,Object? description = null,Object? prefix = null,Object? publisherId = null,Object? publisher = freezed,Object? createdAt = null,Object? updatedAt = null,Object? deletedAt = freezed,}) {
 | 
					@pragma('vm:prefer-inline') @override $Res call({Object? id = null,Object? name = null,Object? description = null,Object? prefix = null,Object? publisherId = null,Object? publisher = freezed,Object? createdAt = null,Object? updatedAt = null,Object? deletedAt = freezed,Object? stickers = null,}) {
 | 
				
			||||||
  return _then(_self.copyWith(
 | 
					  return _then(_self.copyWith(
 | 
				
			||||||
id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
					id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,name: null == name ? _self.name : name // ignore: cast_nullable_to_non_nullable
 | 
					as String,name: null == name ? _self.name : name // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
@@ -276,7 +399,8 @@ as String,publisher: freezed == publisher ? _self.publisher : publisher // ignor
 | 
				
			|||||||
as SnPublisher?,createdAt: null == createdAt ? _self.createdAt : createdAt // ignore: cast_nullable_to_non_nullable
 | 
					as SnPublisher?,createdAt: null == createdAt ? _self.createdAt : createdAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as DateTime,updatedAt: null == updatedAt ? _self.updatedAt : updatedAt // ignore: cast_nullable_to_non_nullable
 | 
					as DateTime,updatedAt: null == updatedAt ? _self.updatedAt : updatedAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as DateTime,deletedAt: freezed == deletedAt ? _self.deletedAt : deletedAt // ignore: cast_nullable_to_non_nullable
 | 
					as DateTime,deletedAt: freezed == deletedAt ? _self.deletedAt : deletedAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as DateTime?,
 | 
					as DateTime?,stickers: null == stickers ? _self.stickers : stickers // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as List<SnSticker>,
 | 
				
			||||||
  ));
 | 
					  ));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
/// Create a copy of SnStickerPack
 | 
					/// Create a copy of SnStickerPack
 | 
				
			||||||
@@ -295,11 +419,135 @@ $SnPublisherCopyWith<$Res>? get publisher {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnStickerPack].
 | 
				
			||||||
 | 
					extension SnStickerPackPatterns on SnStickerPack {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnStickerPack value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnStickerPack() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnStickerPack value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnStickerPack():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnStickerPack value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnStickerPack() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  String name,  String description,  String prefix,  String publisherId,  SnPublisher? publisher,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt,  List<SnSticker> stickers)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnStickerPack() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.name,_that.description,_that.prefix,_that.publisherId,_that.publisher,_that.createdAt,_that.updatedAt,_that.deletedAt,_that.stickers);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  String name,  String description,  String prefix,  String publisherId,  SnPublisher? publisher,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt,  List<SnSticker> stickers)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnStickerPack():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.name,_that.description,_that.prefix,_that.publisherId,_that.publisher,_that.createdAt,_that.updatedAt,_that.deletedAt,_that.stickers);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  String name,  String description,  String prefix,  String publisherId,  SnPublisher? publisher,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt,  List<SnSticker> stickers)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnStickerPack() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.name,_that.description,_that.prefix,_that.publisherId,_that.publisher,_that.createdAt,_that.updatedAt,_that.deletedAt,_that.stickers);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class _SnStickerPack implements SnStickerPack {
 | 
					class _SnStickerPack implements SnStickerPack {
 | 
				
			||||||
  const _SnStickerPack({required this.id, required this.name, required this.description, required this.prefix, required this.publisherId, required this.publisher, required this.createdAt, required this.updatedAt, required this.deletedAt});
 | 
					  const _SnStickerPack({required this.id, required this.name, required this.description, required this.prefix, required this.publisherId, required this.publisher, required this.createdAt, required this.updatedAt, required this.deletedAt, final  List<SnSticker> stickers = const []}): _stickers = stickers;
 | 
				
			||||||
  factory _SnStickerPack.fromJson(Map<String, dynamic> json) => _$SnStickerPackFromJson(json);
 | 
					  factory _SnStickerPack.fromJson(Map<String, dynamic> json) => _$SnStickerPackFromJson(json);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override final  String id;
 | 
					@override final  String id;
 | 
				
			||||||
@@ -311,6 +559,13 @@ class _SnStickerPack implements SnStickerPack {
 | 
				
			|||||||
@override final  DateTime createdAt;
 | 
					@override final  DateTime createdAt;
 | 
				
			||||||
@override final  DateTime updatedAt;
 | 
					@override final  DateTime updatedAt;
 | 
				
			||||||
@override final  DateTime? deletedAt;
 | 
					@override final  DateTime? deletedAt;
 | 
				
			||||||
 | 
					 final  List<SnSticker> _stickers;
 | 
				
			||||||
 | 
					@override@JsonKey() List<SnSticker> get stickers {
 | 
				
			||||||
 | 
					  if (_stickers is EqualUnmodifiableListView) return _stickers;
 | 
				
			||||||
 | 
					  // ignore: implicit_dynamic_type
 | 
				
			||||||
 | 
					  return EqualUnmodifiableListView(_stickers);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// Create a copy of SnStickerPack
 | 
					/// Create a copy of SnStickerPack
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@@ -325,16 +580,16 @@ Map<String, dynamic> toJson() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
bool operator ==(Object other) {
 | 
					bool operator ==(Object other) {
 | 
				
			||||||
  return identical(this, other) || (other.runtimeType == runtimeType&&other is _SnStickerPack&&(identical(other.id, id) || other.id == id)&&(identical(other.name, name) || other.name == name)&&(identical(other.description, description) || other.description == description)&&(identical(other.prefix, prefix) || other.prefix == prefix)&&(identical(other.publisherId, publisherId) || other.publisherId == publisherId)&&(identical(other.publisher, publisher) || other.publisher == publisher)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.updatedAt, updatedAt) || other.updatedAt == updatedAt)&&(identical(other.deletedAt, deletedAt) || other.deletedAt == deletedAt));
 | 
					  return identical(this, other) || (other.runtimeType == runtimeType&&other is _SnStickerPack&&(identical(other.id, id) || other.id == id)&&(identical(other.name, name) || other.name == name)&&(identical(other.description, description) || other.description == description)&&(identical(other.prefix, prefix) || other.prefix == prefix)&&(identical(other.publisherId, publisherId) || other.publisherId == publisherId)&&(identical(other.publisher, publisher) || other.publisher == publisher)&&(identical(other.createdAt, createdAt) || other.createdAt == createdAt)&&(identical(other.updatedAt, updatedAt) || other.updatedAt == updatedAt)&&(identical(other.deletedAt, deletedAt) || other.deletedAt == deletedAt)&&const DeepCollectionEquality().equals(other._stickers, _stickers));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@JsonKey(includeFromJson: false, includeToJson: false)
 | 
					@JsonKey(includeFromJson: false, includeToJson: false)
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
int get hashCode => Object.hash(runtimeType,id,name,description,prefix,publisherId,publisher,createdAt,updatedAt,deletedAt);
 | 
					int get hashCode => Object.hash(runtimeType,id,name,description,prefix,publisherId,publisher,createdAt,updatedAt,deletedAt,const DeepCollectionEquality().hash(_stickers));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@override
 | 
					@override
 | 
				
			||||||
String toString() {
 | 
					String toString() {
 | 
				
			||||||
  return 'SnStickerPack(id: $id, name: $name, description: $description, prefix: $prefix, publisherId: $publisherId, publisher: $publisher, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt)';
 | 
					  return 'SnStickerPack(id: $id, name: $name, description: $description, prefix: $prefix, publisherId: $publisherId, publisher: $publisher, createdAt: $createdAt, updatedAt: $updatedAt, deletedAt: $deletedAt, stickers: $stickers)';
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -345,7 +600,7 @@ abstract mixin class _$SnStickerPackCopyWith<$Res> implements $SnStickerPackCopy
 | 
				
			|||||||
  factory _$SnStickerPackCopyWith(_SnStickerPack value, $Res Function(_SnStickerPack) _then) = __$SnStickerPackCopyWithImpl;
 | 
					  factory _$SnStickerPackCopyWith(_SnStickerPack value, $Res Function(_SnStickerPack) _then) = __$SnStickerPackCopyWithImpl;
 | 
				
			||||||
@override @useResult
 | 
					@override @useResult
 | 
				
			||||||
$Res call({
 | 
					$Res call({
 | 
				
			||||||
 String id, String name, String description, String prefix, String publisherId, SnPublisher? publisher, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt
 | 
					 String id, String name, String description, String prefix, String publisherId, SnPublisher? publisher, DateTime createdAt, DateTime updatedAt, DateTime? deletedAt, List<SnSticker> stickers
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -362,7 +617,7 @@ class __$SnStickerPackCopyWithImpl<$Res>
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
/// Create a copy of SnStickerPack
 | 
					/// Create a copy of SnStickerPack
 | 
				
			||||||
/// with the given fields replaced by the non-null parameter values.
 | 
					/// with the given fields replaced by the non-null parameter values.
 | 
				
			||||||
@override @pragma('vm:prefer-inline') $Res call({Object? id = null,Object? name = null,Object? description = null,Object? prefix = null,Object? publisherId = null,Object? publisher = freezed,Object? createdAt = null,Object? updatedAt = null,Object? deletedAt = freezed,}) {
 | 
					@override @pragma('vm:prefer-inline') $Res call({Object? id = null,Object? name = null,Object? description = null,Object? prefix = null,Object? publisherId = null,Object? publisher = freezed,Object? createdAt = null,Object? updatedAt = null,Object? deletedAt = freezed,Object? stickers = null,}) {
 | 
				
			||||||
  return _then(_SnStickerPack(
 | 
					  return _then(_SnStickerPack(
 | 
				
			||||||
id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
					id: null == id ? _self.id : id // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as String,name: null == name ? _self.name : name // ignore: cast_nullable_to_non_nullable
 | 
					as String,name: null == name ? _self.name : name // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
@@ -373,7 +628,8 @@ as String,publisher: freezed == publisher ? _self.publisher : publisher // ignor
 | 
				
			|||||||
as SnPublisher?,createdAt: null == createdAt ? _self.createdAt : createdAt // ignore: cast_nullable_to_non_nullable
 | 
					as SnPublisher?,createdAt: null == createdAt ? _self.createdAt : createdAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as DateTime,updatedAt: null == updatedAt ? _self.updatedAt : updatedAt // ignore: cast_nullable_to_non_nullable
 | 
					as DateTime,updatedAt: null == updatedAt ? _self.updatedAt : updatedAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as DateTime,deletedAt: freezed == deletedAt ? _self.deletedAt : deletedAt // ignore: cast_nullable_to_non_nullable
 | 
					as DateTime,deletedAt: freezed == deletedAt ? _self.deletedAt : deletedAt // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
as DateTime?,
 | 
					as DateTime?,stickers: null == stickers ? _self._stickers : stickers // ignore: cast_nullable_to_non_nullable
 | 
				
			||||||
 | 
					as List<SnSticker>,
 | 
				
			||||||
  ));
 | 
					  ));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -54,6 +54,11 @@ _SnStickerPack _$SnStickerPackFromJson(Map<String, dynamic> json) =>
 | 
				
			|||||||
          json['deleted_at'] == null
 | 
					          json['deleted_at'] == null
 | 
				
			||||||
              ? null
 | 
					              ? null
 | 
				
			||||||
              : DateTime.parse(json['deleted_at'] as String),
 | 
					              : DateTime.parse(json['deleted_at'] as String),
 | 
				
			||||||
 | 
					      stickers:
 | 
				
			||||||
 | 
					          (json['stickers'] as List<dynamic>?)
 | 
				
			||||||
 | 
					              ?.map((e) => SnSticker.fromJson(e as Map<String, dynamic>))
 | 
				
			||||||
 | 
					              .toList() ??
 | 
				
			||||||
 | 
					          const [],
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Map<String, dynamic> _$SnStickerPackToJson(_SnStickerPack instance) =>
 | 
					Map<String, dynamic> _$SnStickerPackToJson(_SnStickerPack instance) =>
 | 
				
			||||||
@@ -67,4 +72,5 @@ Map<String, dynamic> _$SnStickerPackToJson(_SnStickerPack instance) =>
 | 
				
			|||||||
      'created_at': instance.createdAt.toIso8601String(),
 | 
					      'created_at': instance.createdAt.toIso8601String(),
 | 
				
			||||||
      'updated_at': instance.updatedAt.toIso8601String(),
 | 
					      'updated_at': instance.updatedAt.toIso8601String(),
 | 
				
			||||||
      'deleted_at': instance.deletedAt?.toIso8601String(),
 | 
					      'deleted_at': instance.deletedAt?.toIso8601String(),
 | 
				
			||||||
 | 
					      'stickers': instance.stickers.map((e) => e.toJson()).toList(),
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -1,5 +1,5 @@
 | 
				
			|||||||
import 'package:freezed_annotation/freezed_annotation.dart';
 | 
					import 'package:freezed_annotation/freezed_annotation.dart';
 | 
				
			||||||
import 'package:island/models/user.dart';
 | 
					import 'package:island/models/account.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
part 'wallet.freezed.dart';
 | 
					part 'wallet.freezed.dart';
 | 
				
			||||||
part 'wallet.g.dart';
 | 
					part 'wallet.g.dart';
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
// dart format width=80
 | 
					 | 
				
			||||||
// coverage:ignore-file
 | 
					 | 
				
			||||||
// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					// coverage:ignore-file
 | 
				
			||||||
// ignore_for_file: type=lint
 | 
					// ignore_for_file: type=lint
 | 
				
			||||||
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
					// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -94,6 +93,130 @@ $SnAccountCopyWith<$Res>? get account {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnWallet].
 | 
				
			||||||
 | 
					extension SnWalletPatterns on SnWallet {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnWallet value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWallet() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnWallet value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWallet():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnWallet value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWallet() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  List<SnWalletPocket> pockets,  String accountId,  SnAccount? account,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWallet() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.pockets,_that.accountId,_that.account,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  List<SnWalletPocket> pockets,  String accountId,  SnAccount? account,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWallet():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.pockets,_that.accountId,_that.account,_that.createdAt,_that.updatedAt,_that.deletedAt);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  List<SnWalletPocket> pockets,  String accountId,  SnAccount? account,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWallet() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.pockets,_that.accountId,_that.account,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -263,6 +386,130 @@ as DateTime?,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnWalletPocket].
 | 
				
			||||||
 | 
					extension SnWalletPocketPatterns on SnWalletPocket {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnWalletPocket value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWalletPocket() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnWalletPocket value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWalletPocket():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnWalletPocket value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWalletPocket() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  String currency,  double amount,  String walletId,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWalletPocket() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.currency,_that.amount,_that.walletId,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  String currency,  double amount,  String walletId,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWalletPocket():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.currency,_that.amount,_that.walletId,_that.createdAt,_that.updatedAt,_that.deletedAt);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  String currency,  double amount,  String walletId,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWalletPocket() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.currency,_that.amount,_that.walletId,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -443,6 +690,130 @@ $SnWalletCopyWith<$Res>? get payeeWallet {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnTransaction].
 | 
				
			||||||
 | 
					extension SnTransactionPatterns on SnTransaction {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnTransaction value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnTransaction() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnTransaction value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnTransaction():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnTransaction value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnTransaction() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  String currency,  double amount,  String? remarks,  int type,  String? payerWalletId,  SnWallet? payerWallet,  String? payeeWalletId,  SnWallet? payeeWallet,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnTransaction() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.currency,_that.amount,_that.remarks,_that.type,_that.payerWalletId,_that.payerWallet,_that.payeeWalletId,_that.payeeWallet,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  String currency,  double amount,  String? remarks,  int type,  String? payerWalletId,  SnWallet? payerWallet,  String? payeeWalletId,  SnWallet? payeeWallet,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnTransaction():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.currency,_that.amount,_that.remarks,_that.type,_that.payerWalletId,_that.payerWallet,_that.payeeWalletId,_that.payeeWallet,_that.createdAt,_that.updatedAt,_that.deletedAt);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  String currency,  double amount,  String? remarks,  int type,  String? payerWalletId,  SnWallet? payerWallet,  String? payeeWalletId,  SnWallet? payeeWallet,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnTransaction() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.currency,_that.amount,_that.remarks,_that.type,_that.payerWalletId,_that.payerWallet,_that.payeeWalletId,_that.payeeWallet,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -653,6 +1024,130 @@ $SnAccountCopyWith<$Res>? get account {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnWalletSubscription].
 | 
				
			||||||
 | 
					extension SnWalletSubscriptionPatterns on SnWalletSubscription {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnWalletSubscription value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWalletSubscription() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnWalletSubscription value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWalletSubscription():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnWalletSubscription value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWalletSubscription() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  DateTime begunAt,  DateTime? endedAt,  String identifier,  bool isActive,  bool isFreeTrial,  int status,  String? paymentMethod,  Map<String, dynamic>? paymentDetails,  double? basePrice,  String? couponId,  dynamic coupon,  DateTime? renewalAt,  String accountId,  SnAccount? account,  bool isAvailable,  double? finalPrice,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWalletSubscription() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.begunAt,_that.endedAt,_that.identifier,_that.isActive,_that.isFreeTrial,_that.status,_that.paymentMethod,_that.paymentDetails,_that.basePrice,_that.couponId,_that.coupon,_that.renewalAt,_that.accountId,_that.account,_that.isAvailable,_that.finalPrice,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  DateTime begunAt,  DateTime? endedAt,  String identifier,  bool isActive,  bool isFreeTrial,  int status,  String? paymentMethod,  Map<String, dynamic>? paymentDetails,  double? basePrice,  String? couponId,  dynamic coupon,  DateTime? renewalAt,  String accountId,  SnAccount? account,  bool isAvailable,  double? finalPrice,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWalletSubscription():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.begunAt,_that.endedAt,_that.identifier,_that.isActive,_that.isFreeTrial,_that.status,_that.paymentMethod,_that.paymentDetails,_that.basePrice,_that.couponId,_that.coupon,_that.renewalAt,_that.accountId,_that.account,_that.isAvailable,_that.finalPrice,_that.createdAt,_that.updatedAt,_that.deletedAt);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  DateTime begunAt,  DateTime? endedAt,  String identifier,  bool isActive,  bool isFreeTrial,  int status,  String? paymentMethod,  Map<String, dynamic>? paymentDetails,  double? basePrice,  String? couponId,  dynamic coupon,  DateTime? renewalAt,  String accountId,  SnAccount? account,  bool isAvailable,  double? finalPrice,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWalletSubscription() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.begunAt,_that.endedAt,_that.identifier,_that.isActive,_that.isFreeTrial,_that.status,_that.paymentMethod,_that.paymentDetails,_that.basePrice,_that.couponId,_that.coupon,_that.renewalAt,_that.accountId,_that.account,_that.isAvailable,_that.finalPrice,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -850,6 +1345,130 @@ as String,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnWalletSubscriptionRef].
 | 
				
			||||||
 | 
					extension SnWalletSubscriptionRefPatterns on SnWalletSubscriptionRef {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnWalletSubscriptionRef value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWalletSubscriptionRef() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnWalletSubscriptionRef value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWalletSubscriptionRef():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnWalletSubscriptionRef value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWalletSubscriptionRef() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  bool isActive,  String accountId,  DateTime createdAt,  DateTime? deletedAt,  DateTime updatedAt,  String identifier)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWalletSubscriptionRef() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.isActive,_that.accountId,_that.createdAt,_that.deletedAt,_that.updatedAt,_that.identifier);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  bool isActive,  String accountId,  DateTime createdAt,  DateTime? deletedAt,  DateTime updatedAt,  String identifier)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWalletSubscriptionRef():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.isActive,_that.accountId,_that.createdAt,_that.deletedAt,_that.updatedAt,_that.identifier);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  bool isActive,  String accountId,  DateTime createdAt,  DateTime? deletedAt,  DateTime updatedAt,  String identifier)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWalletSubscriptionRef() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.isActive,_that.accountId,_that.createdAt,_that.deletedAt,_that.updatedAt,_that.identifier);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1035,6 +1654,130 @@ $SnTransactionCopyWith<$Res>? get transaction {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnWalletOrder].
 | 
				
			||||||
 | 
					extension SnWalletOrderPatterns on SnWalletOrder {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnWalletOrder value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWalletOrder() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnWalletOrder value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWalletOrder():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnWalletOrder value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWalletOrder() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  int status,  String currency,  dynamic remarks,  String appIdentifier,  Map<String, dynamic> meta,  int amount,  DateTime expiredAt,  String? payeeWalletId,  SnWallet? payeeWallet,  String? transactionId,  SnTransaction? transaction,  String? issuerAppId,  dynamic issuerApp,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWalletOrder() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.status,_that.currency,_that.remarks,_that.appIdentifier,_that.meta,_that.amount,_that.expiredAt,_that.payeeWalletId,_that.payeeWallet,_that.transactionId,_that.transaction,_that.issuerAppId,_that.issuerApp,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  int status,  String currency,  dynamic remarks,  String appIdentifier,  Map<String, dynamic> meta,  int amount,  DateTime expiredAt,  String? payeeWalletId,  SnWallet? payeeWallet,  String? transactionId,  SnTransaction? transaction,  String? issuerAppId,  dynamic issuerApp,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWalletOrder():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.status,_that.currency,_that.remarks,_that.appIdentifier,_that.meta,_that.amount,_that.expiredAt,_that.payeeWalletId,_that.payeeWallet,_that.transactionId,_that.transaction,_that.issuerAppId,_that.issuerApp,_that.createdAt,_that.updatedAt,_that.deletedAt);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  int status,  String currency,  dynamic remarks,  String appIdentifier,  Map<String, dynamic> meta,  int amount,  DateTime expiredAt,  String? payeeWalletId,  SnWallet? payeeWallet,  String? transactionId,  SnTransaction? transaction,  String? issuerAppId,  dynamic issuerApp,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWalletOrder() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.status,_that.currency,_that.remarks,_that.appIdentifier,_that.meta,_that.amount,_that.expiredAt,_that.payeeWalletId,_that.payeeWallet,_that.transactionId,_that.transaction,_that.issuerAppId,_that.issuerApp,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
// dart format width=80
 | 
					 | 
				
			||||||
// coverage:ignore-file
 | 
					 | 
				
			||||||
// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
					// GENERATED CODE - DO NOT MODIFY BY HAND
 | 
				
			||||||
 | 
					// coverage:ignore-file
 | 
				
			||||||
// ignore_for_file: type=lint
 | 
					// ignore_for_file: type=lint
 | 
				
			||||||
// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
					// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -76,6 +75,130 @@ as bool,
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnWebFeedConfig].
 | 
				
			||||||
 | 
					extension SnWebFeedConfigPatterns on SnWebFeedConfig {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnWebFeedConfig value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWebFeedConfig() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnWebFeedConfig value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWebFeedConfig():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnWebFeedConfig value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWebFeedConfig() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( bool scrapPage)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWebFeedConfig() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.scrapPage);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( bool scrapPage)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWebFeedConfig():
 | 
				
			||||||
 | 
					return $default(_that.scrapPage);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( bool scrapPage)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWebFeedConfig() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.scrapPage);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -240,6 +363,130 @@ $SnWebFeedConfigCopyWith<$Res> get config {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnWebFeed].
 | 
				
			||||||
 | 
					extension SnWebFeedPatterns on SnWebFeed {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnWebFeed value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWebFeed() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnWebFeed value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWebFeed():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnWebFeed value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWebFeed() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  String url,  String title,  String? description,  SnScrappedLink? preview,  SnWebFeedConfig config,  String publisherId,  List<SnWebArticle> articles,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWebFeed() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.url,_that.title,_that.description,_that.preview,_that.config,_that.publisherId,_that.articles,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  String url,  String title,  String? description,  SnScrappedLink? preview,  SnWebFeedConfig config,  String publisherId,  List<SnWebArticle> articles,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWebFeed():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.url,_that.title,_that.description,_that.preview,_that.config,_that.publisherId,_that.articles,_that.createdAt,_that.updatedAt,_that.deletedAt);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  String url,  String title,  String? description,  SnScrappedLink? preview,  SnWebFeedConfig config,  String publisherId,  List<SnWebArticle> articles,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWebFeed() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.url,_that.title,_that.description,_that.preview,_that.config,_that.publisherId,_that.articles,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -456,6 +703,130 @@ $SnWebFeedCopyWith<$Res>? get feed {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/// Adds pattern-matching-related methods to [SnWebArticle].
 | 
				
			||||||
 | 
					extension SnWebArticlePatterns on SnWebArticle {
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `orElse`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeMap<TResult extends Object?>(TResult Function( _SnWebArticle value)?  $default,{required TResult orElse(),}){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWebArticle() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// Callbacks receives the raw object, upcasted.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case final Subclass2 value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult map<TResult extends Object?>(TResult Function( _SnWebArticle value)  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWebArticle():
 | 
				
			||||||
 | 
					return $default(_that);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `map` that fallback to returning `null`.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case final Subclass value:
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? mapOrNull<TResult extends Object?>(TResult? Function( _SnWebArticle value)?  $default,){
 | 
				
			||||||
 | 
					final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWebArticle() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to an `orElse` callback.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return orElse();
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult maybeWhen<TResult extends Object?>(TResult Function( String id,  String title,  String url,  String? author,  Map<String, dynamic>? meta,  SnScrappedLink? preview,  SnWebFeed? feed,  String? content,  DateTime? publishedAt,  String feedId,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,{required TResult orElse(),}) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWebArticle() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.title,_that.url,_that.author,_that.meta,_that.preview,_that.feed,_that.content,_that.publishedAt,_that.feedId,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return orElse();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A `switch`-like method, using callbacks.
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// As opposed to `map`, this offers destructuring.
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case Subclass2(:final field2):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult when<TResult extends Object?>(TResult Function( String id,  String title,  String url,  String? author,  Map<String, dynamic>? meta,  SnScrappedLink? preview,  SnWebFeed? feed,  String? content,  DateTime? publishedAt,  String feedId,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWebArticle():
 | 
				
			||||||
 | 
					return $default(_that.id,_that.title,_that.url,_that.author,_that.meta,_that.preview,_that.feed,_that.content,_that.publishedAt,_that.feedId,_that.createdAt,_that.updatedAt,_that.deletedAt);}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					/// A variant of `when` that fallback to returning `null`
 | 
				
			||||||
 | 
					///
 | 
				
			||||||
 | 
					/// It is equivalent to doing:
 | 
				
			||||||
 | 
					/// ```dart
 | 
				
			||||||
 | 
					/// switch (sealedClass) {
 | 
				
			||||||
 | 
					///   case Subclass(:final field):
 | 
				
			||||||
 | 
					///     return ...;
 | 
				
			||||||
 | 
					///   case _:
 | 
				
			||||||
 | 
					///     return null;
 | 
				
			||||||
 | 
					/// }
 | 
				
			||||||
 | 
					/// ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@optionalTypeArgs TResult? whenOrNull<TResult extends Object?>(TResult? Function( String id,  String title,  String url,  String? author,  Map<String, dynamic>? meta,  SnScrappedLink? preview,  SnWebFeed? feed,  String? content,  DateTime? publishedAt,  String feedId,  DateTime createdAt,  DateTime updatedAt,  DateTime? deletedAt)?  $default,) {final _that = this;
 | 
				
			||||||
 | 
					switch (_that) {
 | 
				
			||||||
 | 
					case _SnWebArticle() when $default != null:
 | 
				
			||||||
 | 
					return $default(_that.id,_that.title,_that.url,_that.author,_that.meta,_that.preview,_that.feed,_that.content,_that.publishedAt,_that.feedId,_that.createdAt,_that.updatedAt,_that.deletedAt);case _:
 | 
				
			||||||
 | 
					  return null;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/// @nodoc
 | 
					/// @nodoc
 | 
				
			||||||
@JsonSerializable()
 | 
					@JsonSerializable()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user