├── ios
├── Flutter
│ ├── Debug.xcconfig
│ ├── Release.xcconfig
│ └── AppFrameworkInfo.plist
├── Runner
│ ├── Runner-Bridging-Header.h
│ ├── Assets.xcassets
│ │ ├── LaunchImage.imageset
│ │ │ ├── LaunchImage.png
│ │ │ ├── LaunchImage@2x.png
│ │ │ ├── LaunchImage@3x.png
│ │ │ ├── README.md
│ │ │ └── Contents.json
│ │ └── AppIcon.appiconset
│ │ │ ├── Icon-App-20x20@1x.png
│ │ │ ├── Icon-App-20x20@2x.png
│ │ │ ├── Icon-App-20x20@3x.png
│ │ │ ├── Icon-App-29x29@1x.png
│ │ │ ├── Icon-App-29x29@2x.png
│ │ │ ├── Icon-App-29x29@3x.png
│ │ │ ├── Icon-App-40x40@1x.png
│ │ │ ├── Icon-App-40x40@2x.png
│ │ │ ├── Icon-App-40x40@3x.png
│ │ │ ├── Icon-App-50x50@1x.png
│ │ │ ├── Icon-App-50x50@2x.png
│ │ │ ├── Icon-App-57x57@1x.png
│ │ │ ├── Icon-App-57x57@2x.png
│ │ │ ├── Icon-App-60x60@2x.png
│ │ │ ├── Icon-App-60x60@3x.png
│ │ │ ├── Icon-App-72x72@1x.png
│ │ │ ├── Icon-App-72x72@2x.png
│ │ │ ├── Icon-App-76x76@1x.png
│ │ │ ├── Icon-App-76x76@2x.png
│ │ │ ├── Icon-App-1024x1024@1x.png
│ │ │ └── Icon-App-83.5x83.5@2x.png
│ ├── AppDelegate.swift
│ ├── Base.lproj
│ │ └── Main.storyboard
│ └── Info.plist
├── Runner.xcodeproj
│ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ ├── WorkspaceSettings.xcsettings
│ │ └── IDEWorkspaceChecks.plist
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── WorkspaceSettings.xcsettings
│ │ └── IDEWorkspaceChecks.plist
├── RunnerTests
│ └── RunnerTests.swift
└── .gitignore
├── scripts
├── autoroute.sh
├── clean.sh
├── lang.sh
└── build.sh
├── functions
├── tsconfig.dev.json
├── .gitignore
├── tsconfig.json
├── .eslintrc.js
└── package.json
├── .firebaserc
├── android
├── gradle.properties
├── app
│ ├── src
│ │ ├── main
│ │ │ ├── res
│ │ │ │ ├── mipmap-hdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-mdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── mipmap-xxxhdpi
│ │ │ │ │ └── ic_launcher.png
│ │ │ │ ├── drawable
│ │ │ │ │ └── launch_background.xml
│ │ │ │ ├── drawable-v21
│ │ │ │ │ └── launch_background.xml
│ │ │ │ ├── values
│ │ │ │ │ └── styles.xml
│ │ │ │ └── values-night
│ │ │ │ │ └── styles.xml
│ │ │ ├── kotlin
│ │ │ │ └── com
│ │ │ │ │ └── google
│ │ │ │ │ └── recommender_app
│ │ │ │ │ └── solution_challenge_2023_recommender_app
│ │ │ │ │ └── MainActivity.kt
│ │ │ └── AndroidManifest.xml
│ │ ├── debug
│ │ │ └── AndroidManifest.xml
│ │ └── profile
│ │ │ └── AndroidManifest.xml
│ └── build.gradle
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
├── .gitignore
├── build.gradle
└── settings.gradle
├── preview
├── dark
│ ├── auth.png
│ ├── pdf.png
│ ├── post.png
│ ├── image.png
│ ├── profile.png
│ ├── search.png
│ ├── splash.png
│ ├── video.png
│ ├── category.png
│ ├── onboard1.png
│ ├── onboard2.png
│ ├── onboard3.png
│ ├── onboard4.png
│ ├── onboard5.png
│ ├── register.png
│ ├── settings.png
│ ├── leaderboard_problem.png
│ └── leaderboard_solution.png
└── light
│ ├── pdf.png
│ ├── auth.png
│ ├── image.png
│ ├── post.png
│ ├── search.png
│ ├── splash.png
│ ├── video.png
│ ├── category.png
│ ├── onboard1.png
│ ├── onboard2.png
│ ├── onboard3.png
│ ├── onboard4.png
│ ├── onboard5.png
│ ├── profile.png
│ ├── register.png
│ ├── settings.png
│ ├── leaderboard_problem.png
│ └── leaderboard_solution.png
├── assets
└── image
│ ├── apple.png
│ ├── google.png
│ └── launcher.png
├── lib
├── feature
│ ├── App
│ │ ├── presentation
│ │ │ ├── pages
│ │ │ │ ├── index.dart
│ │ │ │ ├── Leaderboard
│ │ │ │ │ └── mixin
│ │ │ │ │ │ ├── leaderboard_mixin.dart
│ │ │ │ │ │ ├── leaderboard_suggest_mixin.dart
│ │ │ │ │ │ └── leaderboard_problem_mixin.dart
│ │ │ │ ├── Home
│ │ │ │ │ └── mixin
│ │ │ │ │ │ └── home_page_mixin.dart
│ │ │ │ ├── Category
│ │ │ │ │ ├── mixin
│ │ │ │ │ │ ├── category_mixin.dart
│ │ │ │ │ │ └── category_body_mixin.dart
│ │ │ │ │ ├── category_list_page_body.dart
│ │ │ │ │ └── category_list_page.dart
│ │ │ │ ├── Profile
│ │ │ │ │ ├── mixin
│ │ │ │ │ │ └── profile_mixin.dart
│ │ │ │ │ └── profile_page.dart
│ │ │ │ ├── Post
│ │ │ │ │ └── post_page.dart
│ │ │ │ ├── Suggest
│ │ │ │ │ └── comment_suggest_page.dart
│ │ │ │ ├── Settings
│ │ │ │ │ └── settings_language_options.dart
│ │ │ │ ├── Problem
│ │ │ │ │ ├── mixin
│ │ │ │ │ │ └── comment_problem_page_mixin.dart
│ │ │ │ │ └── comment_problem_suggest.dart
│ │ │ │ └── Search
│ │ │ │ │ └── mixin
│ │ │ │ │ └── search_mixin.dart
│ │ │ ├── main
│ │ │ │ ├── widget
│ │ │ │ │ ├── bottom_nav_bar_destinations.dart
│ │ │ │ │ └── bottom_nav_bar.dart
│ │ │ │ └── main_wrapper.dart
│ │ │ ├── bloc
│ │ │ │ ├── bloc_search
│ │ │ │ │ ├── search_event.dart
│ │ │ │ │ └── search_state.dart
│ │ │ │ ├── solutionCardCubit
│ │ │ │ │ ├── solution_card_state.dart
│ │ │ │ │ └── solution_card_cubit.dart
│ │ │ │ ├── cubit_profile
│ │ │ │ │ ├── profile_state.dart
│ │ │ │ │ └── profile_cubit.dart
│ │ │ │ ├── cubit_category
│ │ │ │ │ ├── category_state.dart
│ │ │ │ │ └── category_cubit.dart
│ │ │ │ ├── cubit_home_lastSent
│ │ │ │ │ ├── home_last_sent_state.dart
│ │ │ │ │ └── home_last_sent_cubit.dart
│ │ │ │ ├── problemCardCubit
│ │ │ │ │ ├── problem_card_state.dart
│ │ │ │ │ └── problem_card_cubit.dart
│ │ │ │ ├── cubit_comment_problem
│ │ │ │ │ └── comment_problem_state.dart
│ │ │ │ ├── cubit_home_specialForYou
│ │ │ │ │ ├── home_special_for_you_state.dart
│ │ │ │ │ └── home_special_for_you_cubit.dart
│ │ │ │ ├── cubit_leaderboard_problem
│ │ │ │ │ ├── leaderboard_problem_state.dart
│ │ │ │ │ └── leaderboard_problem_cubit.dart
│ │ │ │ ├── cubit_leaderboard_suggest
│ │ │ │ │ ├── leaderboard_suggest_state.dart
│ │ │ │ │ └── leaderboard_suggest_cubit.dart
│ │ │ │ └── cubit_profile_entity
│ │ │ │ │ └── profile_entity_cubit.dart
│ │ │ └── widget
│ │ │ │ ├── floatingActionButton.dart
│ │ │ │ ├── network_image_hero.dart
│ │ │ │ ├── sliver_appbar.dart
│ │ │ │ ├── category_card.dart
│ │ │ │ └── frame_widget.dart
│ │ └── data
│ │ │ └── models
│ │ │ └── category_card_model.dart
│ ├── Splash
│ │ ├── cubit
│ │ │ └── splash_finished_cubit.dart
│ │ └── presentation
│ │ │ ├── mixin
│ │ │ └── splash_mixin.dart
│ │ │ └── pages
│ │ │ └── splash_page.dart
│ ├── Auth
│ │ ├── domain
│ │ │ ├── usecases
│ │ │ │ ├── sign_out.dart
│ │ │ │ ├── is_sign_in.dart
│ │ │ │ ├── user_usecase.dart
│ │ │ │ ├── sign_in_with_google_usecase.dart
│ │ │ │ ├── sign_in_with_auth_credential.dart
│ │ │ │ ├── sign_in_with_email_usecase.dart
│ │ │ │ ├── sign_up_with_email_usecase.dart
│ │ │ │ └── get_current_uid_usecase.dart
│ │ │ └── repository
│ │ │ │ └── auth_repository.dart
│ │ ├── presentation
│ │ │ ├── bloc
│ │ │ │ ├── auth_firebase_bloc
│ │ │ │ │ ├── auth_firebase_event.dart
│ │ │ │ │ └── auth_firebase_state.dart
│ │ │ │ ├── auth_page_bloc
│ │ │ │ │ ├── auth_page_state.dart
│ │ │ │ │ ├── auth_page_event.dart
│ │ │ │ │ └── auth_page_bloc.dart
│ │ │ │ └── auth_register_bloc
│ │ │ │ │ ├── auth_register_state.dart
│ │ │ │ │ ├── auth_register_event.dart
│ │ │ │ │ └── auth_register_bloc.dart
│ │ │ └── widget
│ │ │ │ ├── custom_button.dart
│ │ │ │ └── square_box.dart
│ │ └── data
│ │ │ └── repository
│ │ │ └── auth_repository_impl.dart
│ ├── Services
│ │ └── domain
│ │ │ ├── usecases
│ │ │ ├── delete_model_usecase.dart
│ │ │ ├── translate_text_usecase.dart
│ │ │ ├── is_model_downloaded_usecase.dart
│ │ │ ├── download_model_usecase.dart
│ │ │ ├── get_geo_fire_point_usecase.dart
│ │ │ └── get_searched_comments.dart
│ │ │ └── repository
│ │ │ └── services_repository.dart
│ ├── Onboard
│ │ ├── onboard_injection_container.dart
│ │ └── presentation
│ │ │ ├── pages
│ │ │ └── mixin
│ │ │ │ └── onboard_page_mixin.dart
│ │ │ ├── cubit
│ │ │ ├── onboard_cubit.dart
│ │ │ └── onboard_state.dart
│ │ │ └── widgets
│ │ │ └── page_content_list.dart
│ └── Firestorage
│ │ ├── domain
│ │ ├── usecases
│ │ │ ├── select_files_usecase.dart
│ │ │ ├── get_profile_usecase.dart
│ │ │ ├── get_comment_problem_usecase.dart
│ │ │ ├── delete_profile_usecase.dart
│ │ │ ├── get_comment_suggestion_usecase.dart
│ │ │ ├── delete_comment_problem_usecase.dart
│ │ │ ├── delete_comment_suggestion_usecase.dart
│ │ │ ├── profile_last_looked_contents_usecase.dart
│ │ │ ├── comment_problem_like_usecase.dart
│ │ │ ├── comment_solution_like_usecase.dart
│ │ │ ├── upload_files_usecase.dart
│ │ │ ├── create_report_usecase.dart
│ │ │ ├── update_profile_usecase.dart
│ │ │ ├── create_profile_usecase.dart
│ │ │ ├── create_comment_problem_usecase.dart
│ │ │ ├── update_comment_problem_usecase.dart
│ │ │ ├── create_comment_suggestion_usecase.dart
│ │ │ ├── update_comment_suggestion_usecase.dart
│ │ │ ├── get_comment_problem_list_searched_usecase.dart
│ │ │ ├── get_comment_problem_list_last_usecase.dart
│ │ │ ├── get_comment_problem_list_according_to_likecount_usecase.dart
│ │ │ ├── get_comment_suggest_list_according_to_comment_id_usecase.dart
│ │ │ ├── get_comment_problem_list_according_to_tags_usecase.dart
│ │ │ ├── get_comment_suggest_list_according_to_likecount_usecase.dart
│ │ │ ├── get_comment_problem_list_according_to_category_usecase.dart
│ │ │ ├── get_comment_problem_list_according_to_profileID.dart
│ │ │ └── index.dart
│ │ └── entities
│ │ │ ├── report_entities.dart
│ │ │ └── comments_suggestions_entities.dart
│ │ └── data
│ │ └── models
│ │ └── report_model.dart
├── core
│ ├── init
│ │ ├── theme
│ │ │ ├── custom_theme.dart
│ │ │ ├── dark
│ │ │ │ ├── dark_theme.dart
│ │ │ │ └── dark_schema.dart
│ │ │ ├── light
│ │ │ │ ├── light_theme.dart
│ │ │ │ └── light_schema.dart
│ │ │ └── cubit
│ │ │ │ ├── app_theme_state.dart
│ │ │ │ └── app_theme_cubit.dart
│ │ ├── lang
│ │ │ └── language.dart
│ │ └── cache
│ │ │ └── hive_cache_manager.dart
│ ├── utility
│ │ ├── helper_class.dart
│ │ ├── mixin
│ │ │ ├── mounted_mixin.dart
│ │ │ └── loading_mixin.dart
│ │ └── custom_scroll.dart
│ ├── constants
│ │ ├── lottie
│ │ │ └── lottie_constants.dart
│ │ ├── settings
│ │ │ └── settings_constants.dart
│ │ ├── image
│ │ │ └── image_constants.dart
│ │ ├── extension
│ │ │ ├── list_extension.dart
│ │ │ ├── string_extension.dart
│ │ │ ├── lang_extension.dart
│ │ │ ├── time_extension.dart
│ │ │ └── padding.dart
│ │ ├── enums
│ │ │ ├── language.dart
│ │ │ └── firestore_constants.dart
│ │ ├── navigation
│ │ │ └── navigation_constants.dart
│ │ ├── material3
│ │ │ ├── text_style_constant.dart
│ │ │ └── material3_desing_constant.dart
│ │ └── firestore
│ │ │ └── firestore_constants.dart
│ ├── logger
│ │ └── app_logger.dart
│ └── errors
│ │ └── exception
│ │ └── exception.dart
└── injection.dart
├── firebase.json
├── .metadata
├── test
└── widget_test.dart
├── .gitignore
├── .github
└── workflows
│ └── dart.yml
└── analysis_options.yaml
/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Generated.xcconfig"
2 |
--------------------------------------------------------------------------------
/scripts/autoroute.sh:
--------------------------------------------------------------------------------
1 | flutter packages pub run build_runner build
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/functions/tsconfig.dev.json:
--------------------------------------------------------------------------------
1 | {
2 | "include": [
3 | ".eslintrc.js"
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/.firebaserc:
--------------------------------------------------------------------------------
1 | {
2 | "projects": {
3 | "default": "recommenderappfikiratlas"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/scripts/clean.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | flutter clean; cd ios; pod deintegrate; pod install; cd..; flutter pub get
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx4G
2 | android.useAndroidX=true
3 | android.enableJetifier=true
4 |
--------------------------------------------------------------------------------
/preview/dark/auth.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/dark/auth.png
--------------------------------------------------------------------------------
/preview/dark/pdf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/dark/pdf.png
--------------------------------------------------------------------------------
/preview/dark/post.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/dark/post.png
--------------------------------------------------------------------------------
/preview/light/pdf.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/light/pdf.png
--------------------------------------------------------------------------------
/scripts/lang.sh:
--------------------------------------------------------------------------------
1 | flutter pub run easy_localization:generate -O lib/core/init/lang -f keys -S assets/translations -o locale_keys.g.dart
--------------------------------------------------------------------------------
/assets/image/apple.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/assets/image/apple.png
--------------------------------------------------------------------------------
/assets/image/google.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/assets/image/google.png
--------------------------------------------------------------------------------
/preview/dark/image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/dark/image.png
--------------------------------------------------------------------------------
/preview/dark/profile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/dark/profile.png
--------------------------------------------------------------------------------
/preview/dark/search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/dark/search.png
--------------------------------------------------------------------------------
/preview/dark/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/dark/splash.png
--------------------------------------------------------------------------------
/preview/dark/video.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/dark/video.png
--------------------------------------------------------------------------------
/preview/light/auth.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/light/auth.png
--------------------------------------------------------------------------------
/preview/light/image.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/light/image.png
--------------------------------------------------------------------------------
/preview/light/post.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/light/post.png
--------------------------------------------------------------------------------
/preview/light/search.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/light/search.png
--------------------------------------------------------------------------------
/preview/light/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/light/splash.png
--------------------------------------------------------------------------------
/preview/light/video.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/light/video.png
--------------------------------------------------------------------------------
/assets/image/launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/assets/image/launcher.png
--------------------------------------------------------------------------------
/preview/dark/category.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/dark/category.png
--------------------------------------------------------------------------------
/preview/dark/onboard1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/dark/onboard1.png
--------------------------------------------------------------------------------
/preview/dark/onboard2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/dark/onboard2.png
--------------------------------------------------------------------------------
/preview/dark/onboard3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/dark/onboard3.png
--------------------------------------------------------------------------------
/preview/dark/onboard4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/dark/onboard4.png
--------------------------------------------------------------------------------
/preview/dark/onboard5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/dark/onboard5.png
--------------------------------------------------------------------------------
/preview/dark/register.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/dark/register.png
--------------------------------------------------------------------------------
/preview/dark/settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/dark/settings.png
--------------------------------------------------------------------------------
/preview/light/category.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/light/category.png
--------------------------------------------------------------------------------
/preview/light/onboard1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/light/onboard1.png
--------------------------------------------------------------------------------
/preview/light/onboard2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/light/onboard2.png
--------------------------------------------------------------------------------
/preview/light/onboard3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/light/onboard3.png
--------------------------------------------------------------------------------
/preview/light/onboard4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/light/onboard4.png
--------------------------------------------------------------------------------
/preview/light/onboard5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/light/onboard5.png
--------------------------------------------------------------------------------
/preview/light/profile.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/light/profile.png
--------------------------------------------------------------------------------
/preview/light/register.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/light/register.png
--------------------------------------------------------------------------------
/preview/light/settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/light/settings.png
--------------------------------------------------------------------------------
/preview/dark/leaderboard_problem.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/dark/leaderboard_problem.png
--------------------------------------------------------------------------------
/preview/dark/leaderboard_solution.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/dark/leaderboard_solution.png
--------------------------------------------------------------------------------
/preview/light/leaderboard_problem.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/light/leaderboard_problem.png
--------------------------------------------------------------------------------
/preview/light/leaderboard_solution.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/preview/light/leaderboard_solution.png
--------------------------------------------------------------------------------
/scripts/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | if [ "$1" = "force" ]
4 | then
5 | dart run build_runner build --delete-conflicting-outputs
6 | else
7 | dart run build_runner build
8 | fi
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/HasancanCakicioglu/Solution_Challenge_2023_FikirAtlasi/HEAD/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/functions/.gitignore:
--------------------------------------------------------------------------------
1 | # Compiled JavaScript files
2 | lib/**/*.js
3 | lib/**/*.js.map
4 |
5 | # TypeScript v1 declaration files
6 | typings/
7 |
8 | # Node.js dependency directory
9 | node_modules/
10 |
11 | # Dotenv
12 | .env
13 |
--------------------------------------------------------------------------------
/lib/feature/App/presentation/pages/index.dart:
--------------------------------------------------------------------------------
1 | export 'Category/category_page.dart';
2 | export 'Home/home_page.dart';
3 | export 'Leaderboard/leaderboard_page.dart';
4 | export 'Post/post_page.dart';
5 | export 'Search/search_page.dart';
6 |
7 |
--------------------------------------------------------------------------------
/lib/core/init/theme/custom_theme.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | /// Custom Theme
4 | abstract class CustomTheme {
5 | ThemeData get themeData;
6 |
7 | FloatingActionButtonThemeData get floatingActionButtonThemeData;
8 | }
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | zipStoreBase=GRADLE_USER_HOME
4 | zipStorePath=wrapper/dists
5 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip
6 |
--------------------------------------------------------------------------------
/lib/core/utility/helper_class.dart:
--------------------------------------------------------------------------------
1 | import 'package:uuid/uuid.dart';
2 |
3 | /// Helper class
4 | class HelperClass {
5 | static const Uuid _uuid = Uuid();
6 |
7 | /// Get a unique identifier
8 | static String getUuid() {
9 | return _uuid.v4();
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/lib/core/constants/lottie/lottie_constants.dart:
--------------------------------------------------------------------------------
1 |
2 | /// Lottie animation constants
3 | abstract final class LottieConstants {
4 | static String get splashScreen => toLottie('splash_screen_building');
5 |
6 | static String toLottie(String name) => 'assets/lottie/$name.json';
7 | }
8 |
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/com/google/recommender_app/solution_challenge_2023_recommender_app/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.google.recommender_app.solution_challenge_2023_recommender_app
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity() {
6 | }
7 |
--------------------------------------------------------------------------------
/lib/core/constants/settings/settings_constants.dart:
--------------------------------------------------------------------------------
1 |
2 | /// [AppSettingsConstants] is a class that contains all the constants related to the app settings.
3 | class AppSettingsConstants {
4 | static const String cacheSettingsBoxName = "App_Settings";
5 | static const String themeMode = "isLight";
6 |
7 | }
--------------------------------------------------------------------------------
/lib/feature/Splash/cubit/splash_finished_cubit.dart:
--------------------------------------------------------------------------------
1 | import 'package:bloc/bloc.dart';
2 |
3 | class SplashFinishedControllerCubit extends Cubit {
4 | SplashFinishedControllerCubit() : super(false);
5 |
6 | void splashFinishedAtLeastOnce() {
7 | emit(true);
8 | }
9 | }
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/lib/core/constants/image/image_constants.dart:
--------------------------------------------------------------------------------
1 | /// Image Constants
2 | abstract final class ImageConstants {
3 | ImageConstants._init();
4 |
5 | static String get google => toPng('google');
6 | static String get apple => toPng('apple');
7 |
8 | static String toPng(String name) => 'assets/image/$name.png';
9 | }
10 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/lib/core/constants/extension/list_extension.dart:
--------------------------------------------------------------------------------
1 |
2 | /// List extension to add all elements if not contains
3 | extension ListExtension on List {
4 | void addAllIfNotContains(List elements) {
5 | for (var element in elements) {
6 | if (!contains(element)) {
7 | add(element);
8 | }
9 | }
10 | }
11 | }
--------------------------------------------------------------------------------
/functions/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "module": "commonjs",
4 | "noImplicitReturns": true,
5 | "noUnusedLocals": true,
6 | "outDir": "lib",
7 | "sourceMap": true,
8 | "strict": true,
9 | "target": "es2017",
10 | },
11 | "compileOnSave": true,
12 | "include": [
13 | "src"
14 | ]
15 | }
16 |
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /local.properties
7 | GeneratedPluginRegistrant.java
8 |
9 | # Remember to never publicly share your keystore.
10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
11 | key.properties
12 | **/*.keystore
13 | **/*.jks
14 |
--------------------------------------------------------------------------------
/ios/RunnerTests/RunnerTests.swift:
--------------------------------------------------------------------------------
1 | import Flutter
2 | import UIKit
3 | import XCTest
4 |
5 | class RunnerTests: XCTestCase {
6 |
7 | func testExample() {
8 | // If you add code to the Runner application, consider adding tests here.
9 | // See https://developer.apple.com/documentation/xctest for more information about using XCTest.
10 | }
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/lib/feature/Auth/domain/usecases/sign_out.dart:
--------------------------------------------------------------------------------
1 |
2 |
3 | import 'package:solution_challenge_2023_recommender_app/feature/Auth/domain/repository/auth_repository.dart';
4 |
5 | class SignOutUsecase{
6 | final AuthRepository repository;
7 |
8 | SignOutUsecase(this.repository);
9 |
10 | Future call()async{
11 | return await repository.signOut();
12 | }
13 | }
--------------------------------------------------------------------------------
/lib/feature/Auth/domain/usecases/is_sign_in.dart:
--------------------------------------------------------------------------------
1 |
2 |
3 | import 'package:solution_challenge_2023_recommender_app/feature/Auth/domain/repository/auth_repository.dart';
4 |
5 | class IsSignInUsecase{
6 | final AuthRepository repository;
7 |
8 | IsSignInUsecase(this.repository);
9 |
10 | Future call()async{
11 | return await repository.isSignIn();
12 | }
13 | }
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md:
--------------------------------------------------------------------------------
1 | # Launch Screen Assets
2 |
3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory.
4 |
5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
--------------------------------------------------------------------------------
/lib/feature/Auth/domain/usecases/user_usecase.dart:
--------------------------------------------------------------------------------
1 | import 'package:firebase_auth/firebase_auth.dart';
2 | import 'package:solution_challenge_2023_recommender_app/feature/Auth/domain/repository/auth_repository.dart';
3 |
4 | class UserUsecase{
5 | final AuthRepository repository;
6 |
7 | UserUsecase(this.repository);
8 |
9 | Stream call(){
10 | return repository.user;
11 | }
12 | }
--------------------------------------------------------------------------------
/lib/feature/Auth/domain/usecases/sign_in_with_google_usecase.dart:
--------------------------------------------------------------------------------
1 |
2 |
3 | import 'package:solution_challenge_2023_recommender_app/feature/Auth/domain/repository/auth_repository.dart';
4 |
5 | class SignInWithGoogleUsecase{
6 | final AuthRepository repository;
7 |
8 | SignInWithGoogleUsecase(this.repository);
9 |
10 | Future call()async{
11 | return await repository.signInWithGoogle();
12 | }
13 | }
--------------------------------------------------------------------------------
/lib/core/utility/mixin/mounted_mixin.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/foundation.dart';
2 | import 'package:flutter/material.dart';
3 |
4 | /// Stateful widget mixin to handle loading state
5 | mixin MountedMixin on State {
6 | /// manage your mounted state
7 | Future safeOperation(AsyncCallback callback) async {
8 | if (!mounted) return;
9 | await callback.call();
10 | }
11 | }
--------------------------------------------------------------------------------
/lib/feature/Services/domain/usecases/delete_model_usecase.dart:
--------------------------------------------------------------------------------
1 | import 'package:solution_challenge_2023_recommender_app/feature/Services/domain/repository/services_repository.dart';
2 |
3 | class DeleteModelUsecase {
4 | final ServicesRepository repository;
5 |
6 | DeleteModelUsecase(this.repository);
7 |
8 | Future call(String model) async {
9 | return await repository.deleteModel(model);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/lib/feature/Services/domain/usecases/translate_text_usecase.dart:
--------------------------------------------------------------------------------
1 | import 'package:solution_challenge_2023_recommender_app/feature/Services/domain/repository/services_repository.dart';
2 |
3 | class TranslateTextUsecase {
4 | final ServicesRepository repository;
5 |
6 | TranslateTextUsecase(this.repository);
7 |
8 | Future call(String text) async {
9 | return await repository.translateText(text);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/lib/feature/Services/domain/usecases/is_model_downloaded_usecase.dart:
--------------------------------------------------------------------------------
1 | import 'package:solution_challenge_2023_recommender_app/feature/Services/domain/repository/services_repository.dart';
2 |
3 | class IsModelDownloadedUsecase {
4 | final ServicesRepository repository;
5 |
6 | IsModelDownloadedUsecase(this.repository);
7 |
8 | Future call(String model) async {
9 | return await repository.isModelDownloaded(model);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/lib/feature/Onboard/onboard_injection_container.dart:
--------------------------------------------------------------------------------
1 | import 'package:solution_challenge_2023_recommender_app/feature/Onboard/presentation/cubit/onboard_cubit.dart';
2 | import 'package:solution_challenge_2023_recommender_app/injection.dart';
3 |
4 | /// Function to set up dependency injection for the OnBoard feature
5 | void onBoardInjectionContainer() {
6 | // Cubit or Bloc
7 | sl.registerFactory(
8 | () => OnBoardCubit());
9 | }
10 |
--------------------------------------------------------------------------------
/firebase.json:
--------------------------------------------------------------------------------
1 | {
2 | "functions": [
3 | {
4 | "source": "functions",
5 | "location": "europe-west3",
6 | "codebase": "default",
7 | "ignore": [
8 | "node_modules",
9 | ".git",
10 | "firebase-debug.log",
11 | "firebase-debug.*.log"
12 | ],
13 | "predeploy": [
14 | "npm --prefix \"$RESOURCE_DIR\" run lint",
15 | "npm --prefix \"$RESOURCE_DIR\" run build"
16 | ]
17 | }
18 | ]
19 | }
20 |
--------------------------------------------------------------------------------
/lib/feature/Auth/presentation/bloc/auth_firebase_bloc/auth_firebase_event.dart:
--------------------------------------------------------------------------------
1 | part of 'auth_firebase_bloc.dart';
2 |
3 | /// Represents the events for user authentication.
4 | sealed class AuthFirebaseEvent extends Equatable {
5 | const AuthFirebaseEvent();
6 |
7 | @override
8 | List