Compare commits
	
		
			582 Commits
		
	
	
		
			b83cb0fb0b
			...
			v3
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 01cc71fd47 | |||
| a2b0cd0b6a | |||
| 7f971bcee3 | |||
| 7de98a1731 | |||
| b52eb95b14 | |||
| b3ef7d6ad0 | |||
| d28c11940d | |||
| 504322c2dd | |||
| a07ec3ca36 | |||
| d96691e920 | |||
| 6273b2d917 | |||
| ab90d244b5 | |||
| dc6af6d9e5 | |||
| 0ca801d963 | |||
| 3edcdd72af | |||
| 402bb3fe04 | |||
| 8ba55eb1be | |||
| 983ae2a1fc | |||
| 6fc94001b3 | |||
| 44dbcfdc94 | |||
| b57caf56db | |||
| dbcd1b6d36 | |||
| a8055de910 | |||
| 49b15e7674 | |||
| e2369c40db | |||
| 44c5d91620 | |||
| 7a5a2407b7 | |||
| 234434f102 | |||
| 9c3b228d02 | |||
| 82682cae9a | |||
| fcbd5fe680 | |||
| ad91b17af7 | |||
| 24fa637329 | |||
| 926ae5402f | |||
| 1a37d384e6 | |||
| d4cf598f69 | |||
| 0106c08891 | |||
| 9697def808 | |||
| 6572875229 | |||
| 66590b9079 | |||
| 08b9604b55 | |||
| 0602bbd277 | |||
| 76e7ba7898 | |||
| 6e6616b236 | |||
| 071d51b25e | |||
| a958362461 | |||
| 6749bb00fe | |||
| 11fb20c673 | |||
| a7990f83db | |||
| 5f4cdf7937 | |||
| 3330ca14dd | |||
| 1719b1c8fe | |||
| 3c2c51bfaf | |||
| 239d6750ff | |||
| 8b0c91977a | |||
| f74cca8464 | |||
| 08091d51bf | |||
| 481190811b | |||
| 4b32b65d1c | |||
| 50ac7109bb | |||
| 62da279c71 | |||
| fde6dbf891 | |||
| 613bf4fb42 | |||
| 00ae586016 | |||
| ea0d132dce | |||
| aa2df1e847 | |||
| 50672795f3 | |||
| 383de9568d | |||
| 01fa228e45 | |||
| 1e71ad33a6 | |||
| 92c0260ecd | |||
| 0a161ad255 | |||
| c003f27b9a | |||
| 19db8309c4 | |||
| aa72ce08e8 | |||
| 4639b00b86 | |||
| cc5460ea55 | |||
| eafac811e6 | |||
| e3be691596 | |||
| aa180a1358 | |||
| c2707b8af1 | |||
| 62fd0500f3 | |||
| eeae865cc8 | |||
| cdf1413fe0 | |||
| 327b4c04f1 | |||
| bd903ce29c | |||
| 1b8ecb15ce | |||
| d4e380a97a | |||
| 126048b4fa | |||
| 8bec18813d | |||
| 1ae81794b1 | |||
| 2a7d12de48 | |||
| 64c60ead48 | |||
| 001549b190 | |||
| 4595865ad3 | |||
|  | 1834643167 | ||
|  | 0e816eaa3e | ||
|  | 7c1f24b824 | ||
| c6594ea2ce | |||
| 3bec6e683e | |||
| 83e92e2eed | |||
|  | b7d44d96ba | ||
| a83b929d42 | |||
| 9423affa75 | |||
| cda23db609 | |||
| 61074bc5a3 | |||
| 5feafa9255 | |||
| e604577c1f | |||
| af0ddd1273 | |||
| 8a6bb34808 | |||
| 4ef8445c77 | |||
| ec39ad6ca3 | |||
| eabb3154f1 | |||
| 910bf20eef | |||
| 5efa9b2ae8 | |||
| dd3e39e891 | |||
| b6896ded23 | |||
| f28a73ff9c | |||
| a014b64235 | |||
| 7e0e7c20d7 | |||
| 389fa515ba | |||
| 681ead02eb | |||
| 8d1c145b0b | |||
| 51b4754182 | |||
| 8a2b321701 | |||
| f685a7a249 | |||
| 76009147e9 | |||
| ce12f28e56 | |||
| 3604373a1e | |||
| 9704a4c2c7 | |||
| 67def56ad1 | |||
| 1be33916af | |||
| e8ff1bfd22 | |||
| 3ae56f3d89 | |||
| 707143e998 | |||
| 1fd34eb2a3 | |||
| d7ca41e946 | |||
| ad9fb0719a | |||
| e2d315afd4 | |||
| 6124dbfd79 | |||
| 5327f04ec0 | |||
| 41c56a2319 | |||
| f9d033542e | |||
| 91784e65e6 | |||
| 9d39c6a825 | |||
| 537e49f1a4 | |||
| 75bbd4df71 | |||
| 6ef4580d93 | |||
| 6ffd498761 | |||
| 27157e7cc1 | |||
| bbb07d574a | |||
| c660a419e2 | |||
| c3f61467c8 | |||
| 9bc47df452 | |||
| 9ef8ca4d45 | |||
| b55cbd08d1 | |||
| 8c6bd0feaa | |||
| 7dd4b20628 | |||
| fec0cb7640 | |||
| 75deb04a2b | |||
| 7c7ed21a96 | |||
| a201f20793 | |||
| 598c51bc1a | |||
| e1ea61c5f1 | |||
| ac424bde36 | |||
| b43b70df3f | |||
| 4321aa621a | |||
| d5d275fb43 | |||
| 6bb3307144 | |||
| 391604d4a2 | |||
| 1d9361c12f | |||
| a129b9cdd0 | |||
| 3bf815ac61 | |||
| 77bae4d6fd | |||
| 0a301c4c9b | |||
| 27b390a51c | |||
| 018386d14e | |||
| 3825d7c6c7 | |||
| bf930291e4 | |||
| a8c4988790 | |||
| 28dd204b1a | |||
| 3cbc1a59a7 | |||
| 277e9ae3d1 | |||
| 27b3ca25b7 | |||
| f871cd3b62 | |||
| a8a59ee30c | |||
| 2cd1416a13 | |||
| 6be7dfbc61 | |||
| 1abbd85614 | |||
| 31ac5ad07c | |||
| ae2ba495e9 | |||
| 637aa44548 | |||
| 44dbfc36d9 | |||
| 5dbe7371cb | |||
| 6c91093198 | |||
| 3f640b7898 | |||
| 7db164fda6 | |||
| 6df1d96cc9 | |||
| 122a796f8c | |||
| fbc7812a16 | |||
| 0b1a23e81a | |||
| c87e6cfe07 | |||
| 53d51b8a0e | |||
| 337ae39e08 | |||
| 8fe3a664a6 | |||
| 3bfc0b8181 | |||
| ac2951479b | |||
| 2bfd13d843 | |||
| 28db6f9f01 | |||
| a4f7b8415d | |||
| 2255d3d591 | |||
| 97792ae734 | |||
| a5d13250cc | |||
| de9e235d0c | |||
| 56fb5451cd | |||
| 870de961f5 | |||
| 22bf6d1c33 | |||
| 5b62f89531 | |||
| b1326d8f04 | |||
| fffca4a78c | |||
| 42bd7f97cb | |||
| 6377856ae0 | |||
| 0f1c52b9e3 | |||
| 6ed6f60fbc | |||
| e65a414065 | |||
| 214d5c4a53 | |||
| fe33931304 | |||
| 113309257e | |||
| b95a8b2ed2 | |||
|  | e922971a5e | ||
| 9d5b71bead | |||
| 890efa2efb | |||
| 674097e425 | |||
| 3379dcb7f3 | |||
| eb5a849e1f | |||
| 4981a23e8e | |||
| c64d4bacb6 | |||
| 838d18013b | |||
| 3f7902e463 | |||
| 54560ad5d8 | |||
| 0c729db639 | |||
| 1fbaac8d88 | |||
| b9dc724f0b | |||
| a2cc55696f | |||
| e79f857feb | |||
| affba29c04 | |||
| 756746b144 | |||
| 28b6eade48 | |||
| 1de7ef8c96 | |||
| 67eac5dcf5 | |||
| 7a44bfa075 | |||
| 1c2f25a152 | |||
| be26ea280e | |||
| b4996d069f | |||
| bf4892b34d | |||
| 5f84751fd5 | |||
| 457d1bac60 | |||
| 02ec11845b | |||
| 612f1bf004 | |||
| fd80b713ad | |||
| 508805368c | |||
| 98eb28a4ec | |||
| d1a2f59dd1 | |||
| bb9adb963a | |||
| 83e40cd860 | |||
| c06fb12f6a | |||
| 6600cf4df8 | |||
| 4293daaa2f | |||
| 866674ddde | |||
| 27d478ba4f | |||
| cccade763f | |||
| f760b85186 | |||
| e68c5f4f92 | |||
| b0f3b6b5c3 | |||
| cb2af379fa | |||
| 38f8103265 | |||
| 06bb18bdaa | |||
| 84c38500d0 | |||
| 9529bbf08b | |||
| 8baf77bcf7 | |||
| b2ac5fbef2 | |||
| c79b1d7aab | |||
|  | 4f55a8209c | ||
|  | ace302111a | ||
|  | 1391fa0dde | ||
|  | cbdc7acdcd | ||
|  | b80d91825a | ||
|  | 1a703b7eba | ||
|  | 3621ea7744 | ||
|  | b638343f02 | ||
|  | 269a64cabb | ||
| 406e5187a8 | |||
| 9bdd08d8dd | |||
| d737232dcf | |||
| c9d751479e | |||
| a2c2bfe585 | |||
| c7f9da0dee | |||
|  | a243cda1df | ||
|  | 7b238f32fd | ||
| 313af28d7f | |||
| c64e1e208c | |||
| c9b07a9a2a | |||
| 55c0e355f1 | |||
| be414891ec | |||
| 787876ab6a | |||
| 8578cde620 | |||
| 14d55d45a8 | |||
| 724391584e | |||
| 3a5e45808a | |||
| 488055955c | |||
|  | 313ebc64cc | ||
|  | 1ed8b1d0c1 | ||
| 4af816d931 | |||
| 1c058a4323 | |||
| 461ed1fcda | |||
| 5363afa558 | |||
| f0d2737da8 | |||
| 1f2f80aa3e | |||
| 240a872e65 | |||
| c1ec6f0849 | |||
| ab42686d4d | |||
| c9727e92b8 | |||
| 9b8768061d | |||
| 0949f0da54 | |||
| 215ca705ac | |||
| 03457af04a | |||
| 73c6a1febf | |||
| ba8d30bcde | |||
| 8449658b47 | |||
| c7f417234e | |||
| 6c847ee1e1 | |||
| 18ad4d376e | |||
| c4d5ba5c9d | |||
| 1069669049 | |||
| aa648fec62 | |||
| 541900673a | |||
| 265502ffd0 | |||
| 3bd79350d1 | |||
| 5294d1fb23 | |||
| ec1269dcf1 | |||
| edb0a25f34 | |||
| 7cd10118cc | |||
| fcddc8f345 | |||
| 1cc34240da | |||
| 013f7f02bc | |||
| 4e79e4100f | |||
| feda1f067f | |||
| fe0e192a43 | |||
| 93df294142 | |||
| 78d65c39f3 | |||
| 18b0dbd797 | |||
| 80cc8cbb40 | |||
| 646e95a9fc | |||
| 6f9d51673b | |||
| f8c6887769 | |||
| cd2a507b7f | |||
| 3cafce00a2 | |||
| 837f3fbe98 | |||
| ca7cc5d7ee | |||
| ef2c14daa2 | |||
| 3a17837cc6 | |||
| 2617a64acf | |||
| afe1e12a3b | |||
| be80f5ff85 | |||
| 3281d69eba | |||
| 77b6ce9937 | |||
| 39275f61b5 | |||
| 72193ba8f3 | |||
| 98dd9b6617 | |||
| a22b94a263 | |||
| 9c75eafdb3 | |||
| 28fda3d0c7 | |||
| 187c2ea43e | |||
| ae7d967461 | |||
| 1ce71f1fa1 | |||
| 9b68808c77 | |||
|  | 99b7bf8199 | ||
|  | eb9bb73c31 | ||
|  | a8c3830d67 | ||
|  | 07a5a19141 | ||
| ecc100ac45 | |||
| 573b76d3ff | |||
| f7dad5e419 | |||
| 9f2f1c0848 | |||
| 580d9fd979 | |||
| 3b375abc09 | |||
| c527b5e67c | |||
| e9f09bbe54 | |||
| 3aece9316c | |||
| a61c889c6c | |||
| 0dd3221a56 | |||
| 66918521f8 | |||
| bb1846e462 | |||
| a976a6eaf4 | |||
| 4252f66fd3 | |||
| f2d780b48f | |||
| 300541f9bb | |||
| 43787bb813 | |||
| 3417c51a3b | |||
| f98e603e82 | |||
| c9b71701c8 | |||
| 28e98488f1 | |||
| b4d476613e | |||
| b48a1aac44 | |||
| 596d212593 | |||
| 54f290327e | |||
| 16f248ceab | |||
| 856d811187 | |||
| d07b194c04 | |||
| 2554b58be6 | |||
| a627b5838e | |||
| c479a9f381 | |||
| 02057e663b | |||
| 6501594100 | |||
| c6599edc3d | |||
| 709a0620b6 | |||
| f9b2a96c7c | |||
| 4dca6189cb | |||
| c7f5b63fe5 | |||
| 96c2f45c85 | |||
| 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 | 
							
								
								
									
										9
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -41,6 +41,15 @@ jobs: | ||||
|         with: | ||||
|           name: build-output-windows | ||||
|           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: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|   | ||||
							
								
								
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -12,6 +12,9 @@ | ||||
| .swiftpm/ | ||||
| migrate_working_dir/ | ||||
|  | ||||
| # Inno Setup | ||||
| Installer/ | ||||
|  | ||||
| # IntelliJ related | ||||
| *.iml | ||||
| *.ipr | ||||
|   | ||||
| @@ -14,13 +14,13 @@ The backend of the Solar Network is written in Go and is a microservices app. Th | ||||
|  | ||||
| ## Commit Messages | ||||
|  | ||||
| We're using the gitmoji to clarify the reason and changes of the commit. To learn more about gitmoji, visit https://gitmoji.dev | ||||
| We're using the gitmoji to clarify the reason and changes of the commit. To learn more about gitmoji, visit <https://gitmoji.dev> | ||||
|  | ||||
| All the commit message should follow `:[gitmoji]: <commit message>` syntax | ||||
|  | ||||
| ## Translations & Localization | ||||
|  | ||||
| We're not accepting translation and localization improvements, or fixes on the GitHub or Solsynth Git Repository. If you want to contribute to those, please head to our Crowdin project: https://crowdin.com/project/solian | ||||
| We're not accepting translation and localization improvements, or fixes on the GitHub or Solsynth Git Repository. If you want to contribute to those, please head to our Crowdin project: <https://crowdin.com/project/solian> | ||||
|  | ||||
| ## New Features | ||||
|  | ||||
| @@ -28,9 +28,14 @@ To contribute new features, please create an issue or mention the feature you wa | ||||
|  | ||||
| ## Bug Reports / Ask for help | ||||
|  | ||||
| Read the error message, check for the update (including pre-releases), and wiki before creating an issue. At the same time, be respectful and don't argue with our developers and contributors in the development chat or GitHub issue. Otherwise your issue may got deleted and your Solar Network Account may got a strike.  | ||||
| Read the error message, check for the update (including pre-releases), and wiki before creating an issue. At the same time, be respectful and don't argue with our developers and contributors in the development chat or GitHub issue. Otherwise your issue may got deleted and your Solar Network Account may got a strike. | ||||
|  | ||||
| ## Styles of Code | ||||
|  | ||||
| Before you create a Pull Request, make sure your code has pass the `flutter analyze` check, if there is any notes, fix as much as possible, if there is no way to fix, do ignore. | ||||
|  | ||||
| When the code contains comments, use English. We do not any other language of comments existing in the codebase. It might confuse future contributors, cause the code hard to understand and maintaiance. | ||||
|  | ||||
| ----------- | ||||
|  | ||||
| We appreciate every single commit you contributed. Let's work together and create a better Solar Network! | ||||
|  | ||||
|   | ||||
| @@ -63,3 +63,8 @@ If you want to build the release version, use the flutter build command. Learn m | ||||
| flutter build <platform> | ||||
| ``` | ||||
|  | ||||
| ### Known Issues | ||||
|  | ||||
| Due to the issues with the flutter build tools, [see](https://github.com/flutter/flutter/issues/160622). | ||||
|  | ||||
| Since there is a watchOS app for iOS, you're unable to use the flutter cli to run iOS app. Use xcode instead. | ||||
| @@ -5,6 +5,7 @@ plugins { | ||||
|     id("com.android.application") | ||||
|     // START: FlutterFire Configuration | ||||
|     id("com.google.gms.google-services") | ||||
|     id("com.google.firebase.crashlytics") | ||||
|     // END: FlutterFire Configuration | ||||
|     id("kotlin-android") | ||||
|     // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. | ||||
| @@ -23,6 +24,8 @@ android { | ||||
|     ndkVersion = "29.0.13113456" | ||||
|  | ||||
|     compileOptions { | ||||
|         isCoreLibraryDesugaringEnabled = true | ||||
|  | ||||
|         sourceCompatibility = JavaVersion.VERSION_17 | ||||
|         targetCompatibility = JavaVersion.VERSION_17 | ||||
|     } | ||||
| @@ -51,16 +54,25 @@ android { | ||||
|     buildTypes { | ||||
|         release { | ||||
|             signingConfig = signingConfigs.getByName("release") | ||||
|  | ||||
|             isMinifyEnabled = true | ||||
|             proguardFiles( | ||||
|                 getDefaultProguardFile("proguard-android-optimize.txt"), | ||||
|                 "proguard-rules.pro" | ||||
|             ) | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| dependencies { | ||||
|     coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.4") | ||||
|      | ||||
|     implementation("com.google.android.material:material:1.12.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") | ||||
| } | ||||
|  | ||||
| flutter { | ||||
|     source = "../.." | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -12,7 +12,12 @@ | ||||
|           "package_name": "dev.solsynth.solian" | ||||
|         } | ||||
|       }, | ||||
|       "oauth_client": [], | ||||
|       "oauth_client": [ | ||||
|         { | ||||
|           "client_id": "961776991058-963m1qin2vtp8fv693b5fdrab5hmpl89.apps.googleusercontent.com", | ||||
|           "client_type": 3 | ||||
|         } | ||||
|       ], | ||||
|       "api_key": [ | ||||
|         { | ||||
|           "current_key": "AIzaSyDvFNudXYs29uDtcCv6pFR8h5tXBs90FYk" | ||||
| @@ -20,7 +25,20 @@ | ||||
|       ], | ||||
|       "services": { | ||||
|         "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
									
								
							
							
						
						| @@ -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(); | ||||
| } | ||||
| @@ -51,6 +51,12 @@ | ||||
|                 <data android:scheme="http" android:host="solian.app" /> | ||||
|                 <data android:scheme="https" /> | ||||
|             </intent-filter> | ||||
|             <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="solian" /> | ||||
|             </intent-filter> | ||||
|  | ||||
|             <!-- Share Intent Filters --> | ||||
|             <intent-filter> | ||||
|   | ||||
							
								
								
									
										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 | ||||
| zipStoreBase=GRADLE_USER_HOME | ||||
| 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 { | ||||
|     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 | ||||
|     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 | ||||
|     id("org.jetbrains.kotlin.android") version "1.8.22" apply false | ||||
|     id("org.jetbrains.kotlin.android") version("2.2.0") apply false | ||||
| } | ||||
|  | ||||
| include(":app") | ||||
|   | ||||
							
								
								
									
										1079
									
								
								assets/i18n/es-ES.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1079
									
								
								assets/i18n/ja-JP.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1079
									
								
								assets/i18n/ko-KR.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1079
									
								
								assets/i18n/zh-OG.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										12
									
								
								assets/icons/icon-outline.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,12 @@ | ||||
| <svg xmlns="http://www.w3.org/2000/svg" width="192" height="192" fill="none"> | ||||
|     <path stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="12" | ||||
|         d="M54 147h86" /> | ||||
|     <path stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="10" | ||||
|         d="M57 111s-2-4.5-2-10m22 22s-4 7-11 4m9-22s-2-4.5-2-10" /> | ||||
|     <path stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="12" | ||||
|         d="M54 147a32 32 0 0 1-11.999-61.665A39 39 0 0 1 81 46m59 101a30 30 0 0 0 29.933-28" /> | ||||
|     <circle cx="132" cy="75" r="4" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" | ||||
|         stroke-width="8" /> | ||||
|     <path stroke="#fff" stroke-linecap="round" stroke-linejoin="round" stroke-width="10" | ||||
|         d="M112.5 41.217C100.843 47.961 93 60.564 93 75c0 6.375 1.53 12.393 4.242 17.707m69.513-35.419A38.84 38.84 0 0 1 171 75c0 14.433-7.84 27.034-19.493 33.779m-.793-43.317A20.9 20.9 0 0 1 153 75c0 7.77-4.221 14.556-10.495 18.188m-21.003-36.38C115.224 60.44 111 67.226 111 75a20.9 20.9 0 0 0 2.284 9.533" /> | ||||
| </svg> | ||||
| After Width: | Height: | Size: 1.0 KiB | 
							
								
								
									
										
											BIN
										
									
								
								assets/icons/icon.ico
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 108 KiB | 
							
								
								
									
										
											BIN
										
									
								
								assets/images/media-offline.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 461 KiB | 
							
								
								
									
										
											BIN
										
									
								
								assets/images/stickers/angry.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.0 MiB | 
							
								
								
									
										
											BIN
										
									
								
								assets/images/stickers/clap.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.0 MiB | 
							
								
								
									
										
											BIN
										
									
								
								assets/images/stickers/confuse.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 668 KiB | 
							
								
								
									
										
											BIN
										
									
								
								assets/images/stickers/party.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.1 MiB | 
							
								
								
									
										
											BIN
										
									
								
								assets/images/stickers/pray.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 666 KiB | 
							
								
								
									
										
											BIN
										
									
								
								assets/images/stickers/thumb_up.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 623 KiB | 
| @@ -5,3 +5,7 @@ targets: | ||||
|         options: | ||||
|           explicit_to_json: true | ||||
|           field_rename: snake | ||||
|       drift_dev: | ||||
|         options: | ||||
|           databases: | ||||
|             app_database: lib/database/drift_db.dart | ||||
|   | ||||
							
								
								
									
										1
									
								
								drift_schemas/app_database/drift_schema_v6.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -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"}}}}}} | ||||
| @@ -21,6 +21,6 @@ | ||||
|   <key>CFBundleVersion</key> | ||||
|   <string>1.0</string> | ||||
|   <key>MinimumOSVersion</key> | ||||
|   <string>12.0</string> | ||||
|   <string>13.0</string> | ||||
| </dict> | ||||
| </plist> | ||||
|   | ||||
							
								
								
									
										15
									
								
								ios/Podfile
									
									
									
									
									
								
							
							
						
						| @@ -1,4 +1,3 @@ | ||||
| # Uncomment this line to define a global platform for your project | ||||
| platform :ios, '15.0' | ||||
|  | ||||
| # CocoaPods analytics sends network stats synchronously affecting flutter build latency. | ||||
| @@ -32,6 +31,8 @@ target 'Runner' do | ||||
|   use_modular_headers! | ||||
|  | ||||
|   pod 'Alamofire' | ||||
|   pod 'Kingfisher', '~> 8.0' | ||||
|   pod 'KingfisherWebP' | ||||
|  | ||||
|   flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) | ||||
|  | ||||
| @@ -41,8 +42,6 @@ target 'Runner' do | ||||
|  | ||||
|   target 'SolianNotificationService' do | ||||
|     inherit! :search_paths | ||||
|     pod 'Kingfisher', '~> 8.0' | ||||
|     pod 'Alamofire' | ||||
|   end | ||||
|  | ||||
|   target 'SolianShareExtension' do | ||||
| @@ -50,6 +49,16 @@ target 'Runner' do | ||||
|   end | ||||
| end | ||||
|  | ||||
| target 'WatchRunner Watch App' do | ||||
|   platform :watchos, '11.0' | ||||
|  | ||||
|   use_frameworks! | ||||
|   use_modular_headers! | ||||
|  | ||||
|   pod 'Kingfisher', '~> 8.0' | ||||
|   pod 'KingfisherWebP' | ||||
| end | ||||
|  | ||||
| post_install do |installer| | ||||
|   installer.pods_project.targets.each do |target| | ||||
|     flutter_additional_ios_build_settings(target) | ||||
|   | ||||
							
								
								
									
										276
									
								
								ios/Podfile.lock
									
									
									
									
									
								
							
							
						
						| @@ -1,5 +1,7 @@ | ||||
| PODS: | ||||
|   - Alamofire (5.10.2) | ||||
|   - app_links (6.4.1): | ||||
|     - Flutter | ||||
|   - connectivity_plus (0.0.1): | ||||
|     - Flutter | ||||
|   - croppy (0.0.1): | ||||
| @@ -40,39 +42,93 @@ PODS: | ||||
|   - file_picker (0.0.1): | ||||
|     - DKImagePickerController/PhotoGallery | ||||
|     - Flutter | ||||
|   - Firebase/CoreOnly (12.0.0): | ||||
|     - FirebaseCore (~> 12.0.0) | ||||
|   - Firebase/Messaging (12.0.0): | ||||
|     - Firebase/CoreOnly | ||||
|     - FirebaseMessaging (~> 12.0.0) | ||||
|   - firebase_core (4.0.0): | ||||
|     - Firebase/CoreOnly (= 12.0.0) | ||||
|   - file_saver (0.0.1): | ||||
|     - Flutter | ||||
|   - firebase_messaging (16.0.0): | ||||
|     - Firebase/Messaging (= 12.0.0) | ||||
|   - Firebase/CoreOnly (12.4.0): | ||||
|     - FirebaseCore (~> 12.4.0) | ||||
|   - Firebase/Crashlytics (12.4.0): | ||||
|     - Firebase/CoreOnly | ||||
|     - FirebaseCrashlytics (~> 12.4.0) | ||||
|   - Firebase/Messaging (12.4.0): | ||||
|     - Firebase/CoreOnly | ||||
|     - FirebaseMessaging (~> 12.4.0) | ||||
|   - firebase_analytics (12.0.3): | ||||
|     - firebase_core | ||||
|     - FirebaseAnalytics (= 12.4.0) | ||||
|     - Flutter | ||||
|   - firebase_core (4.2.0): | ||||
|     - Firebase/CoreOnly (= 12.4.0) | ||||
|     - Flutter | ||||
|   - firebase_crashlytics (5.0.3): | ||||
|     - Firebase/Crashlytics (= 12.4.0) | ||||
|     - firebase_core | ||||
|     - Flutter | ||||
|   - FirebaseCore (12.0.0): | ||||
|     - FirebaseCoreInternal (~> 12.0.0) | ||||
|   - firebase_messaging (16.0.3): | ||||
|     - Firebase/Messaging (= 12.4.0) | ||||
|     - firebase_core | ||||
|     - Flutter | ||||
|   - FirebaseAnalytics (12.4.0): | ||||
|     - FirebaseAnalytics/Default (= 12.4.0) | ||||
|     - FirebaseCore (~> 12.4.0) | ||||
|     - FirebaseInstallations (~> 12.4.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.4.0): | ||||
|     - FirebaseCore (~> 12.4.0) | ||||
|     - FirebaseInstallations (~> 12.4.0) | ||||
|     - GoogleAppMeasurement/Default (= 12.4.0) | ||||
|     - GoogleUtilities/AppDelegateSwizzler (~> 8.1) | ||||
|     - GoogleUtilities/MethodSwizzler (~> 8.1) | ||||
|     - GoogleUtilities/Network (~> 8.1) | ||||
|     - "GoogleUtilities/NSData+zlib (~> 8.1)" | ||||
|     - nanopb (~> 3.30910.0) | ||||
|   - FirebaseCore (12.4.0): | ||||
|     - FirebaseCoreInternal (~> 12.4.0) | ||||
|     - GoogleUtilities/Environment (~> 8.1) | ||||
|     - GoogleUtilities/Logger (~> 8.1) | ||||
|   - FirebaseCoreInternal (12.0.0): | ||||
|   - FirebaseCoreExtension (12.4.0): | ||||
|     - FirebaseCore (~> 12.4.0) | ||||
|   - FirebaseCoreInternal (12.4.0): | ||||
|     - "GoogleUtilities/NSData+zlib (~> 8.1)" | ||||
|   - FirebaseInstallations (12.0.0): | ||||
|     - FirebaseCore (~> 12.0.0) | ||||
|   - FirebaseCrashlytics (12.4.0): | ||||
|     - FirebaseCore (~> 12.4.0) | ||||
|     - FirebaseInstallations (~> 12.4.0) | ||||
|     - FirebaseRemoteConfigInterop (~> 12.4.0) | ||||
|     - FirebaseSessions (~> 12.4.0) | ||||
|     - GoogleDataTransport (~> 10.1) | ||||
|     - GoogleUtilities/Environment (~> 8.1) | ||||
|     - nanopb (~> 3.30910.0) | ||||
|     - PromisesObjC (~> 2.4) | ||||
|   - FirebaseInstallations (12.4.0): | ||||
|     - FirebaseCore (~> 12.4.0) | ||||
|     - GoogleUtilities/Environment (~> 8.1) | ||||
|     - GoogleUtilities/UserDefaults (~> 8.1) | ||||
|     - PromisesObjC (~> 2.4) | ||||
|   - FirebaseMessaging (12.0.0): | ||||
|     - FirebaseCore (~> 12.0.0) | ||||
|     - FirebaseInstallations (~> 12.0.0) | ||||
|   - FirebaseMessaging (12.4.0): | ||||
|     - FirebaseCore (~> 12.4.0) | ||||
|     - FirebaseInstallations (~> 12.4.0) | ||||
|     - GoogleDataTransport (~> 10.1) | ||||
|     - GoogleUtilities/AppDelegateSwizzler (~> 8.1) | ||||
|     - GoogleUtilities/Environment (~> 8.1) | ||||
|     - GoogleUtilities/Reachability (~> 8.1) | ||||
|     - GoogleUtilities/UserDefaults (~> 8.1) | ||||
|     - nanopb (~> 3.30910.0) | ||||
|   - FirebaseRemoteConfigInterop (12.4.0) | ||||
|   - FirebaseSessions (12.4.0): | ||||
|     - FirebaseCore (~> 12.4.0) | ||||
|     - FirebaseCoreExtension (~> 12.4.0) | ||||
|     - FirebaseInstallations (~> 12.4.0) | ||||
|     - GoogleDataTransport (~> 10.1) | ||||
|     - GoogleUtilities/Environment (~> 8.1) | ||||
|     - GoogleUtilities/UserDefaults (~> 8.1) | ||||
|     - nanopb (~> 3.30910.0) | ||||
|     - PromisesSwift (~> 2.1) | ||||
|   - Flutter (1.0.0) | ||||
|   - flutter_app_update (0.0.1): | ||||
|     - Flutter | ||||
|   - flutter_inappwebview_ios (0.0.1): | ||||
|     - Flutter | ||||
|     - flutter_inappwebview_ios/Core (= 0.0.1) | ||||
| @@ -82,6 +138,8 @@ PODS: | ||||
|     - OrderedSet (~> 6.0.3) | ||||
|   - flutter_keyboard_visibility (0.0.1): | ||||
|     - Flutter | ||||
|   - flutter_local_notifications (0.0.1): | ||||
|     - Flutter | ||||
|   - flutter_native_splash (2.4.3): | ||||
|     - Flutter | ||||
|   - flutter_platform_alert (0.0.1): | ||||
| @@ -93,12 +151,39 @@ PODS: | ||||
|   - flutter_udid (0.0.1): | ||||
|     - Flutter | ||||
|     - SAMKeychain | ||||
|   - flutter_webrtc (1.0.0): | ||||
|   - flutter_webrtc (1.2.0): | ||||
|     - Flutter | ||||
|     - WebRTC-SDK (= 137.7151.02) | ||||
|     - WebRTC-SDK (= 137.7151.04) | ||||
|   - gal (1.0.0): | ||||
|     - Flutter | ||||
|     - FlutterMacOS | ||||
|   - GoogleAdsOnDeviceConversion (3.1.0): | ||||
|     - GoogleUtilities/Environment (~> 8.1) | ||||
|     - GoogleUtilities/Logger (~> 8.1) | ||||
|     - GoogleUtilities/Network (~> 8.1) | ||||
|     - nanopb (~> 3.30910.0) | ||||
|   - GoogleAppMeasurement/Core (12.4.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.4.0): | ||||
|     - GoogleAdsOnDeviceConversion (~> 3.1.0) | ||||
|     - GoogleAppMeasurement/Core (= 12.4.0) | ||||
|     - GoogleAppMeasurement/IdentitySupport (= 12.4.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.4.0): | ||||
|     - GoogleAppMeasurement/Core (= 12.4.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): | ||||
|     - nanopb (~> 3.30910.0) | ||||
|     - PromisesObjC (~> 2.4) | ||||
| @@ -112,6 +197,9 @@ PODS: | ||||
|   - GoogleUtilities/Logger (8.1.0): | ||||
|     - GoogleUtilities/Environment | ||||
|     - GoogleUtilities/Privacy | ||||
|   - GoogleUtilities/MethodSwizzler (8.1.0): | ||||
|     - GoogleUtilities/Logger | ||||
|     - GoogleUtilities/Privacy | ||||
|   - GoogleUtilities/Network (8.1.0): | ||||
|     - GoogleUtilities/Logger | ||||
|     - "GoogleUtilities/NSData+zlib" | ||||
| @@ -130,11 +218,26 @@ PODS: | ||||
|     - Flutter | ||||
|   - irondash_engine_context (0.0.1): | ||||
|     - Flutter | ||||
|   - Kingfisher (8.5.0) | ||||
|   - livekit_client (2.5.0): | ||||
|   - Kingfisher (8.6.1) | ||||
|   - KingfisherWebP (1.7.2): | ||||
|     - Kingfisher (~> 8.0) | ||||
|     - libwebp (>= 1.1.0) | ||||
|   - libwebp (1.5.0): | ||||
|     - libwebp/demux (= 1.5.0) | ||||
|     - libwebp/mux (= 1.5.0) | ||||
|     - libwebp/sharpyuv (= 1.5.0) | ||||
|     - libwebp/webp (= 1.5.0) | ||||
|   - libwebp/demux (1.5.0): | ||||
|     - libwebp/webp | ||||
|   - libwebp/mux (1.5.0): | ||||
|     - libwebp/demux | ||||
|   - libwebp/sharpyuv (1.5.0) | ||||
|   - libwebp/webp (1.5.0): | ||||
|     - libwebp/sharpyuv | ||||
|   - livekit_client (2.5.3): | ||||
|     - Flutter | ||||
|     - flutter_webrtc | ||||
|     - WebRTC-SDK (= 137.7151.02) | ||||
|     - WebRTC-SDK (= 137.7151.04) | ||||
|   - local_auth_darwin (0.0.1): | ||||
|     - Flutter | ||||
|     - FlutterMacOS | ||||
| @@ -160,14 +263,16 @@ PODS: | ||||
|   - pointer_interceptor_ios (0.0.1): | ||||
|     - Flutter | ||||
|   - PromisesObjC (2.4.0) | ||||
|   - PromisesSwift (2.4.0): | ||||
|     - PromisesObjC (= 2.4.0) | ||||
|   - receive_sharing_intent (1.8.1): | ||||
|     - Flutter | ||||
|   - record_ios (1.0.0): | ||||
|   - record_ios (1.1.0): | ||||
|     - Flutter | ||||
|   - SAMKeychain (1.5.3) | ||||
|   - SDWebImage (5.21.1): | ||||
|     - SDWebImage/Core (= 5.21.1) | ||||
|   - SDWebImage/Core (5.21.1) | ||||
|   - SDWebImage (5.21.3): | ||||
|     - SDWebImage/Core (= 5.21.3) | ||||
|   - SDWebImage/Core (5.21.3) | ||||
|   - share_plus (0.0.1): | ||||
|     - Flutter | ||||
|   - shared_preferences_foundation (0.0.1): | ||||
| @@ -178,25 +283,25 @@ PODS: | ||||
|   - sqflite_darwin (0.0.4): | ||||
|     - Flutter | ||||
|     - FlutterMacOS | ||||
|   - sqlite3 (3.50.3): | ||||
|     - sqlite3/common (= 3.50.3) | ||||
|   - sqlite3/common (3.50.3) | ||||
|   - sqlite3/dbstatvtab (3.50.3): | ||||
|   - sqlite3 (3.50.4): | ||||
|     - sqlite3/common (= 3.50.4) | ||||
|   - sqlite3/common (3.50.4) | ||||
|   - sqlite3/dbstatvtab (3.50.4): | ||||
|     - sqlite3/common | ||||
|   - sqlite3/fts5 (3.50.3): | ||||
|   - sqlite3/fts5 (3.50.4): | ||||
|     - sqlite3/common | ||||
|   - sqlite3/math (3.50.3): | ||||
|   - sqlite3/math (3.50.4): | ||||
|     - sqlite3/common | ||||
|   - sqlite3/perf-threadsafe (3.50.3): | ||||
|   - sqlite3/perf-threadsafe (3.50.4): | ||||
|     - sqlite3/common | ||||
|   - sqlite3/rtree (3.50.3): | ||||
|   - sqlite3/rtree (3.50.4): | ||||
|     - sqlite3/common | ||||
|   - sqlite3/session (3.50.3): | ||||
|   - sqlite3/session (3.50.4): | ||||
|     - sqlite3/common | ||||
|   - sqlite3_flutter_libs (0.0.1): | ||||
|     - Flutter | ||||
|     - FlutterMacOS | ||||
|     - sqlite3 (~> 3.50.3) | ||||
|     - sqlite3 (~> 3.50.4) | ||||
|     - sqlite3/dbstatvtab | ||||
|     - sqlite3/fts5 | ||||
|     - sqlite3/math | ||||
| @@ -206,25 +311,33 @@ PODS: | ||||
|   - super_native_extensions (0.0.1): | ||||
|     - Flutter | ||||
|   - SwiftyGif (5.4.5) | ||||
|   - syncfusion_flutter_pdfviewer (0.0.1): | ||||
|     - Flutter | ||||
|   - url_launcher_ios (0.0.1): | ||||
|     - Flutter | ||||
|   - volume_controller (0.0.1): | ||||
|     - Flutter | ||||
|   - wakelock_plus (0.0.1): | ||||
|     - Flutter | ||||
|   - WebRTC-SDK (137.7151.02) | ||||
|   - WebRTC-SDK (137.7151.04) | ||||
|  | ||||
| DEPENDENCIES: | ||||
|   - Alamofire | ||||
|   - app_links (from `.symlinks/plugins/app_links/ios`) | ||||
|   - connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`) | ||||
|   - croppy (from `.symlinks/plugins/croppy/ios`) | ||||
|   - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) | ||||
|   - file_picker (from `.symlinks/plugins/file_picker/ios`) | ||||
|   - file_saver (from `.symlinks/plugins/file_saver/ios`) | ||||
|   - firebase_analytics (from `.symlinks/plugins/firebase_analytics/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`) | ||||
|   - Flutter (from `Flutter`) | ||||
|   - flutter_app_update (from `.symlinks/plugins/flutter_app_update/ios`) | ||||
|   - flutter_inappwebview_ios (from `.symlinks/plugins/flutter_inappwebview_ios/ios`) | ||||
|   - flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`) | ||||
|   - flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`) | ||||
|   - flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`) | ||||
|   - flutter_platform_alert (from `.symlinks/plugins/flutter_platform_alert/ios`) | ||||
|   - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`) | ||||
| @@ -235,6 +348,7 @@ DEPENDENCIES: | ||||
|   - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) | ||||
|   - irondash_engine_context (from `.symlinks/plugins/irondash_engine_context/ios`) | ||||
|   - Kingfisher (~> 8.0) | ||||
|   - KingfisherWebP | ||||
|   - livekit_client (from `.symlinks/plugins/livekit_client/ios`) | ||||
|   - local_auth_darwin (from `.symlinks/plugins/local_auth_darwin/darwin`) | ||||
|   - media_kit_libs_ios_video (from `.symlinks/plugins/media_kit_libs_ios_video/ios`) | ||||
| @@ -252,6 +366,7 @@ DEPENDENCIES: | ||||
|   - sqflite_darwin (from `.symlinks/plugins/sqflite_darwin/darwin`) | ||||
|   - sqlite3_flutter_libs (from `.symlinks/plugins/sqlite3_flutter_libs/darwin`) | ||||
|   - super_native_extensions (from `.symlinks/plugins/super_native_extensions/ios`) | ||||
|   - syncfusion_flutter_pdfviewer (from `.symlinks/plugins/syncfusion_flutter_pdfviewer/ios`) | ||||
|   - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) | ||||
|   - volume_controller (from `.symlinks/plugins/volume_controller/ios`) | ||||
|   - wakelock_plus (from `.symlinks/plugins/wakelock_plus/ios`) | ||||
| @@ -262,16 +377,26 @@ SPEC REPOS: | ||||
|     - DKImagePickerController | ||||
|     - DKPhotoGallery | ||||
|     - Firebase | ||||
|     - FirebaseAnalytics | ||||
|     - FirebaseCore | ||||
|     - FirebaseCoreExtension | ||||
|     - FirebaseCoreInternal | ||||
|     - FirebaseCrashlytics | ||||
|     - FirebaseInstallations | ||||
|     - FirebaseMessaging | ||||
|     - FirebaseRemoteConfigInterop | ||||
|     - FirebaseSessions | ||||
|     - GoogleAdsOnDeviceConversion | ||||
|     - GoogleAppMeasurement | ||||
|     - GoogleDataTransport | ||||
|     - GoogleUtilities | ||||
|     - Kingfisher | ||||
|     - KingfisherWebP | ||||
|     - libwebp | ||||
|     - nanopb | ||||
|     - OrderedSet | ||||
|     - PromisesObjC | ||||
|     - PromisesSwift | ||||
|     - SAMKeychain | ||||
|     - SDWebImage | ||||
|     - sqlite3 | ||||
| @@ -279,6 +404,8 @@ SPEC REPOS: | ||||
|     - WebRTC-SDK | ||||
|  | ||||
| EXTERNAL SOURCES: | ||||
|   app_links: | ||||
|     :path: ".symlinks/plugins/app_links/ios" | ||||
|   connectivity_plus: | ||||
|     :path: ".symlinks/plugins/connectivity_plus/ios" | ||||
|   croppy: | ||||
| @@ -287,16 +414,26 @@ EXTERNAL SOURCES: | ||||
|     :path: ".symlinks/plugins/device_info_plus/ios" | ||||
|   file_picker: | ||||
|     :path: ".symlinks/plugins/file_picker/ios" | ||||
|   file_saver: | ||||
|     :path: ".symlinks/plugins/file_saver/ios" | ||||
|   firebase_analytics: | ||||
|     :path: ".symlinks/plugins/firebase_analytics/ios" | ||||
|   firebase_core: | ||||
|     :path: ".symlinks/plugins/firebase_core/ios" | ||||
|   firebase_crashlytics: | ||||
|     :path: ".symlinks/plugins/firebase_crashlytics/ios" | ||||
|   firebase_messaging: | ||||
|     :path: ".symlinks/plugins/firebase_messaging/ios" | ||||
|   Flutter: | ||||
|     :path: Flutter | ||||
|   flutter_app_update: | ||||
|     :path: ".symlinks/plugins/flutter_app_update/ios" | ||||
|   flutter_inappwebview_ios: | ||||
|     :path: ".symlinks/plugins/flutter_inappwebview_ios/ios" | ||||
|   flutter_keyboard_visibility: | ||||
|     :path: ".symlinks/plugins/flutter_keyboard_visibility/ios" | ||||
|   flutter_local_notifications: | ||||
|     :path: ".symlinks/plugins/flutter_local_notifications/ios" | ||||
|   flutter_native_splash: | ||||
|     :path: ".symlinks/plugins/flutter_native_splash/ios" | ||||
|   flutter_platform_alert: | ||||
| @@ -349,6 +486,8 @@ EXTERNAL SOURCES: | ||||
|     :path: ".symlinks/plugins/sqlite3_flutter_libs/darwin" | ||||
|   super_native_extensions: | ||||
|     :path: ".symlinks/plugins/super_native_extensions/ios" | ||||
|   syncfusion_flutter_pdfviewer: | ||||
|     :path: ".symlinks/plugins/syncfusion_flutter_pdfviewer/ios" | ||||
|   url_launcher_ios: | ||||
|     :path: ".symlinks/plugins/url_launcher_ios/ios" | ||||
|   volume_controller: | ||||
| @@ -358,36 +497,51 @@ EXTERNAL SOURCES: | ||||
|  | ||||
| SPEC CHECKSUMS: | ||||
|   Alamofire: 7193b3b92c74a07f85569e1a6c4f4237291e7496 | ||||
|   app_links: 3dbc685f76b1693c66a6d9dd1e9ab6f73d97dc0a | ||||
|   connectivity_plus: cb623214f4e1f6ef8fe7403d580fdad517d2f7dd | ||||
|   croppy: 979e8ddc254f4642bffe7d52dc7193354b27ba30 | ||||
|   device_info_plus: 21fcca2080fbcd348be798aa36c3e5ed849eefbe | ||||
|   DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c | ||||
|   DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60 | ||||
|   file_picker: a0560bc09d61de87f12d246fc47d2119e6ef37be | ||||
|   Firebase: 800d487043c0557d9faed71477a38d9aafb08a41 | ||||
|   firebase_core: 633e1851ffe1b9ab875f6467a4f574c79cef02e4 | ||||
|   firebase_messaging: d17feef781edc84ebefe62624fb384358ad96361 | ||||
|   FirebaseCore: 055f4ab117d5964158c833f3d5e7ec6d91648d4a | ||||
|   FirebaseCoreInternal: dedc28e569a4be85f38f3d6af1070a2e12018d55 | ||||
|   FirebaseInstallations: d4c7c958f99c8860d7fcece786314ae790e2f988 | ||||
|   FirebaseMessaging: af49f8d7c0a3d2a017d9302c80946f45a7777dde | ||||
|   Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 | ||||
|   file_saver: 6cdbcddd690cb02b0c1a0c225b37cd805c2bf8b6 | ||||
|   Firebase: f07b15ae5a6ec0f93713e30b923d9970d144af3e | ||||
|   firebase_analytics: 1d024068b1d4707d5ba7a42a12976ddf3316d835 | ||||
|   firebase_core: 744984dbbed8b3036abf34f0b98d80f130a7e464 | ||||
|   firebase_crashlytics: f3a9a4338ab99b67042f64e9e22e1bf349cb44ed | ||||
|   firebase_messaging: 82c70650c426a0a14873e1acdb9ec2b443c4e8b4 | ||||
|   FirebaseAnalytics: 0fc2b20091f0ddd21bf73397cf8f0eb5346dc24f | ||||
|   FirebaseCore: bb595f3114953664e3c1dc032f008a244147cfd3 | ||||
|   FirebaseCoreExtension: 7e1f7118ee970e001a8013719fb90950ee5e0018 | ||||
|   FirebaseCoreInternal: d7f5a043c2cd01a08103ab586587c1468047bca6 | ||||
|   FirebaseCrashlytics: a6ece278a837c7e88de2d9b5da0a3542f2342395 | ||||
|   FirebaseInstallations: ae9f4902cb5bf1d0c5eaa31ec1f4e5495a0714e2 | ||||
|   FirebaseMessaging: d33971b7bb252745ea6cd31ab190d1a1df4b8ed5 | ||||
|   FirebaseRemoteConfigInterop: 1e31ec72b89c9924367c59bfb5ec9ab60d1d6766 | ||||
|   FirebaseSessions: ba7c7a7ca8696a8d540eb3fe3800fbe98c79786d | ||||
|   Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467 | ||||
|   flutter_app_update: 816fdb2e30e4832a7c45e3f108d391c42ef040a9 | ||||
|   flutter_inappwebview_ios: b89ba3482b96fb25e00c967aae065701b66e9b99 | ||||
|   flutter_keyboard_visibility: 4625131e43015dbbe759d9b20daaf77e0e3f6619 | ||||
|   flutter_local_notifications: a5a732f069baa862e728d839dd2ebb904737effb | ||||
|   flutter_native_splash: c32d145d68aeda5502d5f543ee38c192065986cf | ||||
|   flutter_platform_alert: bf3b5fcd4ac14bd637e20527e9c471633071afd3 | ||||
|   flutter_secure_storage: 1ed9476fba7e7a782b22888f956cce43e2c62f13 | ||||
|   flutter_timezone: 7c838e17ffd4645d261e87037e5bebf6d38fe544 | ||||
|   flutter_udid: f7c3884e6ec2951efe4f9de082257fc77c4d15e9 | ||||
|   flutter_webrtc: 6f7da106613d52ade777d5b4875a43f48c28b457 | ||||
|   flutter_webrtc: c3e21fc0dcd9d8eb246ae4d5256fcbeb2f5ecd22 | ||||
|   gal: baecd024ebfd13c441269ca7404792a7152fde89 | ||||
|   GoogleAdsOnDeviceConversion: e03a386840803ea7eef3fd22a061930142c039c1 | ||||
|   GoogleAppMeasurement: 1e718274b7e015cefd846ac1fcf7820c70dc017d | ||||
|   GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 | ||||
|   GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1 | ||||
|   image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a | ||||
|   image_picker_ios: e0ece4aa2a75771a7de3fa735d26d90817041326 | ||||
|   irondash_engine_context: 8e58ca8e0212ee9d1c7dc6a42121849986c88486 | ||||
|   Kingfisher: ff0d31a1f07bdff6a1ebb3ba08b8e6e567b6500c | ||||
|   livekit_client: e3b79b99405428aac439b6b76a254cd9a11dbbfb | ||||
|   local_auth_darwin: d2e8c53ef0c4f43c646462e3415432c4dab3ae19 | ||||
|   Kingfisher: 7ac7a7288653787a54206b11a3c74f49ab650f1f | ||||
|   KingfisherWebP: 38b9721821947f547afb78f933f75f4f9e0ae402 | ||||
|   libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8 | ||||
|   livekit_client: 86c8af579274e4b7a215185a8080db2d4e176f40 | ||||
|   local_auth_darwin: c3ee6cce0a8d56be34c8ccb66ba31f7f180aaebb | ||||
|   media_kit_libs_ios_video: 5a18affdb97d1f5d466dc79988b13eff6c5e2854 | ||||
|   media_kit_video: 1746e198cb697d1ffb734b1d05ec429d1fcd1474 | ||||
|   nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 | ||||
| @@ -395,26 +549,28 @@ SPEC CHECKSUMS: | ||||
|   OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94 | ||||
|   package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499 | ||||
|   pasteboard: 49088aeb6119d51f976a421db60d8e1ab079b63c | ||||
|   path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564 | ||||
|   pointer_interceptor_ios: ec847ef8b0915778bed2b2cef636f4d177fa8eed | ||||
|   path_provider_foundation: bb55f6dbba17d0dccd6737fe6f7f34fbd0376880 | ||||
|   pointer_interceptor_ios: da06a662d5bfd329602b45b2ab41bc0fb5fdb0f0 | ||||
|   PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 | ||||
|   PromisesSwift: 9d77319bbe72ebf6d872900551f7eeba9bce2851 | ||||
|   receive_sharing_intent: 222384f00ffe7e952bbfabaa9e3967cb87e5fe00 | ||||
|   record_ios: fee1c924aa4879b882ebca2b4bce6011bcfc3d8b | ||||
|   record_ios: f75fa1d57f840012775c0e93a38a7f3ceea1a374 | ||||
|   SAMKeychain: 483e1c9f32984d50ca961e26818a534283b4cd5c | ||||
|   SDWebImage: f29024626962457f3470184232766516dee8dfea | ||||
|   SDWebImage: 16309af6d214ba3f77a7c6f6fdda888cb313a50a | ||||
|   share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a | ||||
|   shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7 | ||||
|   shared_preferences_foundation: 7036424c3d8ec98dfe75ff1667cb0cd531ec82bb | ||||
|   sign_in_with_apple: c5dcc141574c8c54d5ac99dd2163c0c72ad22418 | ||||
|   sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0 | ||||
|   sqlite3: 83105acd294c9137c026e2da1931c30b4588ab81 | ||||
|   sqlite3_flutter_libs: 616267f2fca40e9c6af8c5d82324e05667040b6e | ||||
|   sqlite3: 73513155ec6979715d3904ef53a8d68892d4032b | ||||
|   sqlite3_flutter_libs: 83f8e9f5b6554077f1d93119fe20ebaa5f3a9ef1 | ||||
|   super_native_extensions: b763c02dc3a8fd078389f410bf15149179020cb4 | ||||
|   SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4 | ||||
|   url_launcher_ios: 694010445543906933d732453a59da0a173ae33d | ||||
|   syncfusion_flutter_pdfviewer: 90dc48305d2e33d4aa20681d1e98ddeda891bc14 | ||||
|   url_launcher_ios: 7a95fa5b60cc718a708b8f2966718e93db0cef1b | ||||
|   volume_controller: 3657a1f65bedb98fa41ff7dc5793537919f31b12 | ||||
|   wakelock_plus: e29112ab3ef0b318e58cfa5c32326458be66b556 | ||||
|   WebRTC-SDK: d20de357dcbf7c9696b124b39f3ff62125107e4b | ||||
|   WebRTC-SDK: 40d4f5ba05cadff14e4db5614aec402a633f007e | ||||
|  | ||||
| PODFILE CHECKSUM: c818292390b02fa379036ea099713a332bd7193f | ||||
| PODFILE CHECKSUM: fa173dbf2c15b3248d7fd65204fa9d6c4a6f13d6 | ||||
|  | ||||
| COCOAPODS: 1.16.2 | ||||
|   | ||||
| @@ -10,6 +10,7 @@ | ||||
| 		1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; | ||||
| 		331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; | ||||
| 		3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; | ||||
| 		7310A7DF2EB10963002C0FD3 /* WatchRunner Watch App.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = 7310A7D42EB10962002C0FD3 /* WatchRunner Watch App.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; | ||||
| 		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, ); }; }; | ||||
| @@ -20,6 +21,7 @@ | ||||
| 		97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; | ||||
| 		97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; | ||||
| 		97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; | ||||
| 		A1D34487886D362AC8B99B2E /* Pods_WatchRunner_Watch_App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 802C1CFCA7F1E069AAEFB454 /* Pods_WatchRunner_Watch_App.framework */; }; | ||||
| 		B87C0E607033790E71B54D73 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F6D834CA86410B09796B312B /* Pods_Runner.framework */; }; | ||||
| 		D174D53FF3E8EA943491A5CC /* Pods_SolianShareExtension.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7B40764A2C4CC0E7DC70A0D3 /* Pods_SolianShareExtension.framework */; }; | ||||
| 		D1772CE196985AE8E8C9F2E5 /* Pods_SolianNotificationService.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 39FE4CC6223F0D3C0E1FFD04 /* Pods_SolianNotificationService.framework */; }; | ||||
| @@ -58,6 +60,17 @@ | ||||
| /* End PBXContainerItemProxy section */ | ||||
|  | ||||
| /* Begin PBXCopyFilesBuildPhase section */ | ||||
| 		7310A7DE2EB10963002C0FD3 /* Embed Watch Content */ = { | ||||
| 			isa = PBXCopyFilesBuildPhase; | ||||
| 			buildActionMask = 12; | ||||
| 			dstPath = "$(CONTENTS_FOLDER_PATH)/Watch"; | ||||
| 			dstSubfolderSpec = 16; | ||||
| 			files = ( | ||||
| 				7310A7DF2EB10963002C0FD3 /* WatchRunner Watch App.app in Embed Watch Content */, | ||||
| 			); | ||||
| 			name = "Embed Watch Content"; | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 		}; | ||||
| 		73268D1D2DEAFD670076E970 /* Embed Foundation Extensions */ = { | ||||
| 			isa = PBXCopyFilesBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| @@ -84,6 +97,7 @@ | ||||
| /* End PBXCopyFilesBuildPhase section */ | ||||
|  | ||||
| /* Begin PBXFileReference section */ | ||||
| 		103EA2362B9E9F127016A1F1 /* Pods-WatchRunner Watch App.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchRunner Watch App.profile.xcconfig"; path = "Target Support Files/Pods-WatchRunner Watch App/Pods-WatchRunner Watch App.profile.xcconfig"; sourceTree = "<group>"; }; | ||||
| 		14118AC858B441AB16B7309E /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = "<group>"; }; | ||||
| 		1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; }; | ||||
| 		1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; }; | ||||
| @@ -100,6 +114,7 @@ | ||||
| 		39FE4CC6223F0D3C0E1FFD04 /* Pods_SolianNotificationService.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SolianNotificationService.framework; sourceTree = BUILT_PRODUCTS_DIR; }; | ||||
| 		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>"; }; | ||||
| 		7310A7D42EB10962002C0FD3 /* WatchRunner Watch App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "WatchRunner Watch App.app"; sourceTree = BUILT_PRODUCTS_DIR; }; | ||||
| 		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; }; | ||||
| @@ -111,6 +126,8 @@ | ||||
| 		74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; | ||||
| 		7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = "<group>"; }; | ||||
| 		7B40764A2C4CC0E7DC70A0D3 /* Pods_SolianShareExtension.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SolianShareExtension.framework; sourceTree = BUILT_PRODUCTS_DIR; }; | ||||
| 		802C1CFCA7F1E069AAEFB454 /* Pods_WatchRunner_Watch_App.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_WatchRunner_Watch_App.framework; sourceTree = BUILT_PRODUCTS_DIR; }; | ||||
| 		86D60BA96DA647E1B11AA7F0 /* Pods-WatchRunner Watch App.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchRunner Watch App.debug.xcconfig"; path = "Target Support Files/Pods-WatchRunner Watch App/Pods-WatchRunner Watch App.debug.xcconfig"; sourceTree = "<group>"; }; | ||||
| 		8B40620B1EEBB09456406A3C /* Pods-SolianNotificationService.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SolianNotificationService.profile.xcconfig"; path = "Target Support Files/Pods-SolianNotificationService/Pods-SolianNotificationService.profile.xcconfig"; sourceTree = "<group>"; }; | ||||
| 		9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = "<group>"; }; | ||||
| 		9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = "<group>"; }; | ||||
| @@ -120,6 +137,7 @@ | ||||
| 		97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; | ||||
| 		97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; | ||||
| 		9AE244813FCDFAA941430393 /* GoogleService-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = "GoogleService-Info.plist"; path = "Runner/GoogleService-Info.plist"; sourceTree = "<group>"; }; | ||||
| 		A2EB1DAFDE9B8E6D88BBF7A3 /* Pods-WatchRunner Watch App.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-WatchRunner Watch App.release.xcconfig"; path = "Target Support Files/Pods-WatchRunner Watch App/Pods-WatchRunner Watch App.release.xcconfig"; sourceTree = "<group>"; }; | ||||
| 		A499FDB2082EB000933AA8C5 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = "<group>"; }; | ||||
| 		A85FF612AE7623A9934E57CE /* Pods-SolianShareExtension.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SolianShareExtension.profile.xcconfig"; path = "Target Support Files/Pods-SolianShareExtension/Pods-SolianShareExtension.profile.xcconfig"; sourceTree = "<group>"; }; | ||||
| 		AA0CA8A3E15DEE023BB27438 /* Pods_NotificationService.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_NotificationService.framework; sourceTree = BUILT_PRODUCTS_DIR; }; | ||||
| @@ -162,6 +180,13 @@ | ||||
| /* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ | ||||
|  | ||||
| /* Begin PBXFileSystemSynchronizedRootGroup section */ | ||||
| 		7310A7D52EB10962002C0FD3 /* WatchRunner Watch App */ = { | ||||
| 			isa = PBXFileSystemSynchronizedRootGroup; | ||||
| 			exceptions = ( | ||||
| 			); | ||||
| 			path = "WatchRunner Watch App"; | ||||
| 			sourceTree = "<group>"; | ||||
| 		}; | ||||
| 		73268D272DEB012A0076E970 /* Services */ = { | ||||
| 			isa = PBXFileSystemSynchronizedRootGroup; | ||||
| 			exceptions = ( | ||||
| @@ -205,6 +230,14 @@ | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 		}; | ||||
| 		7310A7D12EB10962002C0FD3 /* Frameworks */ = { | ||||
| 			isa = PBXFrameworksBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 				A1D34487886D362AC8B99B2E /* Pods_WatchRunner_Watch_App.framework in Frameworks */, | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 		}; | ||||
| 		73ACDFA82E3D0E6100B63535 /* Frameworks */ = { | ||||
| 			isa = PBXFrameworksBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| @@ -258,6 +291,7 @@ | ||||
| 				7B40764A2C4CC0E7DC70A0D3 /* Pods_SolianShareExtension.framework */, | ||||
| 				73ACDFAC2E3D0E6100B63535 /* ReplayKit.framework */, | ||||
| 				73ACDFB82E3D0E6100B63535 /* UIKit.framework */, | ||||
| 				802C1CFCA7F1E069AAEFB454 /* Pods_WatchRunner_Watch_App.framework */, | ||||
| 			); | ||||
| 			name = Frameworks; | ||||
| 			sourceTree = "<group>"; | ||||
| @@ -280,6 +314,9 @@ | ||||
| 				17FAB080A9C53193ABD9C15B /* Pods-SolianShareExtension.debug.xcconfig */, | ||||
| 				27C66EFB5A705F1A822C3EB0 /* Pods-SolianShareExtension.release.xcconfig */, | ||||
| 				A85FF612AE7623A9934E57CE /* Pods-SolianShareExtension.profile.xcconfig */, | ||||
| 				86D60BA96DA647E1B11AA7F0 /* Pods-WatchRunner Watch App.debug.xcconfig */, | ||||
| 				A2EB1DAFDE9B8E6D88BBF7A3 /* Pods-WatchRunner Watch App.release.xcconfig */, | ||||
| 				103EA2362B9E9F127016A1F1 /* Pods-WatchRunner Watch App.profile.xcconfig */, | ||||
| 			); | ||||
| 			path = Pods; | ||||
| 			sourceTree = "<group>"; | ||||
| @@ -303,6 +340,7 @@ | ||||
| 				73CDD67B2DEC00480059D95D /* SolianNotificationService */, | ||||
| 				73C305CF2E0BE878009035B9 /* SolianShareExtension */, | ||||
| 				73ACDFAE2E3D0E6100B63535 /* SolianBroadcastExtension */, | ||||
| 				7310A7D52EB10962002C0FD3 /* WatchRunner Watch App */, | ||||
| 				97C146EF1CF9000F007C117D /* Products */, | ||||
| 				331C8082294A63A400263BE5 /* RunnerTests */, | ||||
| 				91E124CE95BCB4DCD890160D /* Pods */, | ||||
| @@ -319,6 +357,7 @@ | ||||
| 				73CDD67A2DEC00480059D95D /* SolianNotificationService.appex */, | ||||
| 				73C305CE2E0BE878009035B9 /* SolianShareExtension.appex */, | ||||
| 				73ACDFAB2E3D0E6100B63535 /* SolianBroadcastExtension.appex */, | ||||
| 				7310A7D42EB10962002C0FD3 /* WatchRunner Watch App.app */, | ||||
| 			); | ||||
| 			name = Products; | ||||
| 			sourceTree = "<group>"; | ||||
| @@ -363,6 +402,28 @@ | ||||
| 			productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; | ||||
| 			productType = "com.apple.product-type.bundle.unit-test"; | ||||
| 		}; | ||||
| 		7310A7D32EB10962002C0FD3 /* WatchRunner Watch App */ = { | ||||
| 			isa = PBXNativeTarget; | ||||
| 			buildConfigurationList = 7310A7E32EB10963002C0FD3 /* Build configuration list for PBXNativeTarget "WatchRunner Watch App" */; | ||||
| 			buildPhases = ( | ||||
| 				DDEDA1BA6278B94F0F7B9B61 /* [CP] Check Pods Manifest.lock */, | ||||
| 				7310A7D02EB10962002C0FD3 /* Sources */, | ||||
| 				7310A7D12EB10962002C0FD3 /* Frameworks */, | ||||
| 				7310A7D22EB10962002C0FD3 /* Resources */, | ||||
| 				E29ECA5954168075BDB000DC /* [CP] Embed Pods Frameworks */, | ||||
| 			); | ||||
| 			buildRules = ( | ||||
| 			); | ||||
| 			dependencies = ( | ||||
| 			); | ||||
| 			fileSystemSynchronizedGroups = ( | ||||
| 				7310A7D52EB10962002C0FD3 /* WatchRunner Watch App */, | ||||
| 			); | ||||
| 			name = "WatchRunner Watch App"; | ||||
| 			productName = "WatchRunner Watch App"; | ||||
| 			productReference = 7310A7D42EB10962002C0FD3 /* WatchRunner Watch App.app */; | ||||
| 			productType = "com.apple.product-type.application"; | ||||
| 		}; | ||||
| 		73ACDFAA2E3D0E6100B63535 /* SolianBroadcastExtension */ = { | ||||
| 			isa = PBXNativeTarget; | ||||
| 			buildConfigurationList = 73ACDFCB2E3D0E6100B63535 /* Build configuration list for PBXNativeTarget "SolianBroadcastExtension" */; | ||||
| @@ -434,11 +495,13 @@ | ||||
| 				97C146EA1CF9000F007C117D /* Sources */, | ||||
| 				97C146EB1CF9000F007C117D /* Frameworks */, | ||||
| 				73268D1D2DEAFD670076E970 /* Embed Foundation Extensions */, | ||||
| 				7310A7DE2EB10963002C0FD3 /* Embed Watch Content */, | ||||
| 				97C146EC1CF9000F007C117D /* Resources */, | ||||
| 				9705A1C41CF9048500538489 /* Embed Frameworks */, | ||||
| 				3B06AD1E1E4923F5004D2608 /* Thin Binary */, | ||||
| 				8C0351B03869BBF493808288 /* [CP] Embed Pods Frameworks */, | ||||
| 				5E7D6EF29B671AC7EDBA5649 /* [CP] Copy Pods Resources */, | ||||
| 				E86CDE9D6464F4F52B910856 /* FlutterFire: "flutterfire upload-crashlytics-symbols" */, | ||||
| 			); | ||||
| 			buildRules = ( | ||||
| 			); | ||||
| @@ -462,7 +525,7 @@ | ||||
| 			isa = PBXProject; | ||||
| 			attributes = { | ||||
| 				BuildIndependentTargetsInParallel = YES; | ||||
| 				LastSwiftUpdateCheck = 1640; | ||||
| 				LastSwiftUpdateCheck = 2600; | ||||
| 				LastUpgradeCheck = 1510; | ||||
| 				ORGANIZATIONNAME = ""; | ||||
| 				TargetAttributes = { | ||||
| @@ -470,6 +533,9 @@ | ||||
| 						CreatedOnToolsVersion = 14.0; | ||||
| 						TestTargetID = 97C146ED1CF9000F007C117D; | ||||
| 					}; | ||||
| 					7310A7D32EB10962002C0FD3 = { | ||||
| 						CreatedOnToolsVersion = 26.0.1; | ||||
| 					}; | ||||
| 					73ACDFAA2E3D0E6100B63535 = { | ||||
| 						CreatedOnToolsVersion = 16.4; | ||||
| 					}; | ||||
| @@ -503,6 +569,7 @@ | ||||
| 				73CDD6792DEC00480059D95D /* SolianNotificationService */, | ||||
| 				73C305CD2E0BE878009035B9 /* SolianShareExtension */, | ||||
| 				73ACDFAA2E3D0E6100B63535 /* SolianBroadcastExtension */, | ||||
| 				7310A7D32EB10962002C0FD3 /* WatchRunner Watch App */, | ||||
| 			); | ||||
| 		}; | ||||
| /* End PBXProject section */ | ||||
| @@ -515,6 +582,13 @@ | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 		}; | ||||
| 		7310A7D22EB10962002C0FD3 /* Resources */ = { | ||||
| 			isa = PBXResourcesBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 		}; | ||||
| 		73ACDFA92E3D0E6100B63535 /* Resources */ = { | ||||
| 			isa = PBXResourcesBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| @@ -565,7 +639,7 @@ | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 			shellPath = /bin/sh; | ||||
| 			shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; | ||||
| 			shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin\n"; | ||||
| 		}; | ||||
| 		4815E0A19398E51078F4160D /* [CP] Check Pods Manifest.lock */ = { | ||||
| 			isa = PBXShellScriptBuildPhase; | ||||
| @@ -682,6 +756,63 @@ | ||||
| 			shellPath = /bin/sh; | ||||
| 			shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; | ||||
| 		}; | ||||
| 		DDEDA1BA6278B94F0F7B9B61 /* [CP] Check Pods Manifest.lock */ = { | ||||
| 			isa = PBXShellScriptBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 			); | ||||
| 			inputFileListPaths = ( | ||||
| 			); | ||||
| 			inputPaths = ( | ||||
| 				"${PODS_PODFILE_DIR_PATH}/Podfile.lock", | ||||
| 				"${PODS_ROOT}/Manifest.lock", | ||||
| 			); | ||||
| 			name = "[CP] Check Pods Manifest.lock"; | ||||
| 			outputFileListPaths = ( | ||||
| 			); | ||||
| 			outputPaths = ( | ||||
| 				"$(DERIVED_FILE_DIR)/Pods-WatchRunner Watch App-checkManifestLockResult.txt", | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 			shellPath = /bin/sh; | ||||
| 			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; | ||||
| 			showEnvVarsInLog = 0; | ||||
| 		}; | ||||
| 		E29ECA5954168075BDB000DC /* [CP] Embed Pods Frameworks */ = { | ||||
| 			isa = PBXShellScriptBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 			); | ||||
| 			inputFileListPaths = ( | ||||
| 				"${PODS_ROOT}/Target Support Files/Pods-WatchRunner Watch App/Pods-WatchRunner Watch App-frameworks-${CONFIGURATION}-input-files.xcfilelist", | ||||
| 			); | ||||
| 			name = "[CP] Embed Pods Frameworks"; | ||||
| 			outputFileListPaths = ( | ||||
| 				"${PODS_ROOT}/Target Support Files/Pods-WatchRunner Watch App/Pods-WatchRunner Watch App-frameworks-${CONFIGURATION}-output-files.xcfilelist", | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 			shellPath = /bin/sh; | ||||
| 			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-WatchRunner Watch App/Pods-WatchRunner Watch App-frameworks.sh\"\n"; | ||||
| 			showEnvVarsInLog = 0; | ||||
| 		}; | ||||
| 		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 */ = { | ||||
| 			isa = PBXShellScriptBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| @@ -715,6 +846,13 @@ | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 		}; | ||||
| 		7310A7D02EB10962002C0FD3 /* Sources */ = { | ||||
| 			isa = PBXSourcesBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| 			files = ( | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 		}; | ||||
| 		73ACDFA72E3D0E6100B63535 /* Sources */ = { | ||||
| 			isa = PBXSourcesBuildPhase; | ||||
| 			buildActionMask = 2147483647; | ||||
| @@ -834,7 +972,7 @@ | ||||
| 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||||
| 				GCC_WARN_UNUSED_FUNCTION = YES; | ||||
| 				GCC_WARN_UNUSED_VARIABLE = YES; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 12.0; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 13.0; | ||||
| 				MTL_ENABLE_DEBUG_INFO = NO; | ||||
| 				SDKROOT = iphoneos; | ||||
| 				SUPPORTED_PLATFORMS = iphoneos; | ||||
| @@ -854,6 +992,7 @@ | ||||
| 				CUSTOM_GROUP_ID = group.solsynth.solian; | ||||
| 				DEVELOPMENT_TEAM = W7HPZ53V6B; | ||||
| 				ENABLE_BITCODE = NO; | ||||
| 				EXCLUDED_SOURCE_FILE_NAMES = ""; | ||||
| 				INFOPLIST_FILE = Runner/Info.plist; | ||||
| 				INFOPLIST_KEY_CFBundleDisplayName = Solian; | ||||
| 				INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking"; | ||||
| @@ -864,9 +1003,12 @@ | ||||
| 				); | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = dev.solsynth.solian; | ||||
| 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| 				SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; | ||||
| 				SWIFT_ENABLE_EXPLICIT_MODULES = "$(SWIFT_USE_INTEGRATED_DRIVER)"; | ||||
| 				SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; | ||||
| 				SWIFT_VERSION = 5.0; | ||||
| 				VERSIONING_SYSTEM = "apple-generic"; | ||||
| 				WATCHOS_DEPLOYMENT_TARGET = 11.6; | ||||
| 			}; | ||||
| 			name = Profile; | ||||
| 		}; | ||||
| @@ -874,13 +1016,17 @@ | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			baseConfigurationReference = 14DFD79BE7C26E51B117583C /* Pods-RunnerTests.debug.xcconfig */; | ||||
| 			buildSettings = { | ||||
| 				ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; | ||||
| 				BUNDLE_LOADER = "$(TEST_HOST)"; | ||||
| 				CODE_SIGN_STYLE = Automatic; | ||||
| 				CURRENT_PROJECT_VERSION = 1; | ||||
| 				GENERATE_INFOPLIST_FILE = YES; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 15.0; | ||||
| 				MARKETING_VERSION = 1.0; | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = dev.solsynth.solian.RunnerTests; | ||||
| 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| 				SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; | ||||
| 				SUPPORTS_MACCATALYST = YES; | ||||
| 				SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; | ||||
| 				SWIFT_OPTIMIZATION_LEVEL = "-Onone"; | ||||
| 				SWIFT_VERSION = 5.0; | ||||
| @@ -892,13 +1038,17 @@ | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			baseConfigurationReference = 14118AC858B441AB16B7309E /* Pods-RunnerTests.release.xcconfig */; | ||||
| 			buildSettings = { | ||||
| 				ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; | ||||
| 				BUNDLE_LOADER = "$(TEST_HOST)"; | ||||
| 				CODE_SIGN_STYLE = Automatic; | ||||
| 				CURRENT_PROJECT_VERSION = 1; | ||||
| 				GENERATE_INFOPLIST_FILE = YES; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 15.0; | ||||
| 				MARKETING_VERSION = 1.0; | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = dev.solsynth.solian.RunnerTests; | ||||
| 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| 				SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; | ||||
| 				SUPPORTS_MACCATALYST = YES; | ||||
| 				SWIFT_VERSION = 5.0; | ||||
| 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; | ||||
| 			}; | ||||
| @@ -908,18 +1058,171 @@ | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			baseConfigurationReference = E6B10A9A85BECA2E576C91FF /* Pods-RunnerTests.profile.xcconfig */; | ||||
| 			buildSettings = { | ||||
| 				ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; | ||||
| 				BUNDLE_LOADER = "$(TEST_HOST)"; | ||||
| 				CODE_SIGN_STYLE = Automatic; | ||||
| 				CURRENT_PROJECT_VERSION = 1; | ||||
| 				GENERATE_INFOPLIST_FILE = YES; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 15.0; | ||||
| 				MARKETING_VERSION = 1.0; | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = dev.solsynth.solian.RunnerTests; | ||||
| 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| 				SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; | ||||
| 				SUPPORTS_MACCATALYST = YES; | ||||
| 				SWIFT_VERSION = 5.0; | ||||
| 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; | ||||
| 			}; | ||||
| 			name = Profile; | ||||
| 		}; | ||||
| 		7310A7E02EB10963002C0FD3 /* Debug */ = { | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			baseConfigurationReference = 86D60BA96DA647E1B11AA7F0 /* Pods-WatchRunner Watch App.debug.xcconfig */; | ||||
| 			buildSettings = { | ||||
| 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ||||
| 				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; | ||||
| 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; | ||||
| 				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_STYLE = Automatic; | ||||
| 				CURRENT_PROJECT_VERSION = 1; | ||||
| 				DEVELOPMENT_TEAM = W7HPZ53V6B; | ||||
| 				ENABLE_PREVIEWS = YES; | ||||
| 				ENABLE_USER_SCRIPT_SANDBOXING = NO; | ||||
| 				GCC_C_LANGUAGE_STANDARD = gnu17; | ||||
| 				GENERATE_INFOPLIST_FILE = YES; | ||||
| 				INFOPLIST_FILE = "WatchRunner-Watch-App-Info.plist"; | ||||
| 				INFOPLIST_KEY_CFBundleDisplayName = Solian; | ||||
| 				INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; | ||||
| 				INFOPLIST_KEY_WKCompanionAppBundleIdentifier = dev.solsynth.solian; | ||||
| 				INFOPLIST_KEY_WKRunsIndependentlyOfCompanionApp = NO; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 18.6; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = ( | ||||
| 					"$(inherited)", | ||||
| 					"@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.watchkitapp; | ||||
| 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| 				SDKROOT = watchos; | ||||
| 				SKIP_INSTALL = YES; | ||||
| 				STRING_CATALOG_GENERATE_SYMBOLS = YES; | ||||
| 				SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; | ||||
| 				SWIFT_APPROACHABLE_CONCURRENCY = YES; | ||||
| 				SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor; | ||||
| 				SWIFT_EMIT_LOC_STRINGS = YES; | ||||
| 				SWIFT_OPTIMIZATION_LEVEL = "-Onone"; | ||||
| 				SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; | ||||
| 				SWIFT_VERSION = 5.0; | ||||
| 				TARGETED_DEVICE_FAMILY = 4; | ||||
| 				WATCHOS_DEPLOYMENT_TARGET = 11.6; | ||||
| 			}; | ||||
| 			name = Debug; | ||||
| 		}; | ||||
| 		7310A7E12EB10963002C0FD3 /* Release */ = { | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			baseConfigurationReference = A2EB1DAFDE9B8E6D88BBF7A3 /* Pods-WatchRunner Watch App.release.xcconfig */; | ||||
| 			buildSettings = { | ||||
| 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ||||
| 				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; | ||||
| 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; | ||||
| 				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_STYLE = Automatic; | ||||
| 				CURRENT_PROJECT_VERSION = 1; | ||||
| 				DEVELOPMENT_TEAM = W7HPZ53V6B; | ||||
| 				ENABLE_PREVIEWS = YES; | ||||
| 				ENABLE_USER_SCRIPT_SANDBOXING = NO; | ||||
| 				GCC_C_LANGUAGE_STANDARD = gnu17; | ||||
| 				GENERATE_INFOPLIST_FILE = YES; | ||||
| 				INFOPLIST_FILE = "WatchRunner-Watch-App-Info.plist"; | ||||
| 				INFOPLIST_KEY_CFBundleDisplayName = Solian; | ||||
| 				INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; | ||||
| 				INFOPLIST_KEY_WKCompanionAppBundleIdentifier = dev.solsynth.solian; | ||||
| 				INFOPLIST_KEY_WKRunsIndependentlyOfCompanionApp = NO; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 18.6; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = ( | ||||
| 					"$(inherited)", | ||||
| 					"@executable_path/Frameworks", | ||||
| 				); | ||||
| 				LOCALIZATION_PREFERS_STRING_CATALOGS = YES; | ||||
| 				MARKETING_VERSION = 1.0; | ||||
| 				MTL_FAST_MATH = YES; | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = dev.solsynth.solian.watchkitapp; | ||||
| 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| 				SDKROOT = watchos; | ||||
| 				SKIP_INSTALL = YES; | ||||
| 				STRING_CATALOG_GENERATE_SYMBOLS = YES; | ||||
| 				SUPPORTED_PLATFORMS = "watchsimulator watchos"; | ||||
| 				SWIFT_APPROACHABLE_CONCURRENCY = YES; | ||||
| 				SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor; | ||||
| 				SWIFT_EMIT_LOC_STRINGS = YES; | ||||
| 				SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; | ||||
| 				SWIFT_VERSION = 5.0; | ||||
| 				TARGETED_DEVICE_FAMILY = 4; | ||||
| 				WATCHOS_DEPLOYMENT_TARGET = 11.6; | ||||
| 			}; | ||||
| 			name = Release; | ||||
| 		}; | ||||
| 		7310A7E22EB10963002C0FD3 /* Profile */ = { | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			baseConfigurationReference = 103EA2362B9E9F127016A1F1 /* Pods-WatchRunner Watch App.profile.xcconfig */; | ||||
| 			buildSettings = { | ||||
| 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; | ||||
| 				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; | ||||
| 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; | ||||
| 				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_STYLE = Automatic; | ||||
| 				CURRENT_PROJECT_VERSION = 1; | ||||
| 				DEVELOPMENT_TEAM = W7HPZ53V6B; | ||||
| 				ENABLE_PREVIEWS = YES; | ||||
| 				ENABLE_USER_SCRIPT_SANDBOXING = NO; | ||||
| 				GCC_C_LANGUAGE_STANDARD = gnu17; | ||||
| 				GENERATE_INFOPLIST_FILE = YES; | ||||
| 				INFOPLIST_FILE = "WatchRunner-Watch-App-Info.plist"; | ||||
| 				INFOPLIST_KEY_CFBundleDisplayName = Solian; | ||||
| 				INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; | ||||
| 				INFOPLIST_KEY_WKCompanionAppBundleIdentifier = dev.solsynth.solian; | ||||
| 				INFOPLIST_KEY_WKRunsIndependentlyOfCompanionApp = NO; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 18.6; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = ( | ||||
| 					"$(inherited)", | ||||
| 					"@executable_path/Frameworks", | ||||
| 				); | ||||
| 				LOCALIZATION_PREFERS_STRING_CATALOGS = YES; | ||||
| 				MARKETING_VERSION = 1.0; | ||||
| 				MTL_FAST_MATH = YES; | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = dev.solsynth.solian.watchkitapp; | ||||
| 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| 				SDKROOT = watchos; | ||||
| 				SKIP_INSTALL = YES; | ||||
| 				STRING_CATALOG_GENERATE_SYMBOLS = YES; | ||||
| 				SUPPORTED_PLATFORMS = "watchsimulator watchos"; | ||||
| 				SWIFT_APPROACHABLE_CONCURRENCY = YES; | ||||
| 				SWIFT_DEFAULT_ACTOR_ISOLATION = MainActor; | ||||
| 				SWIFT_EMIT_LOC_STRINGS = YES; | ||||
| 				SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; | ||||
| 				SWIFT_VERSION = 5.0; | ||||
| 				TARGETED_DEVICE_FAMILY = 4; | ||||
| 				WATCHOS_DEPLOYMENT_TARGET = 11.6; | ||||
| 			}; | ||||
| 			name = Profile; | ||||
| 		}; | ||||
| 		73ACDFC42E3D0E6100B63535 /* Debug */ = { | ||||
| 			isa = XCBuildConfiguration; | ||||
| 			buildSettings = { | ||||
| @@ -953,6 +1256,7 @@ | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = dev.solsynth.solian.SolianBroadcastExtension; | ||||
| 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| 				SKIP_INSTALL = YES; | ||||
| 				SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; | ||||
| 				SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; | ||||
| 				SWIFT_EMIT_LOC_STRINGS = YES; | ||||
| 				SWIFT_OPTIMIZATION_LEVEL = "-Onone"; | ||||
| @@ -993,6 +1297,7 @@ | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = dev.solsynth.solian.SolianBroadcastExtension; | ||||
| 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| 				SKIP_INSTALL = YES; | ||||
| 				SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; | ||||
| 				SWIFT_EMIT_LOC_STRINGS = YES; | ||||
| 				SWIFT_VERSION = 5.0; | ||||
| 				TARGETED_DEVICE_FAMILY = "1,2"; | ||||
| @@ -1031,6 +1336,7 @@ | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = dev.solsynth.solian.SolianBroadcastExtension; | ||||
| 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| 				SKIP_INSTALL = YES; | ||||
| 				SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; | ||||
| 				SWIFT_EMIT_LOC_STRINGS = YES; | ||||
| 				SWIFT_VERSION = 5.0; | ||||
| 				TARGETED_DEVICE_FAMILY = "1,2"; | ||||
| @@ -1059,7 +1365,7 @@ | ||||
| 				INFOPLIST_FILE = SolianShareExtension/Info.plist; | ||||
| 				INFOPLIST_KEY_CFBundleDisplayName = SolianShareExtension; | ||||
| 				INFOPLIST_KEY_NSHumanReadableCopyright = ""; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 13.0; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 15.0; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = ( | ||||
| 					"$(inherited)", | ||||
| 					"@executable_path/Frameworks", | ||||
| @@ -1072,8 +1378,10 @@ | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = dev.solsynth.solian.SolianShareExtension; | ||||
| 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| 				SKIP_INSTALL = YES; | ||||
| 				SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; | ||||
| 				SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; | ||||
| 				SWIFT_EMIT_LOC_STRINGS = YES; | ||||
| 				SWIFT_ENABLE_EXPLICIT_MODULES = NO; | ||||
| 				SWIFT_OPTIMIZATION_LEVEL = "-Onone"; | ||||
| 				SWIFT_VERSION = 5.0; | ||||
| 				TARGETED_DEVICE_FAMILY = "1,2"; | ||||
| @@ -1102,7 +1410,7 @@ | ||||
| 				INFOPLIST_FILE = SolianShareExtension/Info.plist; | ||||
| 				INFOPLIST_KEY_CFBundleDisplayName = SolianShareExtension; | ||||
| 				INFOPLIST_KEY_NSHumanReadableCopyright = ""; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 13.0; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 15.0; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = ( | ||||
| 					"$(inherited)", | ||||
| 					"@executable_path/Frameworks", | ||||
| @@ -1114,7 +1422,9 @@ | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = dev.solsynth.solian.SolianShareExtension; | ||||
| 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| 				SKIP_INSTALL = YES; | ||||
| 				SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; | ||||
| 				SWIFT_EMIT_LOC_STRINGS = YES; | ||||
| 				SWIFT_ENABLE_EXPLICIT_MODULES = NO; | ||||
| 				SWIFT_VERSION = 5.0; | ||||
| 				TARGETED_DEVICE_FAMILY = "1,2"; | ||||
| 			}; | ||||
| @@ -1142,7 +1452,7 @@ | ||||
| 				INFOPLIST_FILE = SolianShareExtension/Info.plist; | ||||
| 				INFOPLIST_KEY_CFBundleDisplayName = SolianShareExtension; | ||||
| 				INFOPLIST_KEY_NSHumanReadableCopyright = ""; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 13.0; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 15.0; | ||||
| 				LD_RUNPATH_SEARCH_PATHS = ( | ||||
| 					"$(inherited)", | ||||
| 					"@executable_path/Frameworks", | ||||
| @@ -1154,7 +1464,9 @@ | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = dev.solsynth.solian.SolianShareExtension; | ||||
| 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| 				SKIP_INSTALL = YES; | ||||
| 				SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; | ||||
| 				SWIFT_EMIT_LOC_STRINGS = YES; | ||||
| 				SWIFT_ENABLE_EXPLICIT_MODULES = NO; | ||||
| 				SWIFT_VERSION = 5.0; | ||||
| 				TARGETED_DEVICE_FAMILY = "1,2"; | ||||
| 			}; | ||||
| @@ -1329,7 +1641,7 @@ | ||||
| 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||||
| 				GCC_WARN_UNUSED_FUNCTION = YES; | ||||
| 				GCC_WARN_UNUSED_VARIABLE = YES; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 12.0; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 13.0; | ||||
| 				MTL_ENABLE_DEBUG_INFO = YES; | ||||
| 				ONLY_ACTIVE_ARCH = YES; | ||||
| 				SDKROOT = iphoneos; | ||||
| @@ -1380,7 +1692,7 @@ | ||||
| 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; | ||||
| 				GCC_WARN_UNUSED_FUNCTION = YES; | ||||
| 				GCC_WARN_UNUSED_VARIABLE = YES; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 12.0; | ||||
| 				IPHONEOS_DEPLOYMENT_TARGET = 13.0; | ||||
| 				MTL_ENABLE_DEBUG_INFO = NO; | ||||
| 				SDKROOT = iphoneos; | ||||
| 				SUPPORTED_PLATFORMS = iphoneos; | ||||
| @@ -1402,6 +1714,7 @@ | ||||
| 				CUSTOM_GROUP_ID = group.solsynth.solian; | ||||
| 				DEVELOPMENT_TEAM = W7HPZ53V6B; | ||||
| 				ENABLE_BITCODE = NO; | ||||
| 				EXCLUDED_SOURCE_FILE_NAMES = ""; | ||||
| 				INFOPLIST_FILE = Runner/Info.plist; | ||||
| 				INFOPLIST_KEY_CFBundleDisplayName = Solian; | ||||
| 				INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking"; | ||||
| @@ -1412,10 +1725,12 @@ | ||||
| 				); | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = dev.solsynth.solian; | ||||
| 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| 				SWIFT_ENABLE_EXPLICIT_MODULES = "$(SWIFT_USE_INTEGRATED_DRIVER)"; | ||||
| 				SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; | ||||
| 				SWIFT_OPTIMIZATION_LEVEL = "-Onone"; | ||||
| 				SWIFT_VERSION = 5.0; | ||||
| 				VERSIONING_SYSTEM = "apple-generic"; | ||||
| 				WATCHOS_DEPLOYMENT_TARGET = 11.6; | ||||
| 			}; | ||||
| 			name = Debug; | ||||
| 		}; | ||||
| @@ -1430,6 +1745,7 @@ | ||||
| 				CUSTOM_GROUP_ID = group.solsynth.solian; | ||||
| 				DEVELOPMENT_TEAM = W7HPZ53V6B; | ||||
| 				ENABLE_BITCODE = NO; | ||||
| 				EXCLUDED_SOURCE_FILE_NAMES = ""; | ||||
| 				INFOPLIST_FILE = Runner/Info.plist; | ||||
| 				INFOPLIST_KEY_CFBundleDisplayName = Solian; | ||||
| 				INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.social-networking"; | ||||
| @@ -1438,11 +1754,15 @@ | ||||
| 					"$(inherited)", | ||||
| 					"@executable_path/Frameworks", | ||||
| 				); | ||||
| 				ONLY_ACTIVE_ARCH = NO; | ||||
| 				PRODUCT_BUNDLE_IDENTIFIER = dev.solsynth.solian; | ||||
| 				PRODUCT_NAME = "$(TARGET_NAME)"; | ||||
| 				SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; | ||||
| 				SWIFT_ENABLE_EXPLICIT_MODULES = "$(SWIFT_USE_INTEGRATED_DRIVER)"; | ||||
| 				SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; | ||||
| 				SWIFT_VERSION = 5.0; | ||||
| 				VERSIONING_SYSTEM = "apple-generic"; | ||||
| 				WATCHOS_DEPLOYMENT_TARGET = 11.6; | ||||
| 			}; | ||||
| 			name = Release; | ||||
| 		}; | ||||
| @@ -1459,6 +1779,16 @@ | ||||
| 			defaultConfigurationIsVisible = 0; | ||||
| 			defaultConfigurationName = Release; | ||||
| 		}; | ||||
| 		7310A7E32EB10963002C0FD3 /* Build configuration list for PBXNativeTarget "WatchRunner Watch App" */ = { | ||||
| 			isa = XCConfigurationList; | ||||
| 			buildConfigurations = ( | ||||
| 				7310A7E02EB10963002C0FD3 /* Debug */, | ||||
| 				7310A7E12EB10963002C0FD3 /* Release */, | ||||
| 				7310A7E22EB10963002C0FD3 /* Profile */, | ||||
| 			); | ||||
| 			defaultConfigurationIsVisible = 0; | ||||
| 			defaultConfigurationName = Release; | ||||
| 		}; | ||||
| 		73ACDFCB2E3D0E6100B63535 /* Build configuration list for PBXNativeTarget "SolianBroadcastExtension" */ = { | ||||
| 			isa = XCConfigurationList; | ||||
| 			buildConfigurations = ( | ||||
|   | ||||
| @@ -20,6 +20,20 @@ | ||||
|                ReferencedContainer = "container:Runner.xcodeproj"> | ||||
|             </BuildableReference> | ||||
|          </BuildActionEntry> | ||||
|          <BuildActionEntry | ||||
|             buildForTesting = "YES" | ||||
|             buildForRunning = "YES" | ||||
|             buildForProfiling = "YES" | ||||
|             buildForArchiving = "YES" | ||||
|             buildForAnalyzing = "YES"> | ||||
|             <BuildableReference | ||||
|                BuildableIdentifier = "primary" | ||||
|                BlueprintIdentifier = "7310A7D32EB10962002C0FD3" | ||||
|                BuildableName = "WatchRunner Watch App.app" | ||||
|                BlueprintName = "WatchRunner Watch App" | ||||
|                ReferencedContainer = "container:Runner.xcodeproj"> | ||||
|             </BuildableReference> | ||||
|          </BuildActionEntry> | ||||
|       </BuildActionEntries> | ||||
|    </BuildAction> | ||||
|    <TestAction | ||||
|   | ||||
| @@ -1,18 +1,20 @@ | ||||
| import Flutter | ||||
| import UIKit | ||||
| import WatchConnectivity | ||||
|  | ||||
| @main | ||||
| @objc class AppDelegate: FlutterAppDelegate { | ||||
|     let notifyDelegate = NotifyDelegate() | ||||
|      | ||||
|     private static var sharedWatchConnectivityService: WatchConnectivityService? | ||||
|  | ||||
|     override func application( | ||||
|         _ application: UIApplication, | ||||
|         didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? | ||||
|     ) -> Bool { | ||||
|         UNUserNotificationCenter.current().delegate = notifyDelegate | ||||
|          | ||||
|  | ||||
|         let replyableMessageCategory = UNNotificationCategory( | ||||
|             identifier: "REPLYABLE_MESSAGE", | ||||
|             identifier: "CHAT_MESSAGE", | ||||
|             actions: [ | ||||
|                 UNTextInputNotificationAction( | ||||
|                     identifier: "reply_action", | ||||
| @@ -23,11 +25,85 @@ import UIKit | ||||
|             intentIdentifiers: [], | ||||
|             options: [] | ||||
|         ) | ||||
|          | ||||
|         UNUserNotificationCenter.current().setNotificationCategories([replyableMessageCategory]) | ||||
|          | ||||
|         GeneratedPluginRegistrant.register(with: self) | ||||
|          | ||||
|         // Always initialize and retain a strong reference | ||||
|         if WCSession.isSupported() { | ||||
|             AppDelegate.sharedWatchConnectivityService = WatchConnectivityService.shared | ||||
|         } else { | ||||
|             print("[iOS] WCSession not supported on this device.") | ||||
|         } | ||||
|          | ||||
|         return super.application(application, didFinishLaunchingWithOptions: launchOptions) | ||||
|     } | ||||
| } | ||||
|  | ||||
| final class WatchConnectivityService: NSObject, WCSessionDelegate { | ||||
|     static let shared = WatchConnectivityService() | ||||
|     private let session: WCSession = .default | ||||
|      | ||||
|     private override init() { | ||||
|         super.init() | ||||
|         print("[iOS] Activating WCSession...") | ||||
|         session.delegate = self | ||||
|         session.activate() | ||||
|     } | ||||
|  | ||||
|     // MARK: - WCSessionDelegate | ||||
|  | ||||
|     func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) { | ||||
|         if let error = error { | ||||
|             print("[iOS] WCSession activation failed: \(error.localizedDescription)") | ||||
|         } else { | ||||
|             print("[iOS] WCSession activated with state: \(activationState.rawValue)") | ||||
|             if activationState == .activated { | ||||
|                 sendDataToWatch() | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     func sessionDidBecomeInactive(_ session: WCSession) {} | ||||
|      | ||||
|     func sessionDidDeactivate(_ session: WCSession) { | ||||
|         session.activate() | ||||
|     } | ||||
|  | ||||
|     func session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void) { | ||||
|         print("[iOS] Received message: \(message)") | ||||
|         if let request = message["request"] as? String, request == "data" { | ||||
|             let token = UserDefaults.standard.getFlutterToken() | ||||
|             let serverUrl = UserDefaults.standard.getServerUrl() | ||||
|              | ||||
|             var data: [String: Any] = ["serverUrl": serverUrl ?? ""] | ||||
|             if let token = token { | ||||
|                 data["token"] = token | ||||
|             } | ||||
|              | ||||
|             print("[iOS] Replying with data: \(data)") | ||||
|             replyHandler(data) | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     func sendDataToWatch() { | ||||
|         guard session.activationState == .activated else { | ||||
|             return | ||||
|         } | ||||
|          | ||||
|         let token = UserDefaults.standard.getFlutterToken() | ||||
|         let serverUrl = UserDefaults.standard.getServerUrl() | ||||
|          | ||||
|         var data: [String: Any] = ["serverUrl": serverUrl ?? ""] | ||||
|         if let token = token { | ||||
|             data["token"] = token | ||||
|         } | ||||
|          | ||||
|         do { | ||||
|             try session.updateApplicationContext(data) | ||||
|             print("[iOS] Sent application context: \(data)") | ||||
|         } catch { | ||||
|             print("[iOS] Failed to send application context: \(error.localizedDescription)") | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -1 +1,334 @@ | ||||
| {"images":[{"size":"20x20","idiom":"universal","filename":"Icon-App-20x20@2x.png","scale":"2x","platform":"ios"},{"size":"20x20","idiom":"universal","filename":"Icon-App-20x20@3x.png","scale":"3x","platform":"ios"},{"size":"29x29","idiom":"universal","filename":"Icon-App-29x29@2x.png","scale":"2x","platform":"ios"},{"size":"29x29","idiom":"universal","filename":"Icon-App-29x29@3x.png","scale":"3x","platform":"ios"},{"size":"38x38","idiom":"universal","filename":"Icon-App-38x38@2x.png","scale":"2x","platform":"ios"},{"size":"38x38","idiom":"universal","filename":"Icon-App-38x38@3x.png","scale":"3x","platform":"ios"},{"size":"40x40","idiom":"universal","filename":"Icon-App-40x40@2x.png","scale":"2x","platform":"ios"},{"size":"40x40","idiom":"universal","filename":"Icon-App-40x40@3x.png","scale":"3x","platform":"ios"},{"size":"60x60","idiom":"universal","filename":"Icon-App-60x60@2x.png","scale":"2x","platform":"ios"},{"size":"60x60","idiom":"universal","filename":"Icon-App-60x60@3x.png","scale":"3x","platform":"ios"},{"size":"64x64","idiom":"universal","filename":"Icon-App-64x64@2x.png","scale":"2x","platform":"ios"},{"size":"64x64","idiom":"universal","filename":"Icon-App-64x64@3x.png","scale":"3x","platform":"ios"},{"size":"68x68","idiom":"universal","filename":"Icon-App-68x68@2x.png","scale":"2x","platform":"ios"},{"size":"76x76","idiom":"universal","filename":"Icon-App-76x76@2x.png","scale":"2x","platform":"ios"},{"size":"83.5x83.5","idiom":"universal","filename":"Icon-App-83.5x83.5@2x.png","scale":"2x","platform":"ios"},{"size":"1024x1024","idiom":"universal","filename":"Icon-App-1024x1024@1x.png","scale":"1x","platform":"ios"},{"size":"1024x1024","idiom":"ios-marketing","filename":"Icon-App-1024x1024@1x.png","scale":"1x"},{"size":"20x20","idiom":"universal","filename":"Icon-App-Dark-20x20@2x.png","scale":"2x","platform":"ios","appearances":[{"appearance":"luminosity","value":"dark"}]},{"size":"20x20","idiom":"universal","filename":"Icon-App-Dark-20x20@3x.png","scale":"3x","platform":"ios","appearances":[{"appearance":"luminosity","value":"dark"}]},{"size":"29x29","idiom":"universal","filename":"Icon-App-Dark-29x29@2x.png","scale":"2x","platform":"ios","appearances":[{"appearance":"luminosity","value":"dark"}]},{"size":"29x29","idiom":"universal","filename":"Icon-App-Dark-29x29@3x.png","scale":"3x","platform":"ios","appearances":[{"appearance":"luminosity","value":"dark"}]},{"size":"38x38","idiom":"universal","filename":"Icon-App-Dark-38x38@2x.png","scale":"2x","platform":"ios","appearances":[{"appearance":"luminosity","value":"dark"}]},{"size":"38x38","idiom":"universal","filename":"Icon-App-Dark-38x38@3x.png","scale":"3x","platform":"ios","appearances":[{"appearance":"luminosity","value":"dark"}]},{"size":"40x40","idiom":"universal","filename":"Icon-App-Dark-40x40@2x.png","scale":"2x","platform":"ios","appearances":[{"appearance":"luminosity","value":"dark"}]},{"size":"40x40","idiom":"universal","filename":"Icon-App-Dark-40x40@3x.png","scale":"3x","platform":"ios","appearances":[{"appearance":"luminosity","value":"dark"}]},{"size":"60x60","idiom":"universal","filename":"Icon-App-Dark-60x60@2x.png","scale":"2x","platform":"ios","appearances":[{"appearance":"luminosity","value":"dark"}]},{"size":"60x60","idiom":"universal","filename":"Icon-App-Dark-60x60@3x.png","scale":"3x","platform":"ios","appearances":[{"appearance":"luminosity","value":"dark"}]},{"size":"64x64","idiom":"universal","filename":"Icon-App-Dark-64x64@2x.png","scale":"2x","platform":"ios","appearances":[{"appearance":"luminosity","value":"dark"}]},{"size":"64x64","idiom":"universal","filename":"Icon-App-Dark-64x64@3x.png","scale":"3x","platform":"ios","appearances":[{"appearance":"luminosity","value":"dark"}]},{"size":"68x68","idiom":"universal","filename":"Icon-App-Dark-68x68@2x.png","scale":"2x","platform":"ios","appearances":[{"appearance":"luminosity","value":"dark"}]},{"size":"76x76","idiom":"universal","filename":"Icon-App-Dark-76x76@2x.png","scale":"2x","platform":"ios","appearances":[{"appearance":"luminosity","value":"dark"}]},{"size":"83.5x83.5","idiom":"universal","filename":"Icon-App-Dark-83.5x83.5@2x.png","scale":"2x","platform":"ios","appearances":[{"appearance":"luminosity","value":"dark"}]},{"size":"1024x1024","idiom":"universal","filename":"Icon-App-Dark-1024x1024@1x.png","scale":"1x","platform":"ios","appearances":[{"appearance":"luminosity","value":"dark"}]}],"info":{"version":1,"author":"xcode"}} | ||||
| { | ||||
|   "images" : [ | ||||
|     { | ||||
|       "filename" : "Icon-App-20x20@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "2x", | ||||
|       "size" : "20x20" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "Icon-App-20x20@3x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "3x", | ||||
|       "size" : "20x20" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "Icon-App-29x29@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "2x", | ||||
|       "size" : "29x29" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "Icon-App-29x29@3x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "3x", | ||||
|       "size" : "29x29" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "Icon-App-38x38@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "2x", | ||||
|       "size" : "38x38" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "Icon-App-38x38@3x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "3x", | ||||
|       "size" : "38x38" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "Icon-App-40x40@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "2x", | ||||
|       "size" : "40x40" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "Icon-App-40x40@3x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "3x", | ||||
|       "size" : "40x40" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "Icon-App-60x60@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "2x", | ||||
|       "size" : "60x60" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "Icon-App-60x60@3x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "3x", | ||||
|       "size" : "60x60" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "Icon-App-64x64@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "2x", | ||||
|       "size" : "64x64" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "Icon-App-64x64@3x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "3x", | ||||
|       "size" : "64x64" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "Icon-App-68x68@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "2x", | ||||
|       "size" : "68x68" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "Icon-App-76x76@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "2x", | ||||
|       "size" : "76x76" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "Icon-App-83.5x83.5@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "2x", | ||||
|       "size" : "83.5x83.5" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "Icon-App-1024x1024@1x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "1x", | ||||
|       "size" : "1024x1024" | ||||
|     }, | ||||
|     { | ||||
|       "appearances" : [ | ||||
|         { | ||||
|           "appearance" : "luminosity", | ||||
|           "value" : "dark" | ||||
|         } | ||||
|       ], | ||||
|       "filename" : "Icon-App-Dark-20x20@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "2x", | ||||
|       "size" : "20x20" | ||||
|     }, | ||||
|     { | ||||
|       "appearances" : [ | ||||
|         { | ||||
|           "appearance" : "luminosity", | ||||
|           "value" : "dark" | ||||
|         } | ||||
|       ], | ||||
|       "filename" : "Icon-App-Dark-20x20@3x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "3x", | ||||
|       "size" : "20x20" | ||||
|     }, | ||||
|     { | ||||
|       "appearances" : [ | ||||
|         { | ||||
|           "appearance" : "luminosity", | ||||
|           "value" : "dark" | ||||
|         } | ||||
|       ], | ||||
|       "filename" : "Icon-App-Dark-29x29@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "2x", | ||||
|       "size" : "29x29" | ||||
|     }, | ||||
|     { | ||||
|       "appearances" : [ | ||||
|         { | ||||
|           "appearance" : "luminosity", | ||||
|           "value" : "dark" | ||||
|         } | ||||
|       ], | ||||
|       "filename" : "Icon-App-Dark-29x29@3x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "3x", | ||||
|       "size" : "29x29" | ||||
|     }, | ||||
|     { | ||||
|       "appearances" : [ | ||||
|         { | ||||
|           "appearance" : "luminosity", | ||||
|           "value" : "dark" | ||||
|         } | ||||
|       ], | ||||
|       "filename" : "Icon-App-Dark-38x38@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "2x", | ||||
|       "size" : "38x38" | ||||
|     }, | ||||
|     { | ||||
|       "appearances" : [ | ||||
|         { | ||||
|           "appearance" : "luminosity", | ||||
|           "value" : "dark" | ||||
|         } | ||||
|       ], | ||||
|       "filename" : "Icon-App-Dark-38x38@3x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "3x", | ||||
|       "size" : "38x38" | ||||
|     }, | ||||
|     { | ||||
|       "appearances" : [ | ||||
|         { | ||||
|           "appearance" : "luminosity", | ||||
|           "value" : "dark" | ||||
|         } | ||||
|       ], | ||||
|       "filename" : "Icon-App-Dark-40x40@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "2x", | ||||
|       "size" : "40x40" | ||||
|     }, | ||||
|     { | ||||
|       "appearances" : [ | ||||
|         { | ||||
|           "appearance" : "luminosity", | ||||
|           "value" : "dark" | ||||
|         } | ||||
|       ], | ||||
|       "filename" : "Icon-App-Dark-40x40@3x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "3x", | ||||
|       "size" : "40x40" | ||||
|     }, | ||||
|     { | ||||
|       "appearances" : [ | ||||
|         { | ||||
|           "appearance" : "luminosity", | ||||
|           "value" : "dark" | ||||
|         } | ||||
|       ], | ||||
|       "filename" : "Icon-App-Dark-60x60@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "2x", | ||||
|       "size" : "60x60" | ||||
|     }, | ||||
|     { | ||||
|       "appearances" : [ | ||||
|         { | ||||
|           "appearance" : "luminosity", | ||||
|           "value" : "dark" | ||||
|         } | ||||
|       ], | ||||
|       "filename" : "Icon-App-Dark-60x60@3x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "3x", | ||||
|       "size" : "60x60" | ||||
|     }, | ||||
|     { | ||||
|       "appearances" : [ | ||||
|         { | ||||
|           "appearance" : "luminosity", | ||||
|           "value" : "dark" | ||||
|         } | ||||
|       ], | ||||
|       "filename" : "Icon-App-Dark-64x64@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "2x", | ||||
|       "size" : "64x64" | ||||
|     }, | ||||
|     { | ||||
|       "appearances" : [ | ||||
|         { | ||||
|           "appearance" : "luminosity", | ||||
|           "value" : "dark" | ||||
|         } | ||||
|       ], | ||||
|       "filename" : "Icon-App-Dark-64x64@3x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "3x", | ||||
|       "size" : "64x64" | ||||
|     }, | ||||
|     { | ||||
|       "appearances" : [ | ||||
|         { | ||||
|           "appearance" : "luminosity", | ||||
|           "value" : "dark" | ||||
|         } | ||||
|       ], | ||||
|       "filename" : "Icon-App-Dark-68x68@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "2x", | ||||
|       "size" : "68x68" | ||||
|     }, | ||||
|     { | ||||
|       "appearances" : [ | ||||
|         { | ||||
|           "appearance" : "luminosity", | ||||
|           "value" : "dark" | ||||
|         } | ||||
|       ], | ||||
|       "filename" : "Icon-App-Dark-76x76@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "2x", | ||||
|       "size" : "76x76" | ||||
|     }, | ||||
|     { | ||||
|       "appearances" : [ | ||||
|         { | ||||
|           "appearance" : "luminosity", | ||||
|           "value" : "dark" | ||||
|         } | ||||
|       ], | ||||
|       "filename" : "Icon-App-Dark-83.5x83.5@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "2x", | ||||
|       "size" : "83.5x83.5" | ||||
|     }, | ||||
|     { | ||||
|       "appearances" : [ | ||||
|         { | ||||
|           "appearance" : "luminosity", | ||||
|           "value" : "dark" | ||||
|         } | ||||
|       ], | ||||
|       "filename" : "Icon-App-Dark-1024x1024@1x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "1x", | ||||
|       "size" : "1024x1024" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "Icon-App-1024x1024@1x.png", | ||||
|       "idiom" : "ios-marketing", | ||||
|       "scale" : "1x", | ||||
|       "size" : "1024x1024" | ||||
|     } | ||||
|   ], | ||||
|   "info" : { | ||||
|     "author" : "xcode", | ||||
|     "version" : 1 | ||||
|   } | ||||
| } | ||||
|   | ||||
| Before Width: | Height: | Size: 295 B | 
| Before Width: | Height: | Size: 282 B | 
| Before Width: | Height: | Size: 406 B | 
| Before Width: | Height: | Size: 762 B | 
| @@ -2,6 +2,12 @@ | ||||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||||
| <plist version="1.0"> | ||||
| <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> | ||||
| 	<string>AIzaSyCzQIyiYKoYHTpGXhN-IjgMML8z797WVD8</string> | ||||
| 	<key>GCM_SENDER_ID</key> | ||||
|   | ||||
| @@ -36,6 +36,14 @@ | ||||
| 				<string>ShareMedia-$(PRODUCT_BUNDLE_IDENTIFIER)</string> | ||||
| 			</array> | ||||
| 		</dict> | ||||
| 		<dict> | ||||
| 			<key>CFBundleTypeRole</key> | ||||
| 			<string>Viewer</string> | ||||
| 			<key>CFBundleURLSchemes</key> | ||||
| 			<array> | ||||
| 				<string>solian</string> | ||||
| 			</array> | ||||
| 		</dict> | ||||
| 	</array> | ||||
| 	<key>CFBundleVersion</key> | ||||
| 	<string>$(FLUTTER_BUILD_NUMBER)</string> | ||||
| @@ -87,6 +95,8 @@ | ||||
| 		<string>UIInterfaceOrientationLandscapeRight</string> | ||||
| 		<string>UIInterfaceOrientationPortrait</string> | ||||
| 	</array> | ||||
| 	<key>WKCompanionAppBundleIdentifier</key> | ||||
| 	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> | ||||
| 	<key>UISupportedInterfaceOrientations~ipad</key> | ||||
| 	<array> | ||||
| 		<string>UIInterfaceOrientationLandscapeLeft</string> | ||||
|   | ||||
| @@ -34,7 +34,7 @@ class NotifyDelegate: UIResponder, UNUserNotificationCenterDelegate { | ||||
|         } | ||||
|          | ||||
|         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?] = [ | ||||
|             "content": textResponse.userText, | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
| import Foundation | ||||
|  | ||||
| func getAttachmentUrl(for identifier: String) -> String { | ||||
|     let serverBaseUrl = "https://nt.solian.app" | ||||
|     let serverBaseUrl = UserDefaults.standard.getServerUrl() | ||||
|      | ||||
|     return identifier.starts(with: "http") ? identifier : "\(serverBaseUrl)/files/\(identifier)" | ||||
|     return identifier.starts(with: "http") ? identifier : "\(serverBaseUrl)/drive/files/\(identifier)" | ||||
| } | ||||
|   | ||||
| @@ -26,6 +26,6 @@ extension UserDefaults { | ||||
|     } | ||||
|      | ||||
|     func getServerUrl(forKey key: String = "app_server_url") -> String { | ||||
|         return self.getFlutterValue(forKey: key) ?? "https://nt.solian.app" | ||||
|         return self.getFlutterValue(forKey: key) ?? "https://api.solian.app" | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -57,41 +57,57 @@ class NotificationService: UNNotificationServiceExtension { | ||||
|         guard let meta = content.userInfo["meta"] as? [AnyHashable: Any] else { | ||||
|             throw ParseNotificationPayloadError.missingMetadata("The notification has no meta.") | ||||
|         } | ||||
|          | ||||
|  | ||||
|         let pfpIdentifier = meta["pfp"] as? String | ||||
|          | ||||
|         content.categoryIdentifier = "REPLYABLE_MESSAGE" | ||||
|          | ||||
|         let metaCopy = meta as? [String: Any] ?? [:] | ||||
|         let pfpUrl = pfpIdentifier != nil ? getAttachmentUrl(for: pfpIdentifier!) : nil | ||||
|          | ||||
|         let targetSize = 512 | ||||
|         let scaleProcessor = ResizingImageProcessor(referenceSize: CGSize(width: targetSize, height: targetSize), mode: .aspectFit) | ||||
|          | ||||
|         KingfisherManager.shared.retrieveImage(with: URL(string: pfpUrl!)!, options: [.processor(scaleProcessor)], completionHandler: { result in | ||||
|             var image: Data? | ||||
|             switch result { | ||||
|             case .success(let value): | ||||
|                 image = value.image.pngData() | ||||
|             case .failure(let error): | ||||
|                 print("Unable to get pfp url: \(error)") | ||||
|             } | ||||
|              | ||||
|             let handle = INPersonHandle(value: "\(metaCopy["user_id"] ?? "")", type: .unknown) | ||||
|  | ||||
|         let handle = INPersonHandle(value: "\(metaCopy["user_id"] ?? "")", type: .unknown) | ||||
|  | ||||
|         if let pfpUrl = pfpUrl, let url = URL(string: pfpUrl) { | ||||
|             let targetSize = 512 | ||||
|             let scaleProcessor = ResizingImageProcessor(referenceSize: CGSize(width: targetSize, height: targetSize), mode: .aspectFit) | ||||
|  | ||||
|             KingfisherManager.shared.retrieveImage(with: url, options: [.processor(scaleProcessor)], completionHandler: { result in | ||||
|                 var image: Data? | ||||
|                 switch result { | ||||
|                 case .success(let value): | ||||
|                     image = value.image.pngData() | ||||
|                 case .failure(let error): | ||||
|                     print("Unable to get pfp url: \(error)") | ||||
|                 } | ||||
|  | ||||
|                 let sender = INPerson( | ||||
|                     personHandle: handle, | ||||
|                     nameComponents: PersonNameComponents(nickname: "\(metaCopy["sender_name"] ?? "")"), | ||||
|                     displayName: content.title, | ||||
|                     image: image == nil ? nil : INImage(imageData: image!), | ||||
|                     contactIdentifier: nil, | ||||
|                     customIdentifier: nil | ||||
|                 ) | ||||
|  | ||||
|                 let intent = self.createMessageIntent(with: sender, meta: metaCopy, body: content.body) | ||||
|                 self.donateInteraction(for: intent) | ||||
|  | ||||
|                 content.categoryIdentifier = "CHAT_MESSAGE" | ||||
|                 self.contentHandler?(content) | ||||
|             }) | ||||
|         } else { | ||||
|             let sender = INPerson( | ||||
|                 personHandle: handle, | ||||
|                 nameComponents: PersonNameComponents(nickname: "\(metaCopy["sender_name"] ?? "")"), | ||||
|                 displayName: content.title, | ||||
|                 image: image == nil ? nil : INImage(imageData: image!), | ||||
|                 image: nil, | ||||
|                 contactIdentifier: nil, | ||||
|                 customIdentifier: nil | ||||
|             ) | ||||
|              | ||||
|  | ||||
|             let intent = self.createMessageIntent(with: sender, meta: metaCopy, body: content.body) | ||||
|             self.donateInteraction(for: intent) | ||||
|             let updatedContent = try? request.content.updating(from: intent) | ||||
|             self.contentHandler?(updatedContent ?? content) | ||||
|         }) | ||||
|  | ||||
|             content.categoryIdentifier = "CHAT_MESSAGE" | ||||
|             self.contentHandler?(content) | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     private func handleDefaultNotification(content: UNMutableNotificationContent) throws { | ||||
|   | ||||
| @@ -0,0 +1,15 @@ | ||||
| { | ||||
|   "colors" : [ | ||||
|     { | ||||
|       "color" : { | ||||
|         "platform" : "universal", | ||||
|         "reference" : "systemIndigoColor" | ||||
|       }, | ||||
|       "idiom" : "universal" | ||||
|     } | ||||
|   ], | ||||
|   "info" : { | ||||
|     "author" : "xcode", | ||||
|     "version" : 1 | ||||
|   } | ||||
| } | ||||
| @@ -0,0 +1,318 @@ | ||||
| { | ||||
|   "images" : [ | ||||
|     { | ||||
|       "filename" : "icon-ios-20x20@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "2x", | ||||
|       "size" : "20x20" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-ios-20x20@3x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "3x", | ||||
|       "size" : "20x20" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-ios-29x29@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "2x", | ||||
|       "size" : "29x29" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-ios-29x29@3x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "3x", | ||||
|       "size" : "29x29" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-ios-38x38@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "2x", | ||||
|       "size" : "38x38" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-ios-38x38@3x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "3x", | ||||
|       "size" : "38x38" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-ios-40x40@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "2x", | ||||
|       "size" : "40x40" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-ios-40x40@3x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "3x", | ||||
|       "size" : "40x40" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-ios-60x60@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "2x", | ||||
|       "size" : "60x60" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-ios-60x60@3x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "3x", | ||||
|       "size" : "60x60" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-ios-64x64@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "2x", | ||||
|       "size" : "64x64" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-ios-64x64@3x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "3x", | ||||
|       "size" : "64x64" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-ios-68x68@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "2x", | ||||
|       "size" : "68x68" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-ios-76x76@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "2x", | ||||
|       "size" : "76x76" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-ios-83.5x83.5@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "scale" : "2x", | ||||
|       "size" : "83.5x83.5" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-ios-1024x1024.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "ios", | ||||
|       "size" : "1024x1024" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-mac-16x16.png", | ||||
|       "idiom" : "mac", | ||||
|       "scale" : "1x", | ||||
|       "size" : "16x16" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-mac-16x16@2x.png", | ||||
|       "idiom" : "mac", | ||||
|       "scale" : "2x", | ||||
|       "size" : "16x16" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-mac-32x32.png", | ||||
|       "idiom" : "mac", | ||||
|       "scale" : "1x", | ||||
|       "size" : "32x32" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-mac-32x32@2x.png", | ||||
|       "idiom" : "mac", | ||||
|       "scale" : "2x", | ||||
|       "size" : "32x32" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-mac-128x128.png", | ||||
|       "idiom" : "mac", | ||||
|       "scale" : "1x", | ||||
|       "size" : "128x128" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-mac-128x128@2x.png", | ||||
|       "idiom" : "mac", | ||||
|       "scale" : "2x", | ||||
|       "size" : "128x128" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-mac-256x256.png", | ||||
|       "idiom" : "mac", | ||||
|       "scale" : "1x", | ||||
|       "size" : "256x256" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-mac-256x256@2x.png", | ||||
|       "idiom" : "mac", | ||||
|       "scale" : "2x", | ||||
|       "size" : "256x256" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-mac-512x512.png", | ||||
|       "idiom" : "mac", | ||||
|       "scale" : "1x", | ||||
|       "size" : "512x512" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-mac-512x512@2x.png", | ||||
|       "idiom" : "mac", | ||||
|       "scale" : "2x", | ||||
|       "size" : "512x512" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-watchos-22x22@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "watchos", | ||||
|       "scale" : "2x", | ||||
|       "size" : "22x22" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-watchos-24x24@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "watchos", | ||||
|       "scale" : "2x", | ||||
|       "size" : "24x24" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-watchos-27.5x27.5@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "watchos", | ||||
|       "scale" : "2x", | ||||
|       "size" : "27.5x27.5" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-watchos-29x29@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "watchos", | ||||
|       "scale" : "2x", | ||||
|       "size" : "29x29" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-watchos-30x30@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "watchos", | ||||
|       "scale" : "2x", | ||||
|       "size" : "30x30" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-watchos-32x32@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "watchos", | ||||
|       "scale" : "2x", | ||||
|       "size" : "32x32" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-watchos-33x33@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "watchos", | ||||
|       "scale" : "2x", | ||||
|       "size" : "33x33" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-watchos-40x40@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "watchos", | ||||
|       "scale" : "2x", | ||||
|       "size" : "40x40" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-watchos-43.5x43.5@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "watchos", | ||||
|       "scale" : "2x", | ||||
|       "size" : "43.5x43.5" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-watchos-44x44@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "watchos", | ||||
|       "scale" : "2x", | ||||
|       "size" : "44x44" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-watchos-46x46@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "watchos", | ||||
|       "scale" : "2x", | ||||
|       "size" : "46x46" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-watchos-50x50@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "watchos", | ||||
|       "scale" : "2x", | ||||
|       "size" : "50x50" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-watchos-51x51@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "watchos", | ||||
|       "scale" : "2x", | ||||
|       "size" : "51x51" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-watchos-54x54@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "watchos", | ||||
|       "scale" : "2x", | ||||
|       "size" : "54x54" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-watchos-86x86@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "watchos", | ||||
|       "scale" : "2x", | ||||
|       "size" : "86x86" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-watchos-98x98@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "watchos", | ||||
|       "scale" : "2x", | ||||
|       "size" : "98x98" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-watchos-108x108@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "watchos", | ||||
|       "scale" : "2x", | ||||
|       "size" : "108x108" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-watchos-117x117@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "watchos", | ||||
|       "scale" : "2x", | ||||
|       "size" : "117x117" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-watchos-129x129@2x.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "watchos", | ||||
|       "scale" : "2x", | ||||
|       "size" : "129x129" | ||||
|     }, | ||||
|     { | ||||
|       "filename" : "icon-watchos-1024x1024.png", | ||||
|       "idiom" : "universal", | ||||
|       "platform" : "watchos", | ||||
|       "size" : "1024x1024" | ||||
|     } | ||||
|   ], | ||||
|   "info" : { | ||||
|     "author" : "xcode", | ||||
|     "version" : 1 | ||||
|   } | ||||
| } | ||||
| After Width: | Height: | Size: 45 KiB | 
| After Width: | Height: | Size: 1.5 KiB | 
| After Width: | Height: | Size: 2.5 KiB | 
| After Width: | Height: | Size: 2.4 KiB | 
| After Width: | Height: | Size: 4.1 KiB | 
| After Width: | Height: | Size: 3.4 KiB | 
| After Width: | Height: | Size: 5.7 KiB | 
| After Width: | Height: | Size: 3.6 KiB | 
| After Width: | Height: | Size: 6.1 KiB | 
| After Width: | Height: | Size: 6.1 KiB | 
| After Width: | Height: | Size: 9.6 KiB | 
| After Width: | Height: | Size: 6.6 KiB | 
| After Width: | Height: | Size: 10 KiB | 
| After Width: | Height: | Size: 7.0 KiB | 
| After Width: | Height: | Size: 7.8 KiB | 
| After Width: | Height: | Size: 8.8 KiB | 
| After Width: | Height: | Size: 6.6 KiB | 
| After Width: | Height: | Size: 14 KiB | 
| After Width: | Height: | Size: 473 B | 
| After Width: | Height: | Size: 1.2 KiB | 
| After Width: | Height: | Size: 14 KiB | 
| After Width: | Height: | Size: 30 KiB | 
| After Width: | Height: | Size: 1.2 KiB | 
| After Width: | Height: | Size: 2.7 KiB | 
| After Width: | Height: | Size: 30 KiB | 
| After Width: | Height: | Size: 45 KiB | 
| After Width: | Height: | Size: 45 KiB | 
| After Width: | Height: | Size: 12 KiB | 
| After Width: | Height: | Size: 13 KiB | 
| After Width: | Height: | Size: 14 KiB | 
| After Width: | Height: | Size: 1.7 KiB | 
| After Width: | Height: | Size: 1.9 KiB | 
| After Width: | Height: | Size: 2.3 KiB | 
| After Width: | Height: | Size: 2.4 KiB | 
| After Width: | Height: | Size: 2.5 KiB | 
| After Width: | Height: | Size: 2.7 KiB | 
| After Width: | Height: | Size: 2.9 KiB | 
| After Width: | Height: | Size: 3.6 KiB | 
| After Width: | Height: | Size: 4.1 KiB | 
| After Width: | Height: | Size: 4.2 KiB | 
| After Width: | Height: | Size: 4.4 KiB | 
| After Width: | Height: | Size: 4.9 KiB | 
| After Width: | Height: | Size: 5.0 KiB | 
| After Width: | Height: | Size: 5.3 KiB | 
| After Width: | Height: | Size: 9.1 KiB | 
| After Width: | Height: | Size: 10 KiB | 
							
								
								
									
										6
									
								
								ios/WatchRunner Watch App/Assets.xcassets/Contents.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,6 @@ | ||||
| { | ||||
|   "info" : { | ||||
|     "author" : "xcode", | ||||
|     "version" : 1 | ||||
|   } | ||||
| } | ||||
							
								
								
									
										21
									
								
								ios/WatchRunner Watch App/Assets.xcassets/Logo.imageset/Contents.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,21 @@ | ||||
| { | ||||
|   "images" : [ | ||||
|     { | ||||
|       "filename" : "icon.png", | ||||
|       "idiom" : "universal", | ||||
|       "scale" : "1x" | ||||
|     }, | ||||
|     { | ||||
|       "idiom" : "universal", | ||||
|       "scale" : "2x" | ||||
|     }, | ||||
|     { | ||||
|       "idiom" : "universal", | ||||
|       "scale" : "3x" | ||||
|     } | ||||
|   ], | ||||
|   "info" : { | ||||
|     "author" : "xcode", | ||||
|     "version" : 1 | ||||
|   } | ||||
| } | ||||
							
								
								
									
										
											BIN
										
									
								
								ios/WatchRunner Watch App/Assets.xcassets/Logo.imageset/icon.png
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 70 KiB | 
							
								
								
									
										50
									
								
								ios/WatchRunner Watch App/ContentView.swift
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,50 @@ | ||||
| // | ||||
| //  ContentView.swift | ||||
| //  WatchRunner Watch App | ||||
| // | ||||
| //  Created by LittleSheep on 2025/10/28. | ||||
| // | ||||
|  | ||||
| import SwiftUI | ||||
|  | ||||
| // The root view of the app. | ||||
| struct ContentView: View { | ||||
|     @StateObject private var appState = AppState() | ||||
|     @State private var selection: Panel? = .explore | ||||
|      | ||||
|     enum Panel: Hashable { | ||||
|         case explore | ||||
|         case chat | ||||
|         case notifications | ||||
|         case account | ||||
|     } | ||||
|      | ||||
|     var body: some View { | ||||
|         NavigationSplitView { | ||||
|             List(selection: $selection) { | ||||
|                 AppInfoHeaderView() | ||||
|                     .listRowBackground(Color.clear) | ||||
|                     .environmentObject(appState) | ||||
|                  | ||||
|                 Label("Explore", systemImage: "globe.fill").tag(Panel.explore) | ||||
|                 Label("Chat", systemImage: "message.fill").tag(Panel.chat) | ||||
|                 Label("Notifications", systemImage: "bell.fill").tag(Panel.notifications) | ||||
|                 Label("Account", systemImage: "person.circle.fill").tag(Panel.account) | ||||
|             } | ||||
|             .listStyle(.automatic) | ||||
|         } detail: { | ||||
|             switch selection { | ||||
|             case .explore: | ||||
|                 ExploreView().environmentObject(appState) | ||||
|             case .chat: | ||||
|                 ChatView().environmentObject(appState) | ||||
|             case .notifications: | ||||
|                 NotificationView().environmentObject(appState) | ||||
|             case .account: | ||||
|                 AccountView().environmentObject(appState) | ||||
|             case .none: | ||||
|                 Text("Select a panel") | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										88
									
								
								ios/WatchRunner Watch App/Layouts/FlowLayout.swift
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,88 @@ | ||||
| // | ||||
| //  FlowLayout.swift | ||||
| //  WatchRunner Watch App | ||||
| // | ||||
| //  Created by LittleSheep on 2025/10/29. | ||||
| // | ||||
|  | ||||
| import SwiftUI | ||||
|  | ||||
| // MARK: - Custom Layouts | ||||
|  | ||||
| struct FlowLayout: Layout { | ||||
|     var alignment: HorizontalAlignment = .leading | ||||
|     var spacing: CGFloat = 10 | ||||
|  | ||||
|     func sizeThatFits(proposal: ProposedViewSize, subviews: Subviews, cache: inout ()) -> CGSize { | ||||
|         let containerWidth = proposal.width ?? 0 | ||||
|         let sizes = subviews.map { $0.sizeThatFits(.unspecified) } | ||||
|  | ||||
|         var currentX: CGFloat = 0 | ||||
|         var currentY: CGFloat = 0 | ||||
|         var lineHeight: CGFloat = 0 | ||||
|         var totalHeight: CGFloat = 0 | ||||
|  | ||||
|         for size in sizes { | ||||
|             if currentX + size.width > containerWidth { | ||||
|                 // New line | ||||
|                 currentX = 0 | ||||
|                 currentY += lineHeight + spacing | ||||
|                 totalHeight = currentY + size.height | ||||
|                 lineHeight = 0 | ||||
|             } | ||||
|  | ||||
|             currentX += size.width + spacing | ||||
|             lineHeight = max(lineHeight, size.height) | ||||
|         } | ||||
|         totalHeight = currentY + lineHeight | ||||
|  | ||||
|         return CGSize(width: containerWidth, height: totalHeight) | ||||
|     } | ||||
|  | ||||
|     func placeSubviews(in bounds: CGRect, proposal: ProposedViewSize, subviews: Subviews, cache: inout ()) { | ||||
|         let containerWidth = bounds.width | ||||
|         let sizes = subviews.map { $0.sizeThatFits(.unspecified) } | ||||
|  | ||||
|         var currentX: CGFloat = 0 | ||||
|         var currentY: CGFloat = 0 | ||||
|         var lineHeight: CGFloat = 0 | ||||
|         var lineElements: [(offset: Int, size: CGSize)] = [] | ||||
|  | ||||
|         func placeLine() { | ||||
|             let lineWidth = lineElements.map { $0.size.width }.reduce(0, +) + CGFloat(lineElements.count - 1) * spacing | ||||
|             var startX: CGFloat = 0 | ||||
|             switch alignment { | ||||
|             case .leading: | ||||
|                 startX = bounds.minX | ||||
|             case .center: | ||||
|                 startX = bounds.minX + (containerWidth - lineWidth) / 2 | ||||
|             case .trailing: | ||||
|                 startX = bounds.maxX - lineWidth | ||||
|             default: | ||||
|                 startX = bounds.minX | ||||
|             } | ||||
|  | ||||
|             var xOffset = startX | ||||
|             for (offset, size) in lineElements { | ||||
|                 subviews[offset].place(at: CGPoint(x: xOffset, y: bounds.minY + currentY), proposal: ProposedViewSize(size)) // Use bounds.minY + currentY | ||||
|                 xOffset += size.width + spacing | ||||
|             } | ||||
|             lineElements.removeAll() // Clear elements for the next line | ||||
|         } | ||||
|  | ||||
|         for (offset, size) in sizes.enumerated() { | ||||
|             if currentX + size.width > containerWidth && !lineElements.isEmpty { | ||||
|                 // New line | ||||
|                 placeLine() | ||||
|                 currentX = 0 | ||||
|                 currentY += lineHeight + spacing | ||||
|                 lineHeight = 0 | ||||
|             } | ||||
|  | ||||
|             lineElements.append((offset, size)) | ||||
|             currentX += size.width + spacing | ||||
|             lineHeight = max(lineHeight, size.height) | ||||
|         } | ||||
|         placeLine() // Place the last line | ||||
|     } | ||||
| } | ||||