kasy-cli 1.12.1 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (249) hide show
  1. package/bin/kasy.js +143 -7
  2. package/lib/commands/add.js +2 -2
  3. package/lib/commands/codemagic.js +11 -4
  4. package/lib/commands/deploy.js +3 -3
  5. package/lib/commands/favicon.js +115 -0
  6. package/lib/commands/icon.js +143 -0
  7. package/lib/commands/ios.js +20 -5
  8. package/lib/commands/new.js +8 -20
  9. package/lib/commands/remove.js +1 -1
  10. package/lib/commands/reset.js +287 -0
  11. package/lib/commands/run.js +24 -17
  12. package/lib/commands/splash.js +219 -0
  13. package/lib/commands/update.js +1 -1
  14. package/lib/scaffold/CHANGELOG.json +9 -0
  15. package/lib/scaffold/backends/api/patch/README.md +1 -1
  16. package/lib/scaffold/backends/api/patch/android/app/src/main/AndroidManifest.xml +1 -1
  17. package/lib/scaffold/backends/api/patch/lib/features/notifications/api/device_api.dart +53 -0
  18. package/lib/scaffold/backends/api/patch/lib/main.dart +29 -10
  19. package/lib/scaffold/backends/api/pubspec.yaml.tpl +11 -1
  20. package/lib/scaffold/backends/firebase/tokens.js +2 -2
  21. package/lib/scaffold/backends/supabase/edge-functions/send-push-notification/index.ts +8 -2
  22. package/lib/scaffold/backends/supabase/migrations/20240101000011_dedupe_device_tokens.sql +34 -0
  23. package/lib/scaffold/backends/supabase/patch/README.md +1 -1
  24. package/lib/scaffold/backends/supabase/patch/android/app/src/main/AndroidManifest.xml +1 -1
  25. package/lib/scaffold/backends/supabase/patch/lib/features/notifications/api/device_api.dart +43 -0
  26. package/lib/scaffold/backends/supabase/patch/lib/main.dart +29 -10
  27. package/lib/scaffold/backends/supabase/pubspec.yaml.tpl +11 -1
  28. package/lib/scaffold/features/README.md +15 -139
  29. package/lib/scaffold/shared/generator-utils.js +16 -15
  30. package/lib/utils/apple-release.js +85 -16
  31. package/lib/utils/checks.js +4 -105
  32. package/lib/utils/flutter-run.js +173 -0
  33. package/lib/utils/i18n.js +413 -0
  34. package/lib/utils/mobile-identity.js +35 -0
  35. package/lib/utils/ui.js +114 -0
  36. package/package.json +2 -3
  37. package/templates/firebase/README.en.md +1 -1
  38. package/templates/firebase/README.es.md +1 -1
  39. package/templates/firebase/README.md +1 -1
  40. package/templates/firebase/android/app/build.gradle.kts +10 -1
  41. package/templates/firebase/android/app/src/main/AndroidManifest.xml +1 -1
  42. package/templates/firebase/android/app/src/main/kotlin/com/aicrus/firebase/kit/MainActivity.kt +25 -1
  43. package/templates/firebase/android/app/src/main/kotlin/com/aicrus/firebase/kit/MyWidget.kt +160 -11
  44. package/templates/firebase/android/app/src/main/res/drawable/widget_add_button.xml +15 -0
  45. package/templates/firebase/android/app/src/main/res/drawable/widget_gradient_bg.xml +9 -0
  46. package/templates/firebase/android/app/src/main/res/drawable/widget_gradient_inner.xml +12 -0
  47. package/templates/firebase/android/app/src/main/res/drawable/widget_plan_pill_bg.xml +5 -0
  48. package/templates/firebase/android/app/src/main/res/drawable/widget_preview_image.xml +17 -0
  49. package/templates/firebase/android/app/src/main/res/drawable/widget_pro_pill_bg.xml +5 -0
  50. package/templates/firebase/android/app/src/main/res/drawable-hdpi/android12splash.png +0 -0
  51. package/templates/firebase/android/app/src/main/res/drawable-hdpi/splash.png +0 -0
  52. package/templates/firebase/android/app/src/main/res/drawable-mdpi/android12splash.png +0 -0
  53. package/templates/firebase/android/app/src/main/res/drawable-mdpi/splash.png +0 -0
  54. package/templates/firebase/android/app/src/main/res/drawable-night/background.png +0 -0
  55. package/templates/firebase/android/app/src/main/res/drawable-night/launch_background.xml +9 -0
  56. package/templates/firebase/android/app/src/main/res/drawable-night-hdpi/android12splash.png +0 -0
  57. package/templates/firebase/android/app/src/main/res/drawable-night-hdpi/splash.png +0 -0
  58. package/templates/firebase/android/app/src/main/res/drawable-night-mdpi/android12splash.png +0 -0
  59. package/templates/firebase/android/app/src/main/res/drawable-night-mdpi/splash.png +0 -0
  60. package/templates/firebase/android/app/src/main/res/drawable-night-v21/background.png +0 -0
  61. package/templates/firebase/android/app/src/main/res/drawable-night-v21/launch_background.xml +9 -0
  62. package/templates/firebase/android/app/src/main/res/drawable-night-xhdpi/android12splash.png +0 -0
  63. package/templates/firebase/android/app/src/main/res/drawable-night-xhdpi/splash.png +0 -0
  64. package/templates/firebase/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png +0 -0
  65. package/templates/firebase/android/app/src/main/res/drawable-night-xxhdpi/splash.png +0 -0
  66. package/templates/firebase/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png +0 -0
  67. package/templates/firebase/android/app/src/main/res/drawable-night-xxxhdpi/splash.png +0 -0
  68. package/templates/firebase/android/app/src/main/res/drawable-xhdpi/android12splash.png +0 -0
  69. package/templates/firebase/android/app/src/main/res/drawable-xhdpi/splash.png +0 -0
  70. package/templates/firebase/android/app/src/main/res/drawable-xxhdpi/android12splash.png +0 -0
  71. package/templates/firebase/android/app/src/main/res/drawable-xxhdpi/splash.png +0 -0
  72. package/templates/firebase/android/app/src/main/res/drawable-xxxhdpi/android12splash.png +0 -0
  73. package/templates/firebase/android/app/src/main/res/drawable-xxxhdpi/splash.png +0 -0
  74. package/templates/firebase/android/app/src/main/res/layout/widget_loading.xml +8 -0
  75. package/templates/firebase/android/app/src/main/res/layout/widget_preview.xml +46 -0
  76. package/templates/firebase/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  77. package/templates/firebase/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  78. package/templates/firebase/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  79. package/templates/firebase/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  80. package/templates/firebase/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  81. package/templates/firebase/android/app/src/main/res/values-night-v31/styles.xml +2 -1
  82. package/templates/firebase/android/app/src/main/res/values-v31/styles.xml +1 -0
  83. package/templates/firebase/android/app/src/main/res/xml/mywidget_info.xml +9 -3
  84. package/templates/firebase/assets/images/favicon.png +0 -0
  85. package/templates/firebase/assets/images/icon.png +0 -0
  86. package/templates/firebase/assets/images/splash_logo_dark.png +0 -0
  87. package/templates/firebase/assets/images/splash_logo_light.png +0 -0
  88. package/templates/firebase/firestore.indexes.json +10 -0
  89. package/templates/firebase/functions/src/core/data/entities/user_device_entity.ts +3 -0
  90. package/templates/firebase/functions/src/core/data/repositories/user_device_repository.ts +17 -1
  91. package/templates/firebase/functions/src/index.ts +1 -0
  92. package/templates/firebase/functions/src/notifications/device_triggers.ts +58 -0
  93. package/templates/firebase/ios/HomeWidgetExtension/MyWidget.swift +116 -33
  94. package/templates/firebase/ios/Runner/AppDelegate.swift +17 -1
  95. package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png +0 -0
  96. package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png +0 -0
  97. package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png +0 -0
  98. package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png +0 -0
  99. package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png +0 -0
  100. package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png +0 -0
  101. package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png +0 -0
  102. package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png +0 -0
  103. package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png +0 -0
  104. package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png +0 -0
  105. package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png +0 -0
  106. package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png +0 -0
  107. package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png +0 -0
  108. package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png +0 -0
  109. package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png +0 -0
  110. package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png +0 -0
  111. package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png +0 -0
  112. package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png +0 -0
  113. package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png +0 -0
  114. package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png +0 -0
  115. package/templates/firebase/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png +0 -0
  116. package/templates/firebase/ios/Runner/Assets.xcassets/LaunchBackground.imageset/Contents.json +9 -8
  117. package/templates/firebase/ios/Runner/Assets.xcassets/LaunchBackground.imageset/darkbackground.png +0 -0
  118. package/templates/firebase/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json +33 -0
  119. package/templates/firebase/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png +0 -0
  120. package/templates/firebase/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png +0 -0
  121. package/templates/firebase/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png +0 -0
  122. package/templates/firebase/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImageDark.png +0 -0
  123. package/templates/firebase/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImageDark@2x.png +0 -0
  124. package/templates/firebase/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImageDark@3x.png +0 -0
  125. package/templates/firebase/ios/Runner/Base.lproj/LaunchScreen.storyboard +1 -1
  126. package/templates/firebase/ios/Runner/Info.plist +2 -2
  127. package/templates/firebase/ios/Runner/es.lproj/InfoPlist.strings +1 -1
  128. package/templates/firebase/ios/Runner/pt-BR.lproj/InfoPlist.strings +1 -1
  129. package/templates/firebase/ios/Runner/pt.lproj/InfoPlist.strings +1 -1
  130. package/templates/firebase/lib/components/kasy_button.dart +8 -0
  131. package/templates/firebase/lib/core/bottom_menu/kasy_bottom_bar_factory.dart +18 -0
  132. package/templates/firebase/lib/core/home_widgets/home_widget_mywidget_service.dart +67 -19
  133. package/templates/firebase/lib/core/home_widgets/home_widget_service.dart +22 -8
  134. package/templates/firebase/lib/core/shared_preferences/shared_preferences.dart +16 -4
  135. package/templates/firebase/lib/core/states/components/maybeshow_component.dart +4 -8
  136. package/templates/firebase/lib/core/states/user_state_notifier.dart +13 -1
  137. package/templates/firebase/lib/core/theme/providers/theme_provider.dart +48 -24
  138. package/templates/firebase/lib/features/home/home_page.dart +0 -6
  139. package/templates/firebase/lib/features/notifications/api/device_api.dart +57 -0
  140. package/templates/firebase/lib/features/notifications/providers/models/notification.dart +11 -1
  141. package/templates/firebase/lib/features/notifications/repositories/device_repository.dart +9 -0
  142. package/templates/firebase/lib/features/notifications/repositories/notifications_repository.dart +1 -4
  143. package/templates/firebase/lib/features/notifications/shared/att_permission.dart +28 -8
  144. package/templates/firebase/lib/features/notifications/ui/notifications_page.dart +16 -1
  145. package/templates/firebase/lib/features/notifications/ui/widgets/empty_notifications.dart +44 -11
  146. package/templates/firebase/lib/features/onboarding/ui/components/onboarding_features.dart +4 -0
  147. package/templates/firebase/lib/features/onboarding/ui/onboarding_page.dart +1 -0
  148. package/templates/firebase/lib/features/onboarding/ui/widgets/onboarding_feature.dart +13 -0
  149. package/templates/firebase/lib/features/settings/settings_page.dart +158 -18
  150. package/templates/firebase/lib/features/settings/ui/components/admin/admin_bottom_sheet.dart +31 -29
  151. package/templates/firebase/lib/features/settings/ui/components/language_switcher.dart +21 -5
  152. package/templates/firebase/lib/i18n/en.i18n.json +10 -3
  153. package/templates/firebase/lib/i18n/es.i18n.json +10 -3
  154. package/templates/firebase/lib/i18n/pt.i18n.json +10 -3
  155. package/templates/firebase/lib/main.dart +29 -10
  156. package/templates/firebase/pubspec.yaml +10 -6
  157. package/templates/firebase/test/core/data/repositories/user_repository_test.dart +1 -1
  158. package/templates/firebase/test/features/notifications/data/device_api_fake.dart +9 -0
  159. package/templates/firebase/web/favicon.png +0 -0
  160. package/templates/firebase/web/icons/Icon-192.png +0 -0
  161. package/templates/firebase/web/icons/Icon-512.png +0 -0
  162. package/templates/firebase/web/icons/Icon-maskable-192.png +0 -0
  163. package/templates/firebase/web/icons/Icon-maskable-512.png +0 -0
  164. package/templates/firebase/web/index.html +50 -39
  165. package/templates/firebase/web/manifest.json +3 -3
  166. package/templates/firebase/web/splash/img/dark-1x.png +0 -0
  167. package/templates/firebase/web/splash/img/dark-2x.png +0 -0
  168. package/templates/firebase/web/splash/img/dark-3x.png +0 -0
  169. package/templates/firebase/web/splash/img/dark-4x.png +0 -0
  170. package/templates/firebase/web/splash/img/light-1x.png +0 -0
  171. package/templates/firebase/web/splash/img/light-2x.png +0 -0
  172. package/templates/firebase/web/splash/img/light-3x.png +0 -0
  173. package/templates/firebase/web/splash/img/light-4x.png +0 -0
  174. package/lib/scaffold/features/analytics/lib/core/data/api/analytics_api.dart +0 -124
  175. package/lib/scaffold/features/ci/.github/ISSUE_TEMPLATE/BUG.es.md +0 -35
  176. package/lib/scaffold/features/ci/.github/ISSUE_TEMPLATE/BUG.md +0 -35
  177. package/lib/scaffold/features/ci/.github/ISSUE_TEMPLATE/BUG.pt.md +0 -35
  178. package/lib/scaffold/features/ci/.github/ISSUE_TEMPLATE/feature_request.es.md +0 -12
  179. package/lib/scaffold/features/ci/.github/ISSUE_TEMPLATE/feature_request.md +0 -12
  180. package/lib/scaffold/features/ci/.github/ISSUE_TEMPLATE/feature_request.pt.md +0 -12
  181. package/lib/scaffold/features/ci/.github/PULL_REQUEST_TEMPLATE.es.md +0 -17
  182. package/lib/scaffold/features/ci/.github/PULL_REQUEST_TEMPLATE.md +0 -17
  183. package/lib/scaffold/features/ci/.github/PULL_REQUEST_TEMPLATE.pt.md +0 -17
  184. package/lib/scaffold/features/ci/.github/dependabot.yml +0 -16
  185. package/lib/scaffold/features/ci/.github/workflows/app.yml +0 -20
  186. package/lib/scaffold/features/ci/.gitlab/templates/deploy.yaml +0 -14
  187. package/lib/scaffold/features/ci/.gitlab/templates/dropbox.yaml +0 -19
  188. package/lib/scaffold/features/ci/.gitlab/templates/flutter.yaml +0 -163
  189. package/lib/scaffold/features/ci/.gitlab/templates/mailgun.yaml +0 -28
  190. package/lib/scaffold/features/ci/.gitlab-ci.yml +0 -37
  191. package/lib/scaffold/features/ci/codemagic.yaml +0 -157
  192. package/lib/scaffold/features/facebook/lib/core/data/api/tracking_api.dart +0 -111
  193. package/lib/scaffold/features/feedback/lib/features/feedbacks/api/entities/feature_request_entity.dart +0 -27
  194. package/lib/scaffold/features/feedback/lib/features/feedbacks/api/entities/feature_vote_entity.dart +0 -27
  195. package/lib/scaffold/features/feedback/lib/features/feedbacks/api/feature_request_api.dart +0 -50
  196. package/lib/scaffold/features/feedback/lib/features/feedbacks/api/feature_vote_api.dart +0 -79
  197. package/lib/scaffold/features/feedback/lib/features/feedbacks/models/feature_requests.dart +0 -48
  198. package/lib/scaffold/features/feedback/lib/features/feedbacks/models/feedback_state.dart +0 -42
  199. package/lib/scaffold/features/feedback/lib/features/feedbacks/providers/feedback_page_notifier.dart +0 -147
  200. package/lib/scaffold/features/feedback/lib/features/feedbacks/repositories/feature_request_repository.dart +0 -95
  201. package/lib/scaffold/features/feedback/lib/features/feedbacks/ui/component/add_feature_form.dart +0 -199
  202. package/lib/scaffold/features/feedback/lib/features/feedbacks/ui/feedback_page.dart +0 -175
  203. package/lib/scaffold/features/feedback/lib/features/feedbacks/ui/widgets/add_feature_button.dart +0 -76
  204. package/lib/scaffold/features/feedback/lib/features/feedbacks/ui/widgets/feature_card.dart +0 -279
  205. package/lib/scaffold/features/ios-release/.kasy/apple.env.example +0 -8
  206. package/lib/scaffold/features/ios-release/.kasy/codemagic.env.example +0 -7
  207. package/lib/scaffold/features/ios-release/docs/codemagic-release.en.md +0 -50
  208. package/lib/scaffold/features/ios-release/docs/codemagic-release.es.md +0 -50
  209. package/lib/scaffold/features/ios-release/docs/codemagic-release.pt.md +0 -50
  210. package/lib/scaffold/features/ios-release/docs/ios-release.en.md +0 -41
  211. package/lib/scaffold/features/ios-release/docs/ios-release.es.md +0 -41
  212. package/lib/scaffold/features/ios-release/docs/ios-release.pt.md +0 -41
  213. package/lib/scaffold/features/ios-release/scripts/bump-ios-version.js +0 -38
  214. package/lib/scaffold/features/ios-release/scripts/release-ios.sh +0 -137
  215. package/lib/scaffold/features/llm_chat/lib/features/llm_chat/llm_chat_page.dart +0 -301
  216. package/lib/scaffold/features/local_notifications/lib/features/local_reminder/providers/reminder_notifier.dart +0 -81
  217. package/lib/scaffold/features/local_notifications/lib/features/local_reminder/repositories/reminder_preferences.dart +0 -76
  218. package/lib/scaffold/features/local_notifications/lib/features/local_reminder/ui/reminder_page.dart +0 -282
  219. package/lib/scaffold/features/onboarding/lib/features/onboarding/api/entities/user_info_entity.dart +0 -24
  220. package/lib/scaffold/features/onboarding/lib/features/onboarding/api/user_infos_api.dart +0 -71
  221. package/lib/scaffold/features/onboarding/lib/features/onboarding/models/user_info.dart +0 -92
  222. package/lib/scaffold/features/onboarding/lib/features/onboarding/providers/onboarding_model.dart +0 -15
  223. package/lib/scaffold/features/onboarding/lib/features/onboarding/providers/onboarding_provider.dart +0 -78
  224. package/lib/scaffold/features/onboarding/lib/features/onboarding/repositories/user_infos_repository.dart +0 -29
  225. package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/animations/page_transitions.dart +0 -30
  226. package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/components/onboarding_att_setup.dart +0 -66
  227. package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/components/onboarding_features.dart +0 -72
  228. package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/components/onboarding_loader.dart +0 -92
  229. package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/components/onboarding_notifications_setup.dart +0 -73
  230. package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/components/onboarding_questions.dart +0 -89
  231. package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/onboarding_page.dart +0 -94
  232. package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/widgets/onboarding_background.dart +0 -80
  233. package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/widgets/onboarding_feature.dart +0 -139
  234. package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/widgets/onboarding_illustration_scaffold.dart +0 -110
  235. package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/widgets/onboarding_progress.dart +0 -84
  236. package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/widgets/onboarding_radio_question.dart +0 -173
  237. package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/widgets/onboarding_reassurance.dart +0 -45
  238. package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/widgets/onboarding_sticky_footer.dart +0 -77
  239. package/lib/scaffold/features/onboarding/lib/features/onboarding/ui/widgets/selectable_row_tile.dart +0 -392
  240. package/lib/scaffold/features/revenuecat/lib/core/data/api/tracking_api.dart +0 -116
  241. package/lib/scaffold/features/revenuecat/lib/core/data/models/subscription.dart +0 -322
  242. package/lib/scaffold/features/revenuecat/lib/core/home_widgets/home_widget_background_task.dart +0 -41
  243. package/lib/scaffold/features/revenuecat/lib/core/states/user_state_notifier.dart +0 -305
  244. package/templates/firebase/assets/images/app_icon.png +0 -0
  245. package/templates/firebase/assets/images/onboarding/img1.jpg +0 -0
  246. package/templates/firebase/assets/images/onboarding/onboarding.png +0 -0
  247. package/templates/firebase/assets/images/splashscreen.png +0 -0
  248. package/templates/firebase/lib/core/states/components/maybe_ask_biometric_setup.dart +0 -88
  249. package/templates/firebase/lib/features/notifications/shared/notification_permission_bottom_sheet.dart +0 -144
@@ -1,17 +0,0 @@
1
- ## Descripción
2
-
3
- *¿Qué cambia tu Pull Request?*
4
-
5
- ## Checklist
6
-
7
- Antes de crear cualquier Pull Request, confirma que cumple todos los requisitos marcando las casillas relevantes (`[x]`).
8
-
9
- - [ ] 📕 Leí la [página de Contribución](https://github.com/your-org/your-repo/blob/master/CONTRIBUTING.md).
10
- - [ ] 🤝 Sigo el estilo de código actual.
11
- - [ ] ✅ Ejecuté ```flutter analyze``` sin problemas.
12
-
13
- ## Breaking Change
14
-
15
- - [ ] 🛠 Mi feature contiene breaking change.
16
-
17
- *Si tu feature rompe algo, detállalo aquí*
@@ -1,17 +0,0 @@
1
- ## Description
2
-
3
- *What your Pull Request change ?*
4
-
5
- ## Checklist
6
-
7
- Before creating any Pull Request, confirm that it meets all requirements listed below by checking the relevant checkboxes (`[x]`).
8
-
9
- - [ ] 📕 I read the [Contributing page](https://github.com/your-org/your-repo/blob/master/CONTRIBUTING.md).
10
- - [ ] 🤝 I match the actual coding style.
11
- - [ ] ✅ I ran ```flutter analyze``` without any issues.
12
-
13
- ## Breaking Change
14
-
15
- - [ ] 🛠 My feature contain breaking change.
16
-
17
- *If your feature break something, please detail it*
@@ -1,17 +0,0 @@
1
- ## Descrição
2
-
3
- *O que sua Pull Request altera?*
4
-
5
- ## Checklist
6
-
7
- Antes de criar qualquer Pull Request, confirme que atende a todos os requisitos abaixo marcando as caixas relevantes (`[x]`).
8
-
9
- - [ ] 📕 Li a [página de Contribuição](https://github.com/your-org/your-repo/blob/master/CONTRIBUTING.md).
10
- - [ ] 🤝 Segui o estilo de código atual.
11
- - [ ] ✅ Executei ```flutter analyze``` sem problemas.
12
-
13
- ## Breaking Change
14
-
15
- - [ ] 🛠 Minha feature contém breaking change.
16
-
17
- *Se sua feature quebrar algo, detalhe aqui*
@@ -1,16 +0,0 @@
1
- version: 2
2
- updates:
3
- - package-ecosystem: "pub"
4
- directory: "/"
5
- schedule:
6
- interval: daily
7
- time: "12:30"
8
- timezone: Europe/Paris
9
- open-pull-requests-limit: 5
10
- - package-ecosystem: "gradle"
11
- directory: "/android"
12
- schedule:
13
- interval: weekly
14
- time: "12:30"
15
- timezone: Europe/Paris
16
- open-pull-requests-limit: 1
@@ -1,20 +0,0 @@
1
- name: app
2
-
3
- on: [push, pull_request]
4
-
5
- jobs:
6
- build:
7
- name: Build and test
8
- runs-on: ubuntu-latest
9
- timeout-minutes: 10
10
- steps:
11
- - name: Checkout code
12
- uses: actions/checkout@v3
13
- - name: Setup Flutter
14
- uses: subosito/flutter-action@v2
15
- with:
16
- channel: 'stable'
17
- - name: Run Dart Analyzer
18
- run: flutter analyze lib test --no-fatal-infos --no-fatal-warnings
19
- - name: Run tests
20
- run: flutter test
@@ -1,14 +0,0 @@
1
- ## This requires to run on a macos runner with Xcode installed and configured
2
- .deploy-app-store-connect:
3
- tags:
4
- - macos
5
- only:
6
- - master
7
- - main
8
- variables:
9
- IPA_PATH: "build/ios/ipa/*.ipa"
10
- API_KEY: ""
11
- API_ISSUER: ""
12
- script:
13
- - "echo 'Deploying app to App Store Connect'"
14
- - xcrun altool --upload-app --type ios -f $IPA_PATH --apiKey $API_KEY --apiIssuer $API_ISSUER
@@ -1,19 +0,0 @@
1
- .dropbox:
2
- variables:
3
- APP_FOLDER : ""
4
- FLAVOR : ""
5
- PATH_TO_BINARY: ""
6
- VERSION: "latest"
7
- tags:
8
- - macos
9
- script:
10
- ## install dropbox uploader on your machine using this
11
- ## Check https://github.com/andreafabrizi/Dropbox-Uploader for more informations
12
- # curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh
13
- # chmod +x dropbox_uploader.sh
14
- # ./dropbox_uploader.sh -f dropbox_uploader.cfg
15
- # create dropbox folder
16
- - sh ~/dropbox-uploader/dropbox_uploader.sh -f ~/dropbox-uploader/dropbox_uploader.cfg mkdir "$APP_FOLDER/$VERSION/" &>/dev/null || echo "target folder exists"
17
- # upload apk to dropbox
18
- - sh ~/dropbox-uploader/dropbox_uploader.sh -f ~/dropbox-uploader/dropbox_uploader.cfg upload "$PATH_TO_BINARY" "$APP_FOLDER/$VERSION/"
19
- allow_failure: true
@@ -1,163 +0,0 @@
1
- ###########
2
- ## SETUP ##
3
- ###########
4
- .setup:
5
- tags:
6
- - macos
7
- except:
8
- - tags
9
- script:
10
- - flutter channel stable
11
- - flutter upgrade
12
- - flutter pub global activate cider
13
- - flutter clean
14
- - pod repo update
15
- - export LC_ALL=fr_FR.UTF-8
16
- - export LANG=fr_FR.UTF-8
17
- - export APP_PATH=$(pwd)
18
- artifacts:
19
- reports:
20
- dotenv:
21
- - lc_all.env
22
- - lang.env
23
- - app_path.env
24
-
25
-
26
- .build-android-release:
27
- tags:
28
- - macos
29
- variables:
30
- FLAVOR: ""
31
- PATH_TO_RUNNER: ""
32
- ADDITIONAL_OPTIONS: ""
33
- only:
34
- - release
35
- script:
36
- - flutter pub get
37
- - flutter build apk --flavor $FLAVOR --release -t $PATH_TO_RUNNER $ADDITIONAL_OPTIONS
38
- - flutter build appbundle --flavor $FLAVOR --release -t $PATH_TO_RUNNER $ADDITIONAL_OPTIONS
39
- artifacts:
40
- paths:
41
- - build/app/outputs/flutter-apk/app-$FLAVOR-release.apk
42
- - build/app/outputs/bundle/${FLAVOR}Release/app-$FLAVOR-release.aab
43
-
44
-
45
- .build-android-profile:
46
- tags:
47
- - macos
48
- variables:
49
- FLAVOR: ""
50
- PATH_TO_RUNNER: ""
51
- ADDITIONAL_OPTIONS: ""
52
- only:
53
- - master
54
- script:
55
- - flutter pub get
56
- - if [[ $FLAVOR == "" ]]; then flutter build apk -t $PATH_TO_RUNNER $ADDITIONAL_OPTIONS; else flutter build apk --flavor $FLAVOR -t $PATH_TO_RUNNER $ADDITIONAL_OPTIONS; fi
57
- - if [[ $FLAVOR == "" ]]; then flutter build appbundle --profile -t $PATH_TO_RUNNER $ADDITIONAL_OPTIONS; else flutter build appbundle --profile --flavor $FLAVOR -t $PATH_TO_RUNNER $ADDITIONAL_OPTIONS; fi
58
- artifacts:
59
- paths:
60
- - build/app/outputs/flutter-apk
61
- - build/app/outputs/bundle/${FLAVOR}Profile/app-$FLAVOR-profile.aab
62
-
63
- .build-ios-ipa:
64
- tags:
65
- - macos
66
- only:
67
- - master
68
- - main
69
- variables:
70
- FLAVOR: ""
71
- PATH_TO_RUNNER: ""
72
- METHOD: "ad-hoc" # ["ad-hoc", "app-store", "development", "enterprise"]
73
- ADDITIONAL_OPTIONS: ""
74
- script:
75
- - cd ios
76
- - pod repo update
77
- - cd ..
78
- - flutter pub get
79
- - if [[ $FLAVOR == "" ]]; then flutter build ipa -t $PATH_TO_RUNNER $ADDITIONAL_OPTIONS; else flutter build ipa --flavor $FLAVOR -t $PATH_TO_RUNNER $ADDITIONAL_OPTIONS; fi
80
- # rename ipa file
81
- - mv build/ios/ipa/*.ipa build/ios/ipa/app-release.ipa
82
- artifacts:
83
- paths:
84
- - build/ios/ipa/app.ipa
85
-
86
- .build-ios-auto:
87
- tags:
88
- - macos
89
- only:
90
- - release
91
- variables:
92
- FLAVOR: ""
93
- PATH_TO_RUNNER: ""
94
- EXPORT_OPTIONS_PLIST: "../scripts/exportOptions.plist"
95
- ADDITIONAL_OPTIONS: ""
96
- script:
97
- - flutter clean
98
- - cd ios
99
- - pod repo update
100
- - cd ..
101
- - flutter build ios -t $PATH_TO_RUNNER --flavor $FLAVOR --release $ADDITIONAL_OPTIONS
102
- - cd ios
103
- - xcodebuild -quiet -workspace Runner.xcworkspace -scheme $FLAVOR archive -archivePath Runner.xcarchive -allowProvisioningUpdates -destination generic/platform=iOS
104
- - xcodebuild -quiet -exportArchive -archivePath Runner.xcarchive -exportOptionsPlist $EXPORT_OPTIONS_PLIST -exportPath ../scripts -allowProvisioningUpdates
105
- - cd ../scripts
106
- - mv *.ipa app-$FLAVOR.ipa
107
- artifacts:
108
- paths:
109
- - scripts/app-$FLAVOR.ipa
110
-
111
- .tests-stable:
112
- tags:
113
- - macos
114
- stage: test
115
- image: "cirrusci/flutter:stable"
116
- before_script:
117
- - flutter pub global activate junitreport
118
- - export PATH="$PATH":"$HOME/.pub-cache/bin"
119
- script:
120
- - flutter test --machine --coverage | tojunit -o report.xml
121
- - lcov --summary coverage/lcov.info
122
- - genhtml coverage/lcov.info --output=coverage
123
- coverage: '/lines\.*: \d+\.\d+\%/'
124
- artifacts:
125
- name: coverage
126
- paths:
127
- - $CI_PROJECT_DIR/coverage
128
- reports:
129
- junit: report.xml
130
-
131
- ##############################################
132
- ## YOU MUST INSTALL CIDER BEFORE USING THIS ##
133
- ##############################################
134
-
135
- .bump-build-version:
136
- variables:
137
- BRANCH: "master"
138
- tags:
139
- - macos
140
- script:
141
- - export PATH="$PATH":"$HOME/.pub-cache/bin"
142
- # git prepare
143
- - git checkout -B $BRANCH
144
- - git remote set-url origin "$(echo $CI_REPOSITORY_URL | perl -pe 's#.*@(.+?(\:\d+)?)/#git@\1:#')"
145
- - git branch --set-upstream-to=origin/$BRANCH $BRANCH
146
- # bump project build version
147
- - cider bump build
148
- - export APP_PROJECT_VERSION=$(cider version)
149
- - git add pubspec.yaml
150
- - git commit -m "🔖 Bump build version"
151
- - git tag -a "${APP_PROJECT_VERSION}-staging" -m "Version created by Gitlab CI build."
152
- - git push origin HEAD:$BRANCH --follow-tags -o ci.skip
153
- - git pull
154
-
155
- .read-build-version:
156
- tags:
157
- - macos
158
- script:
159
- - export APP_PROJECT_VERSION=$(cider version)
160
- - echo "APP_PROJECT_VERSION=$APP_PROJECT_VERSION" >> app_project_version.env
161
- artifacts:
162
- reports:
163
- dotenv: app_project_version.env
@@ -1,28 +0,0 @@
1
- .send_email:
2
- variables:
3
- FILENAME: ""
4
- SUBJECT: ""
5
- MAILGUN_API_KEY: ""
6
- MAILGUN_DOMAIN: ""
7
- FROM: ""
8
- HTML: ""
9
- TO: ""
10
- script: curl -s --user "api:$MAILGUN_API_KEY" "https://api.eu.mailgun.net/v3/$MAILGUN_DOMAIN/messages" -F from=$FROM -F to=$TO -F subject="$SUBJECT" -F html="$HTML"
11
-
12
- .send_email_attachment:
13
- variables:
14
- FILENAME: ""
15
- SUBJECT: ""
16
- MAILGUN_API_KEY: ""
17
- MAILGUN_DOMAIN: ""
18
- FROM: ""
19
- HTML: ""
20
- TO: ""
21
- script: curl -s --user "api:$MAILGUN_API_KEY"
22
- "https://api.eu.mailgun.net/v3/$MAILGUN_DOMAIN/messages"
23
- -F from=$FROM
24
- -F to=$TO
25
- -F subject="$SUBJECT"
26
- -F attachment=$FILENAME
27
- -F html="$HTML"
28
- # -F attachment='@reports/report.html'
@@ -1,37 +0,0 @@
1
- stages:
2
- - test
3
- - deploy
4
-
5
- test:
6
- stage: test
7
- image: node:18
8
- allow_failure: false
9
- before_script:
10
- - cd functions
11
- - time npm ci
12
- script:
13
- - npm run test
14
- cache:
15
- key: build-cache
16
- paths:
17
- - functions/node_modules/
18
- policy: push
19
- coverage: '/Lines \W+: (\d+.\d+)%.*/'
20
-
21
- deploy:production:
22
- stage: deploy
23
- needs: [test]
24
- image: node:18
25
- before_script:
26
- - cd functions
27
- - time npm ci
28
- - npm install -g firebase-tools
29
- script:
30
- # - firebase use production
31
- - firebase deploy --only firestore:indexes --token " $FIREBASE_CI_TOKEN " -P production
32
- - firebase deploy --only firestore:rules --token " $FIREBASE_CI_TOKEN " -P production
33
- - firebase deploy --only storage --token " $FIREBASE_CI_TOKEN " -P production
34
- - firebase deploy --only functions --token " $FIREBASE_CI_TOKEN " -P production
35
- only:
36
- - main
37
- when: manual
@@ -1,157 +0,0 @@
1
- workflows:
2
- android-workflow:
3
- name: Android Workflow
4
- instance_type: mac_mini_m1
5
- max_build_duration: 120
6
- environment:
7
- android_signing:
8
- - stacks-keystore
9
- groups:
10
- - google_play # <-- (Includes GCLOUD_SERVICE_ACCOUNT_CREDENTIALS)
11
- vars:
12
- PACKAGE_NAME: {{BUNDLE_ID}} # <-- Put your package name here
13
- GOOGLE_PLAY_TRACK: "alpha" # <-- Put your track here (alpha, beta, production, internal)
14
- flutter: stable
15
- triggering:
16
- cancel_previous_builds: true
17
- events:
18
- - push
19
- branch_patterns:
20
- - pattern: '*'
21
- include: false
22
- source: false
23
- - pattern: 'main'
24
- include: true
25
- source: true
26
- scripts:
27
- - name: Set up local.properties
28
- script: |
29
- echo "flutter.sdk=$HOME/programs/flutter" > "$CM_BUILD_DIR/android/local.properties"
30
- - name: Get Flutter packages
31
- script: |
32
- flutter packages pub get
33
- - name: Unit tests
34
- script: |
35
- mkdir -p test-results
36
- flutter test --machine > test-results/flutter.json
37
- test_report: test-results/flutter.json
38
- - name: Build AAB with Flutter
39
- script: |
40
- BUILD_NUMBER=$(($(google-play get-latest-build-number --package-name "$PACKAGE_NAME" --tracks="$GOOGLE_PLAY_TRACK") + 1))
41
- flutter build appbundle --release \
42
- --dart-define=ENV=prod \
43
- --dart-define=BACKEND_URL=$BACKEND_URL \
44
- --dart-define=SENTRY_DSN=$SENTRY_DSN \
45
- --dart-define=RC_ANDROID_API_KEY=$RC_ANDROID_API_KEY \
46
- --dart-define=RC_IOS_API_KEY=$RC_IOS_API_KEY \
47
- --dart-define=MIXPANEL_TOKEN=$MIXPANEL_TOKEN \
48
- --build-name=1.0.$BUILD_NUMBER \
49
- --build-number=$BUILD_NUMBER
50
- artifacts:
51
- - build/**/outputs/**/*.aab
52
- - build/**/outputs/**/mapping.txt
53
- - flutter_drive.log
54
- publishing:
55
- email:
56
- recipients:
57
- - # <-- Put your email here or add others recipients
58
- notify:
59
- success: true
60
- failure: true
61
- google_play:
62
- credentials: $GCLOUD_SERVICE_ACCOUNT_CREDENTIALS
63
- track: $GOOGLE_PLAY_TRACK
64
- submit_as_draft: true
65
- ios-workflow:
66
- name: iOS Workflow
67
- instance_type: mac_mini_m1
68
- max_build_duration: 120
69
- integrations:
70
- app_store_connect: codemagic
71
- environment:
72
- groups:
73
- - appstore_credentials
74
- ios_signing:
75
- distribution_type: app_store
76
- bundle_identifier: {{BUNDLE_ID}} # <-- Put your bundle identifier here
77
- vars:
78
- # Numeric App ID from App Store Connect app URL (e.g. .../apps/1234567890/...)
79
- APP_ID:
80
- flutter: stable
81
- xcode: latest # <-- set to specific version e.g. 14.3, 15.0 to avoid unexpected updates.
82
- cocoapods: default
83
- triggering:
84
- cancel_previous_builds: true
85
- events:
86
- - push
87
- branch_patterns:
88
- - pattern: '*'
89
- include: false
90
- source: false
91
- - pattern: 'main'
92
- include: true
93
- source: true
94
- scripts:
95
- - name: Set up code signing settings on Xcode project
96
- script: |
97
- xcode-project use-profiles
98
- - name: Get Flutter packages
99
- script: |
100
- flutter packages pub get
101
- - name: Install pods
102
- script: |
103
- find . -name "Podfile" -execdir pod install \;
104
- - name: Validate Google Sign-In iOS URL scheme
105
- script: |
106
- GOOGLE_PLIST="ios/Runner/GoogleService-Info.plist"
107
- INFO_PLIST="ios/Runner/Info.plist"
108
- if [ -f "$GOOGLE_PLIST" ]; then
109
- REVERSED_CLIENT_ID=$(/usr/libexec/PlistBuddy -c "Print :REVERSED_CLIENT_ID" "$GOOGLE_PLIST" 2>/dev/null || true)
110
- if [ -z "$REVERSED_CLIENT_ID" ]; then
111
- echo "REVERSED_CLIENT_ID not found in $GOOGLE_PLIST"
112
- exit 1
113
- fi
114
- if ! /usr/libexec/PlistBuddy -c "Print :CFBundleURLTypes" "$INFO_PLIST" 2>/dev/null | grep -Fq "$REVERSED_CLIENT_ID"; then
115
- echo "Google Sign-In iOS URL scheme mismatch."
116
- echo "Expected CFBundleURLSchemes to include: $REVERSED_CLIENT_ID"
117
- echo "Run flutterfire configure/project setup before building."
118
- exit 1
119
- fi
120
- fi
121
- - name: Flutter analyze # <-- remove if you don't like flutter analyze
122
- script: |
123
- flutter analyze
124
- - name: Flutter unit tests
125
- script: |
126
- flutter test
127
- ignore_failure: false # You should never build an app that has failing tests.
128
- - name: Flutter build ipa and automatic versioning
129
- script: |
130
- flutter build ipa --release \
131
- --dart-define=ENV=prod \
132
- --dart-define=BACKEND_URL=$BACKEND_URL \
133
- --dart-define=SENTRY_DSN=$SENTRY_DSN \
134
- --dart-define=RC_ANDROID_API_KEY=$RC_ANDROID_API_KEY \
135
- --dart-define=RC_IOS_API_KEY=$RC_IOS_API_KEY \
136
- --dart-define=MIXPANEL_TOKEN=$MIXPANEL_TOKEN \
137
- --build-name=1.0.0 \
138
- --build-number=$(($(app-store-connect get-latest-app-store-build-number "$APP_ID") + 1)) \
139
- --export-options-plist=/Users/builder/export_options.plist
140
- artifacts:
141
- - build/ios/ipa/*.ipa
142
- - /tmp/xcodebuild_logs/*.log
143
- - flutter_drive.log
144
- publishing:
145
- email:
146
- recipients:
147
- - # <-- Put your email here or add others recipients
148
- notify:
149
- success: true
150
- failure: true
151
- app_store_connect:
152
- auth: integration
153
- submit_to_app_store: true
154
- release_type: MANUAL
155
- submit_to_testflight: true
156
- beta_groups:
157
- - kasy # <-- Put your beta group name here
@@ -1,111 +0,0 @@
1
- import 'dart:async';
2
-
3
- import 'package:facebook_app_events/facebook_app_events.dart';
4
- import 'package:flutter/foundation.dart';
5
- import 'package:flutter_riverpod/flutter_riverpod.dart';
6
- import 'package:logger/logger.dart';
7
- import 'package:permission_handler/permission_handler.dart';
8
- import 'package:kasy_kit/core/initializer/onstart_service.dart';
9
- import 'package:kasy_kit/core/states/models/user_state.dart';
10
- import 'package:kasy_kit/core/states/user_state_notifier.dart';
11
- import 'package:kasy_kit/features/notifications/repositories/device_repository.dart';
12
- import 'package:sentry_flutter/sentry_flutter.dart';
13
-
14
- final facebookEventApiProvider = Provider(
15
- (ref) => FacebookEventApi(
16
- deviceRepository: ref.watch(deviceRepositoryProvider),
17
- userState: ref.watch(userStateNotifierProvider),
18
- ),
19
- );
20
-
21
- class FacebookEventApi implements OnStartService {
22
- final DeviceRepository deviceRepository;
23
- final UserState userState;
24
-
25
- FacebookEventApi({
26
- required this.deviceRepository,
27
- required this.userState,
28
- });
29
-
30
- @override
31
- Future<void> init() async {
32
- if (kIsWeb) {
33
- return;
34
- }
35
- // We must init the facebook app events
36
- final facebookAppEvents = FacebookAppEvents();
37
- // This is required by RevenueCat
38
- await facebookAppEvents.setAutoLogAppEventsEnabled(false);
39
- }
40
-
41
- Future<void> initUser(String userId) async {
42
- if (kIsWeb) {
43
- return;
44
- }
45
- final facebookAppEvents = FacebookAppEvents();
46
- await facebookAppEvents.setUserID(userId);
47
-
48
- if (defaultTargetPlatform != TargetPlatform.iOS) {
49
- return;
50
- }
51
- final isGranted = await Permission.appTrackingTransparency.isGranted;
52
- if (!isGranted) {
53
- return;
54
- }
55
- await facebookAppEvents.setAdvertiserTracking(enabled: true);
56
- }
57
-
58
- Future<void> requestIDFA() async {
59
- if (kIsWeb) {
60
- return;
61
- }
62
- final facebookAppEvents = FacebookAppEvents();
63
- if (defaultTargetPlatform == TargetPlatform.iOS) {
64
- final status = await Permission.appTrackingTransparency.request();
65
- // analyticsApi?.logEvent('att_request', {
66
- // 'granted': true,
67
- // });
68
-
69
- debugPrint("IDFA status: $status");
70
- if (status.isGranted) {
71
- await facebookAppEvents.setAdvertiserTracking(enabled: true);
72
- await _initMetaUser();
73
- unawaited(facebookAppEvents.flush());
74
- await deviceRepository.refreshExtraData();
75
- } else {
76
- await facebookAppEvents.setAdvertiserTracking(enabled: false);
77
- }
78
- } else if (defaultTargetPlatform == TargetPlatform.android) {
79
- await _initMetaUser();
80
- await facebookAppEvents.setAutoLogAppEventsEnabled(true);
81
- }
82
- }
83
-
84
- Future<void> _initMetaUser() async {
85
- final facebookAppEvents = FacebookAppEvents();
86
- final userId = userState.user.idOrNull;
87
- if (userId != null) {
88
- await facebookAppEvents.setUserID(userId);
89
- }
90
- }
91
-
92
- Future<void> logMetaStartTrial(String orderId, double price, String currency) async {
93
- try {
94
- final facebookAppEvents = FacebookAppEvents();
95
- await facebookAppEvents.logStartTrial(orderId: orderId, price: price, currency: currency);
96
- } catch (e) {
97
- Logger().e("Error logging StartTrial (facebook): $e");
98
- Sentry.captureException(e, stackTrace: StackTrace.current);
99
- }
100
- }
101
-
102
- Future<void> logMetaSubscribe(String orderId, double price, String currency) async {
103
- try {
104
- final facebookAppEvents = FacebookAppEvents();
105
- await facebookAppEvents.logSubscribe(orderId: orderId, price: price, currency: currency);
106
- } catch (e) {
107
- Logger().e("Error logging Subscribe (facebook): $e");
108
- Sentry.captureException(e, stackTrace: StackTrace.current);
109
- }
110
- }
111
- }
@@ -1,27 +0,0 @@
1
- import 'package:cloud_firestore/cloud_firestore.dart';
2
- import 'package:freezed_annotation/freezed_annotation.dart';
3
- // ignore: depend_on_referenced_packages
4
- // ignore_for_file: invalid_annotation_target
5
-
6
- import 'package:kasy_kit/core/data/entities/json_converters.dart';
7
-
8
- part 'feature_request_entity.freezed.dart';
9
- part 'feature_request_entity.g.dart';
10
-
11
- @freezed
12
- sealed class FeatureRequestEntity with _$FeatureRequestEntity {
13
- const factory FeatureRequestEntity({
14
- @JsonKey(includeIfNull: false, toJson: Converters.id) String? id,
15
- @TimestampConverter() required DateTime creationDate,
16
- @TimestampConverter() required DateTime lastUpdateDate,
17
- required Map<String, String> title,
18
- required Map<String, String> description,
19
- required int votes,
20
- required bool active, // votes are enabled for this feature
21
- }) = FeatureRequestEntityData;
22
-
23
- const FeatureRequestEntity._();
24
-
25
- factory FeatureRequestEntity.fromJson(String id, Map<String, dynamic> json) =>
26
- _$FeatureRequestEntityFromJson(json..['id'] = id);
27
- }
@@ -1,27 +0,0 @@
1
- import 'package:cloud_firestore/cloud_firestore.dart';
2
- import 'package:freezed_annotation/freezed_annotation.dart';
3
- // ignore: depend_on_referenced_packages
4
- // ignore_for_file: invalid_annotation_target
5
-
6
- import 'package:kasy_kit/core/data/entities/json_converters.dart';
7
-
8
- part 'feature_vote_entity.freezed.dart';
9
- part 'feature_vote_entity.g.dart';
10
-
11
- @freezed
12
- abstract class UserFeatureVoteEntity with _$UserFeatureVoteEntity {
13
- const factory UserFeatureVoteEntity({
14
- @JsonKey(includeIfNull: false, toJson: Converters.id) String? id,
15
- @JsonKey(name: 'creation_date')
16
- @TimestampConverter()
17
- required DateTime creationDate,
18
- required String userId,
19
- required String featureId,
20
- }) = UserFeatureVoteEntityData;
21
-
22
- const UserFeatureVoteEntity._();
23
-
24
- factory UserFeatureVoteEntity.fromJson(
25
- String id, Map<String, dynamic> json) =>
26
- _$UserFeatureVoteEntityFromJson(json..['id'] = id);
27
- }