├── app
├── .gitignore
├── src
│ └── main
│ │ ├── res
│ │ ├── drawable
│ │ │ ├── ic_sett_back_white.png
│ │ │ ├── ic_tracking_mode_auto.png
│ │ │ ├── ic_tracking_mode_demand.png
│ │ │ ├── ic_tracking_mode_disable.png
│ │ │ ├── circle_setting_tracking_mode_disable.xml
│ │ │ └── ic_check.xml
│ │ ├── drawable-nodpi
│ │ │ ├── bg_onboard_fourth.webp
│ │ │ ├── bg_onboard_second.webp
│ │ │ └── bg_onboard_third.webp
│ │ ├── layout
│ │ │ └── main_activity.xml
│ │ └── xml
│ │ │ └── network_security_config.xml
│ │ └── java
│ │ └── com
│ │ └── telematics
│ │ └── zenroad
│ │ ├── MainViewModel.kt
│ │ ├── extention
│ │ └── Extentions.kt
│ │ ├── MainApplication.kt
│ │ ├── ui
│ │ ├── onboarding
│ │ │ └── OnboardingViewModel.kt
│ │ ├── login
│ │ │ └── LoginViewModel.kt
│ │ └── settings
│ │ │ └── company_id
│ │ │ └── CompanyIdViewModel.kt
│ │ └── di
│ │ └── DatabaseModule.kt
└── proguard-rules.pro
├── img_readme
├── 1.txt
├── 1.png
├── 2.png
├── 3.png
├── 4.png
├── 5.png
├── 6.png
├── 7.png
├── 8.png
├── 9.png
├── 10.png
├── 11.png
├── 12.png
├── 13.png
├── 14.png
├── here_step_1.png
├── here_step_2.png
├── here_step_3.png
├── here_step_4.png
├── here_step_5.png
├── here_step_6.png
├── telematicsapp.jpeg
├── instruction_map_1.png
├── instruction_map_2.png
├── instruction_map_3.png
├── instruction_map_4.png
├── instruction_map_5.png
├── instruction_map_6.png
└── instruction_map_7.png
├── core
└── sdkhelper
│ ├── .gitignore
│ ├── consumer-rules.pro
│ ├── src
│ └── main
│ │ ├── AndroidManifest.xml
│ │ └── res
│ │ └── values
│ │ └── strings.xml
│ ├── build.gradle.kts
│ └── proguard-rules.pro
├── content
├── src
│ └── main
│ │ ├── AndroidManifest.xml
│ │ ├── res
│ │ ├── drawable
│ │ │ ├── bg_dash.webp
│ │ │ ├── ic_auth_logo.webp
│ │ │ ├── ic_menu_dash_on.png
│ │ │ ├── ic_onboard_logo.png
│ │ │ ├── ic_wizard_plus.png
│ │ │ ├── bg_onboard_first.webp
│ │ │ ├── ic_menu_dash_off.png
│ │ │ ├── ic_account_btn_edit.png
│ │ │ ├── ic_account_btn_photo.png
│ │ │ ├── ic_menu_profile_off.png
│ │ │ ├── ic_menu_profile_on.png
│ │ │ ├── ic_no_avatar_white.webp
│ │ │ ├── ic_wizard_logo_back.webp
│ │ │ ├── ic_wizard_verified.png
│ │ │ ├── ic_menu_leaderboard_on.png
│ │ │ ├── ic_sett_measure_large.png
│ │ │ ├── ic_sett_profile_large.png
│ │ │ ├── ic_menu_leaderboard_off.png
│ │ │ ├── ic_account_btn_edit_pressed.png
│ │ │ ├── ic_account_btn_photo_pressed.png
│ │ │ ├── splash_screen.xml
│ │ │ ├── ic_def_btn_norm.xml
│ │ │ ├── ic_def_btn_orange.xml
│ │ │ ├── ic_dot_red.xml
│ │ │ ├── ic_def_btn_disable.xml
│ │ │ ├── ic_dot_green.xml
│ │ │ ├── ic_dot_orange.xml
│ │ │ ├── ic_dot_yellow.xml
│ │ │ ├── ic_slide_dot_checked.xml
│ │ │ ├── ic_sett_measure.xml
│ │ │ ├── ic_sett_profile.xml
│ │ │ ├── ic_slide_dot_unchecked.xml
│ │ │ ├── ic_custom_dialog_bubble.xml
│ │ │ ├── ic_def_btn_press.xml
│ │ │ ├── dr_login_email_rect.xml
│ │ │ ├── ic_menu_feed.xml
│ │ │ ├── ic_menu_dashboard.xml
│ │ │ ├── ic_menu_profile.xml
│ │ │ ├── selector_primary_color.xml
│ │ │ ├── ic_menu_leaderboard.xml
│ │ │ ├── selector_account_edit_btn.xml
│ │ │ ├── selector_account_photo_btn.xml
│ │ │ ├── ic_arrow_back_24dp.xml
│ │ │ ├── selector_default_btn.xml
│ │ │ ├── selector_orange_btn.xml
│ │ │ ├── radio_group_rounded_background.xml
│ │ │ ├── ic_next.xml
│ │ │ ├── ic_rect_checkbox.xml
│ │ │ ├── ic_rect_checkbox_empty.xml
│ │ │ ├── ic_back.xml
│ │ │ ├── ic_exit.xml
│ │ │ ├── ic_rect_checkbox_fill.xml
│ │ │ ├── ic_dash_arrow_down_gray.xml
│ │ │ ├── ic_event_trash.xml
│ │ │ ├── ic_edit.xml
│ │ │ ├── ic_leaderboard_more.xml
│ │ │ ├── ic_arrow_double_back.xml
│ │ │ └── ic_login_email.xml
│ │ ├── font
│ │ │ ├── open_sans_bold.ttf
│ │ │ ├── open_sans_light.ttf
│ │ │ ├── open_sans_regular.ttf
│ │ │ ├── spen_sans_semi_bold.ttf
│ │ │ └── open_sans_extra_bold.ttf
│ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_round.png
│ │ │ └── ic_launcher_foreground.png
│ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_round.png
│ │ │ └── ic_launcher_foreground.png
│ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_round.png
│ │ │ └── ic_launcher_foreground.png
│ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_round.png
│ │ │ └── ic_launcher_foreground.png
│ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_launcher_round.png
│ │ │ └── ic_launcher_foreground.png
│ │ ├── drawable-hdpi
│ │ │ ├── ic_tracking_sdk_status_bar.png
│ │ │ └── ic_tracking_sdk_notification.png
│ │ ├── drawable-mdpi
│ │ │ ├── ic_tracking_sdk_status_bar.png
│ │ │ └── ic_tracking_sdk_notification.png
│ │ ├── drawable-xhdpi
│ │ │ ├── ic_tracking_sdk_status_bar.png
│ │ │ └── ic_tracking_sdk_notification.png
│ │ ├── drawable-xxhdpi
│ │ │ ├── ic_rotate_left_white_24dp.png
│ │ │ ├── ic_rotate_right_white_24dp.png
│ │ │ ├── ic_tracking_sdk_notification.png
│ │ │ └── ic_tracking_sdk_status_bar.png
│ │ ├── drawable-xxxhdpi
│ │ │ ├── ic_dash_arrow_right_gray.png
│ │ │ ├── ic_tracking_sdk_status_bar.png
│ │ │ ├── ic_tracking_sdk_notification.png
│ │ │ └── ic_wizard_back_bubble_smallest.png
│ │ ├── anim
│ │ │ ├── fade_in.xml
│ │ │ ├── fade_out.xml
│ │ │ ├── slide_in.xml
│ │ │ └── slide_out.xml
│ │ ├── mipmap-anydpi-v26
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ └── color
│ │ │ ├── bottom_menu_item_text_sel.xml
│ │ │ ├── default_button_text_sel.xml
│ │ │ └── menu_icon_color_sel.xml
│ │ └── java
│ │ └── com
│ │ └── telematics
│ │ └── content
│ │ └── utils
│ │ └── TryOpenLink.kt
└── build.gradle.kts
├── domain
├── src
│ └── main
│ │ ├── AndroidManifest.xml
│ │ └── java
│ │ └── com
│ │ └── telematics
│ │ └── domain
│ │ ├── model
│ │ ├── LoginType.kt
│ │ ├── tracking
│ │ │ ├── TripImageHolder.kt
│ │ │ ├── ChangeTripEvent.kt
│ │ │ ├── ElmDevice.kt
│ │ │ ├── ElmManagerLinkingResult.kt
│ │ │ ├── TripDetailsAddressesData.kt
│ │ │ └── TripPointData.kt
│ │ ├── reward
│ │ │ ├── DailyLimitData.kt
│ │ │ ├── DriveCoinsDuration.kt
│ │ │ ├── DriveCoinsTotalData.kt
│ │ │ ├── StreakCarType.kt
│ │ │ ├── DriveCoinsDailyData.kt
│ │ │ └── Streak.kt
│ │ ├── statistics
│ │ │ ├── DriveCoins.kt
│ │ │ ├── ScoreType.kt
│ │ │ ├── StatisticEcoScoringTabData.kt
│ │ │ ├── StatisticEcoScoringMain.kt
│ │ │ ├── UserStatisticsIndividualData.kt
│ │ │ ├── UserStatisticsScoreData.kt
│ │ │ ├── StatisticEcoScoringTabsData.kt
│ │ │ ├── StatisticScoringData.kt
│ │ │ ├── DrivingDetailsData.kt
│ │ │ └── ScoreTypeModel.kt
│ │ ├── carservice
│ │ │ ├── ModelData.kt
│ │ │ ├── ManufacturerData.kt
│ │ │ └── Vehicle.kt
│ │ ├── company_id
│ │ │ └── InstanceName.kt
│ │ ├── authentication
│ │ │ ├── PhoneAuthResult.kt
│ │ │ └── PhoneAuthCallback.kt
│ │ ├── RegistrationApiData.kt
│ │ ├── on_demand
│ │ │ ├── OnDemandJobState.kt
│ │ │ ├── TrackingState.kt
│ │ │ ├── OnDemandState.kt
│ │ │ └── DashboardOnDemandJob.kt
│ │ ├── SessionData.kt
│ │ └── leaderboard
│ │ │ ├── LeaderboardType.kt
│ │ │ ├── LeaderboardMemberData.kt
│ │ │ ├── LeaderboardUserItems.kt
│ │ │ └── LeaderboardUser.kt
│ │ └── repository
│ │ ├── LeaderboardRepo.kt
│ │ ├── SessionRepo.kt
│ │ ├── CarServiceRepo.kt
│ │ ├── OnDemandRepo.kt
│ │ ├── UserRepo.kt
│ │ ├── UserServicesRepo.kt
│ │ └── RewardRepo.kt
└── build.gradle.kts
├── authentication
├── src
│ └── main
│ │ ├── AndroidManifest.xml
│ │ └── java
│ │ └── com
│ │ └── telematics
│ │ └── authentication
│ │ ├── exception
│ │ ├── AuthException.kt
│ │ └── AuthErrorCode.kt
│ │ └── model
│ │ └── UserDatabase.kt
└── build.gradle.kts
├── features
├── dashboard
│ ├── src
│ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ └── res
│ │ │ ├── drawable
│ │ │ ├── ic_dash_land_green.png
│ │ │ ├── ic_on_demand_status.png
│ │ │ ├── ic_dash_arrow_up_gray.png
│ │ │ ├── ic_rewards_drivecoins.png
│ │ │ ├── ic_eco_scoring_tabs_bg.png
│ │ │ ├── ib_empty_dashboard_last_trip.png
│ │ │ ├── ic_dashboard_ecoscoring_hint_bubble.xml
│ │ │ ├── ic_def_btn_norm.xml
│ │ │ ├── ic_def_btn_disable.xml
│ │ │ ├── rank_background.xml
│ │ │ ├── btn_rectangle_red.xml
│ │ │ ├── ic_orange_btn_disable.xml
│ │ │ ├── ic_trip_circle_blue.xml
│ │ │ ├── ic_orange_btn_norm.xml
│ │ │ ├── btn_rectangle_green_bold.xml
│ │ │ ├── ic_rect_round_5dp.xml
│ │ │ ├── ic_event_trip_round_gray.xml
│ │ │ ├── ic_event_trip_round_green.xml
│ │ │ ├── ic_def_btn_press.xml
│ │ │ ├── ic_orange_btn_press.xml
│ │ │ ├── rect_fade_gradient.xml
│ │ │ ├── selector_default_btn.xml
│ │ │ ├── selector_default_btn_stroke.xml
│ │ │ ├── background_with_elevation.xml
│ │ │ ├── selector_orange_btn_stroke.xml
│ │ │ ├── ic_next.xml
│ │ │ ├── progress_bg.xml
│ │ │ └── ic_empty_dashboard_last_trip_warning.xml
│ │ │ ├── drawable-xxxhdpi
│ │ │ ├── ic_dash_fuel.png
│ │ │ ├── ic_dash_tyres.png
│ │ │ ├── ic_dash_brakes.png
│ │ │ └── ic_dash_depreciation.png
│ │ │ └── values
│ │ │ ├── themes.xml
│ │ │ └── dimens.xml
│ └── build.gradle.kts
├── reward
│ ├── src
│ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── res
│ │ │ ├── drawable
│ │ │ │ ├── ic_rewards_money_bg.png
│ │ │ │ ├── badge_tab_background.xml
│ │ │ │ ├── total_coins_background.xml
│ │ │ │ ├── drive_coins_arrow_top.xml
│ │ │ │ ├── ic_acceleration_arrow.xml
│ │ │ │ └── drive_coins_eco_score.xml
│ │ │ ├── navigation
│ │ │ │ └── reward_nav_graph.xml
│ │ │ └── layout
│ │ │ │ ├── fragment_reward_feature_host.xml
│ │ │ │ └── fragment_streaks.xml
│ │ │ └── java
│ │ │ └── com
│ │ │ └── telematics
│ │ │ └── features
│ │ │ └── reward
│ │ │ └── rewards
│ │ │ └── RewardViewModel.kt
│ └── build.gradle.kts
├── leaderboard
│ ├── src
│ │ └── main
│ │ │ ├── AndroidManifest.xml
│ │ │ ├── res
│ │ │ ├── drawable
│ │ │ │ ├── leader_graph.png
│ │ │ │ ├── ic_dash_arrow_right_gray.png
│ │ │ │ ├── ic_wizard_back_bubble_smallest.png
│ │ │ │ └── gradient_leadboard_current_user.xml
│ │ │ └── layout
│ │ │ │ ├── layout_item_leaderboard_placeholder.xml
│ │ │ │ ├── fragment_leaderboard_feature_host.xml
│ │ │ │ └── fragment_leaderboard_details_page.xml
│ │ │ └── java
│ │ │ └── com
│ │ │ └── telematics
│ │ │ └── features
│ │ │ └── leaderboard
│ │ │ ├── ui
│ │ │ └── leaderboard_details
│ │ │ │ └── LeaderboardDetailsViewModel.kt
│ │ │ └── LeaderboardFeatureHost.kt
│ └── build.gradle.kts
├── obd
│ ├── src
│ │ └── main
│ │ │ ├── res
│ │ │ ├── drawable
│ │ │ │ ├── odb_alert.png
│ │ │ │ ├── odb_success.png
│ │ │ │ ├── background_rounded.xml
│ │ │ │ ├── elm_selected_background.xml
│ │ │ │ └── obd_connected.xml
│ │ │ ├── values
│ │ │ │ └── themes.xml
│ │ │ └── layout
│ │ │ │ ├── vehicles_choose_item_view.xml
│ │ │ │ └── elm_device_item_view.xml
│ │ │ ├── java
│ │ │ └── ui
│ │ │ │ ├── step4_connect_device
│ │ │ │ └── DeviceConnectEnum.kt
│ │ │ │ ├── step2_wizard
│ │ │ │ └── ConnectVehicleEnum.kt
│ │ │ │ └── step_unknown_error
│ │ │ │ └── CouldNotConnectFragment.kt
│ │ │ └── AndroidManifest.xml
│ └── build.gradle.kts
├── account
│ ├── src
│ │ └── main
│ │ │ ├── res
│ │ │ ├── drawable
│ │ │ │ └── claim_icons_back.png
│ │ │ ├── drawable-xxxhdpi
│ │ │ │ ├── ic_wizard_phone.png
│ │ │ │ ├── ic_wizard_user.png
│ │ │ │ ├── ic_wizard_address.png
│ │ │ │ ├── ic_wizard_calendar.png
│ │ │ │ ├── ic_wizard_number.png
│ │ │ │ ├── ic_wizard_driving_licence.png
│ │ │ │ └── ic_wizard_email.xml
│ │ │ ├── layout
│ │ │ │ ├── fragment_account_feature_host.xml
│ │ │ │ ├── account_navigation_fragment.xml
│ │ │ │ └── vehicles_choose_item_view.xml
│ │ │ └── xml
│ │ │ │ └── file_paths.xml
│ │ │ └── java
│ │ │ └── com
│ │ │ └── telematics
│ │ │ └── features
│ │ │ └── account
│ │ │ └── AccountFeatureHost.kt
│ └── build.gradle.kts
└── feed
│ ├── src
│ └── main
│ │ ├── res
│ │ ├── drawable-hdpi
│ │ │ ├── ic_dot_a_trip.png
│ │ │ └── ic_dot_b_trip.png
│ │ ├── drawable-mdpi
│ │ │ ├── ic_dot_a_trip.png
│ │ │ └── ic_dot_b_trip.png
│ │ ├── drawable-xhdpi
│ │ │ ├── ic_dot_a_trip.png
│ │ │ └── ic_dot_b_trip.png
│ │ ├── drawable
│ │ │ ├── ib_feed_blur_trip.png
│ │ │ ├── ic_red_popup__cornering.png
│ │ │ ├── ic_red_popup__accleration.png
│ │ │ ├── ic_red_popup__deceleration.png
│ │ │ ├── ic_red_popup__distraction.png
│ │ │ ├── ic_yellow_popup__cornering.png
│ │ │ ├── ic_yellow_popup__acceleration.png
│ │ │ ├── ic_yellow_popup__deceleration.png
│ │ │ ├── ic_yellow_popup__distraction.png
│ │ │ ├── ic_event_trip_bubble_bg.xml
│ │ │ ├── ic_event_trip_bubble_type_bg.xml
│ │ │ ├── ic_event_trip_label_bg_green.xml
│ │ │ ├── ic_trip_circle_white.xml
│ │ │ ├── ic_event_trip_bubble_right_btn.xml
│ │ │ ├── cancel_background.xml
│ │ │ ├── ic_behavior_bubble.xml
│ │ │ ├── circle_background.xml
│ │ │ ├── ic_toast_success.xml
│ │ │ ├── feed_circle.xml
│ │ │ ├── ic_toast_error.xml
│ │ │ ├── background_with_elevation.xml
│ │ │ ├── ic_event_trip_round_gray.xml
│ │ │ ├── ic_event_trip_round_green.xml
│ │ │ ├── ic_trip_details_speed_hint.xml
│ │ │ ├── custom_info_bubble.xml
│ │ │ ├── ic_event_trip_bubble_taxi.xml
│ │ │ ├── ic_event_message_round.xml
│ │ │ ├── ic_dot_a_trip_v.xml
│ │ │ ├── ic_empty_dashboard_last_trip_warning.xml
│ │ │ └── ic_dash_arrow_up_gray.xml
│ │ ├── drawable-xxhdpi
│ │ │ ├── ic_dot_a_trip.png
│ │ │ └── ic_dot_b_trip.png
│ │ ├── drawable-xxxhdpi
│ │ │ ├── ic_dot_a_trip.png
│ │ │ └── ic_dot_b_trip.png
│ │ ├── anim
│ │ │ └── list_push_left_in_animator.xml
│ │ ├── values
│ │ │ └── themes.xml
│ │ ├── layout
│ │ │ ├── fragment_trip_details_map.xml
│ │ │ └── fragment_feed_feature_host.xml
│ │ └── navigation
│ │ │ └── feed_nav_graph.xml
│ │ ├── AndroidManifest.xml
│ │ └── java
│ │ └── com
│ │ └── telematics
│ │ └── features
│ │ └── feed
│ │ ├── FeedFeatureHost.kt
│ │ └── model
│ │ └── SpeedType.kt
│ └── build.gradle.kts
├── Android Open-Source App.png
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── repo
└── com
│ └── isseiaoki
│ └── simplecropview
│ └── 1.1.8
│ ├── simplecropview-1.1.8.aar
│ ├── simplecropview-1.1.8-javadoc.jar
│ └── simplecropview-1.1.8-sources.jar
├── data
└── src
│ └── main
│ ├── java
│ └── com
│ │ └── telematics
│ │ └── data
│ │ ├── model
│ │ ├── reward
│ │ │ ├── DailyLimit.kt
│ │ │ ├── DriveCoinsTotal.kt
│ │ │ ├── DriveCoinsDaily.kt
│ │ │ ├── DriveCoinsDetailed.kt
│ │ │ ├── DriveCoinsScoreEco.kt
│ │ │ └── DriveCoinsDetailed2.kt
│ │ ├── carservice
│ │ │ ├── VehicleResponse.kt
│ │ │ ├── VehicleDevicesResponse.kt
│ │ │ ├── ModelRest.kt
│ │ │ ├── ManufacturerRest.kt
│ │ │ ├── ElmRest.kt
│ │ │ ├── CarUpdateBody.kt
│ │ │ └── CarRest.kt
│ │ ├── statistics
│ │ │ ├── DriveCoinsRest.kt
│ │ │ ├── LeaderboardResponse.kt
│ │ │ ├── EcoScoringRest.kt
│ │ │ ├── UserStatisticsIndividualRest.kt
│ │ │ ├── UserStatisticsScoreRest.kt
│ │ │ ├── DrivingDetailsRest.kt
│ │ │ └── LeaderboardUserBody.kt
│ │ ├── company_id
│ │ │ └── InstanceNameBody.kt
│ │ ├── login
│ │ │ ├── LoginFieldsWithDeviceToken.kt
│ │ │ ├── LoginFields.kt
│ │ │ ├── LoginBody.kt
│ │ │ ├── RegistrationBody.kt
│ │ │ ├── LoginWithDeviceTokenBody.kt
│ │ │ └── UserUpdateBody.kt
│ │ ├── rest
│ │ │ ├── ErrorData.kt
│ │ │ ├── AccessToken.kt
│ │ │ ├── BaseResponse.kt
│ │ │ ├── ApiResult.kt
│ │ │ └── ApiResponse.kt
│ │ ├── profile
│ │ │ └── ProfileResponse.kt
│ │ ├── refresh_token
│ │ │ └── RefreshRequest.kt
│ │ ├── user_exists
│ │ │ └── UserExists.kt
│ │ └── tracking
│ │ │ ├── ChangeEventBody.kt
│ │ │ └── MeasuresFormatter.kt
│ │ ├── api
│ │ ├── errors
│ │ │ └── ApiError.kt
│ │ ├── RefreshApi.kt
│ │ ├── TripEventTypeApi.kt
│ │ └── LeaderboardApi.kt
│ │ ├── utils
│ │ └── Resource.kt
│ │ ├── db_room
│ │ ├── migration
│ │ │ └── Migration1To2.kt
│ │ └── OnDemandDao.kt
│ │ ├── extentions
│ │ ├── DoubleExt.kt
│ │ ├── FloatExt.kt
│ │ ├── BundleExt.kt
│ │ ├── TaskExt.kt
│ │ ├── ResourceExt.kt
│ │ ├── ViewExt.kt
│ │ └── FlowExt.kt
│ │ ├── interceptor
│ │ └── InstanceValuesInterceptor.kt
│ │ └── usecase
│ │ └── AlarmPermissionUseCase.kt
│ ├── res
│ └── drawable
│ │ ├── ic_wizard_page_bg_center.xml
│ │ ├── dialog_selected_background.xml
│ │ ├── ic_wizard_page_disable_rect.xml
│ │ ├── ic_wizard_page_bg_top.xml
│ │ ├── ic_wizard_page_bg_bottom.xml
│ │ └── ic_wizard_page_location_bg.xml
│ └── AndroidManifest.xml
├── .gitignore
└── settings.gradle.kts
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/img_readme/1.txt:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/core/sdkhelper/.gitignore:
--------------------------------------------------------------------------------
1 | /build
--------------------------------------------------------------------------------
/core/sdkhelper/consumer-rules.pro:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/content/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/domain/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/authentication/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/core/sdkhelper/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/features/dashboard/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/features/reward/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/features/leaderboard/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/img_readme/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/1.png
--------------------------------------------------------------------------------
/img_readme/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/2.png
--------------------------------------------------------------------------------
/img_readme/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/3.png
--------------------------------------------------------------------------------
/img_readme/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/4.png
--------------------------------------------------------------------------------
/img_readme/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/5.png
--------------------------------------------------------------------------------
/img_readme/6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/6.png
--------------------------------------------------------------------------------
/img_readme/7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/7.png
--------------------------------------------------------------------------------
/img_readme/8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/8.png
--------------------------------------------------------------------------------
/img_readme/9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/9.png
--------------------------------------------------------------------------------
/img_readme/10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/10.png
--------------------------------------------------------------------------------
/img_readme/11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/11.png
--------------------------------------------------------------------------------
/img_readme/12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/12.png
--------------------------------------------------------------------------------
/img_readme/13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/13.png
--------------------------------------------------------------------------------
/img_readme/14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/14.png
--------------------------------------------------------------------------------
/img_readme/here_step_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/here_step_1.png
--------------------------------------------------------------------------------
/img_readme/here_step_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/here_step_2.png
--------------------------------------------------------------------------------
/img_readme/here_step_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/here_step_3.png
--------------------------------------------------------------------------------
/img_readme/here_step_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/here_step_4.png
--------------------------------------------------------------------------------
/img_readme/here_step_5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/here_step_5.png
--------------------------------------------------------------------------------
/img_readme/here_step_6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/here_step_6.png
--------------------------------------------------------------------------------
/Android Open-Source App.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/Android Open-Source App.png
--------------------------------------------------------------------------------
/img_readme/telematicsapp.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/telematicsapp.jpeg
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/img_readme/instruction_map_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/instruction_map_1.png
--------------------------------------------------------------------------------
/img_readme/instruction_map_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/instruction_map_2.png
--------------------------------------------------------------------------------
/img_readme/instruction_map_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/instruction_map_3.png
--------------------------------------------------------------------------------
/img_readme/instruction_map_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/instruction_map_4.png
--------------------------------------------------------------------------------
/img_readme/instruction_map_5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/instruction_map_5.png
--------------------------------------------------------------------------------
/img_readme/instruction_map_6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/instruction_map_6.png
--------------------------------------------------------------------------------
/img_readme/instruction_map_7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/img_readme/instruction_map_7.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable/bg_dash.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable/bg_dash.webp
--------------------------------------------------------------------------------
/content/src/main/res/font/open_sans_bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/font/open_sans_bold.ttf
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/LoginType.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model
2 |
3 | enum class LoginType {
4 | EMAIL,
5 | PHONE
6 | }
--------------------------------------------------------------------------------
/content/src/main/res/font/open_sans_light.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/font/open_sans_light.ttf
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_sett_back_white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/app/src/main/res/drawable/ic_sett_back_white.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_auth_logo.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable/ic_auth_logo.webp
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_menu_dash_on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable/ic_menu_dash_on.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_onboard_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable/ic_onboard_logo.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_wizard_plus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable/ic_wizard_plus.png
--------------------------------------------------------------------------------
/content/src/main/res/font/open_sans_regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/font/open_sans_regular.ttf
--------------------------------------------------------------------------------
/content/src/main/res/font/spen_sans_semi_bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/font/spen_sans_semi_bold.ttf
--------------------------------------------------------------------------------
/content/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/content/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/content/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/features/obd/src/main/res/drawable/odb_alert.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/obd/src/main/res/drawable/odb_alert.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_tracking_mode_auto.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/app/src/main/res/drawable/ic_tracking_mode_auto.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable/bg_onboard_first.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable/bg_onboard_first.webp
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_menu_dash_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable/ic_menu_dash_off.png
--------------------------------------------------------------------------------
/content/src/main/res/font/open_sans_extra_bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/font/open_sans_extra_bold.ttf
--------------------------------------------------------------------------------
/content/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/content/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/features/obd/src/main/res/drawable/odb_success.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/obd/src/main/res/drawable/odb_success.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-nodpi/bg_onboard_fourth.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/app/src/main/res/drawable-nodpi/bg_onboard_fourth.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-nodpi/bg_onboard_second.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/app/src/main/res/drawable-nodpi/bg_onboard_second.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable-nodpi/bg_onboard_third.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/app/src/main/res/drawable-nodpi/bg_onboard_third.webp
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_tracking_mode_demand.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/app/src/main/res/drawable/ic_tracking_mode_demand.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_tracking_mode_disable.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/app/src/main/res/drawable/ic_tracking_mode_disable.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_account_btn_edit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable/ic_account_btn_edit.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_account_btn_photo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable/ic_account_btn_photo.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_menu_profile_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable/ic_menu_profile_off.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_menu_profile_on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable/ic_menu_profile_on.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_no_avatar_white.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable/ic_no_avatar_white.webp
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_wizard_logo_back.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable/ic_wizard_logo_back.webp
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_wizard_verified.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable/ic_wizard_verified.png
--------------------------------------------------------------------------------
/content/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/content/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_menu_leaderboard_on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable/ic_menu_leaderboard_on.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_sett_measure_large.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable/ic_sett_measure_large.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_sett_profile_large.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable/ic_sett_profile_large.png
--------------------------------------------------------------------------------
/content/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/content/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/tracking/TripImageHolder.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.tracking
2 |
3 | data class TripImageHolder(val url: String, val r: String)
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_menu_leaderboard_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable/ic_menu_leaderboard_off.png
--------------------------------------------------------------------------------
/content/src/main/res/mipmap-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/content/src/main/res/mipmap-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/content/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/reward/DailyLimitData.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.reward
2 |
3 | data class DailyLimitData(
4 | val dailyLimitData: Int = 0
5 | )
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/statistics/DriveCoins.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.statistics
2 |
3 | data class DriveCoins(
4 | val totalCoins: Int = 0
5 | )
--------------------------------------------------------------------------------
/features/account/src/main/res/drawable/claim_icons_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/account/src/main/res/drawable/claim_icons_back.png
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable-hdpi/ic_dot_a_trip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/feed/src/main/res/drawable-hdpi/ic_dot_a_trip.png
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable-hdpi/ic_dot_b_trip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/feed/src/main/res/drawable-hdpi/ic_dot_b_trip.png
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable-mdpi/ic_dot_a_trip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/feed/src/main/res/drawable-mdpi/ic_dot_a_trip.png
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable-mdpi/ic_dot_b_trip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/feed/src/main/res/drawable-mdpi/ic_dot_b_trip.png
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable-xhdpi/ic_dot_a_trip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/feed/src/main/res/drawable-xhdpi/ic_dot_a_trip.png
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable-xhdpi/ic_dot_b_trip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/feed/src/main/res/drawable-xhdpi/ic_dot_b_trip.png
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/ib_feed_blur_trip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/feed/src/main/res/drawable/ib_feed_blur_trip.png
--------------------------------------------------------------------------------
/features/leaderboard/src/main/res/drawable/leader_graph.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/leaderboard/src/main/res/drawable/leader_graph.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_account_btn_edit_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable/ic_account_btn_edit_pressed.png
--------------------------------------------------------------------------------
/content/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/content/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable-xxhdpi/ic_dot_a_trip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/feed/src/main/res/drawable-xxhdpi/ic_dot_a_trip.png
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable-xxhdpi/ic_dot_b_trip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/feed/src/main/res/drawable-xxhdpi/ic_dot_b_trip.png
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable-xxxhdpi/ic_dot_a_trip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/feed/src/main/res/drawable-xxxhdpi/ic_dot_a_trip.png
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable-xxxhdpi/ic_dot_b_trip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/feed/src/main/res/drawable-xxxhdpi/ic_dot_b_trip.png
--------------------------------------------------------------------------------
/features/reward/src/main/res/drawable/ic_rewards_money_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/reward/src/main/res/drawable/ic_rewards_money_bg.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_account_btn_photo_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable/ic_account_btn_photo_pressed.png
--------------------------------------------------------------------------------
/content/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/carservice/ModelData.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.carservice
2 |
3 | data class ModelData(
4 | val id: Int,
5 | val name: String
6 | )
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/ic_dash_land_green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/dashboard/src/main/res/drawable/ic_dash_land_green.png
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/ic_on_demand_status.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/dashboard/src/main/res/drawable/ic_on_demand_status.png
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/ic_red_popup__cornering.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/feed/src/main/res/drawable/ic_red_popup__cornering.png
--------------------------------------------------------------------------------
/repo/com/isseiaoki/simplecropview/1.1.8/simplecropview-1.1.8.aar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/repo/com/isseiaoki/simplecropview/1.1.8/simplecropview-1.1.8.aar
--------------------------------------------------------------------------------
/content/src/main/res/drawable-hdpi/ic_tracking_sdk_status_bar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable-hdpi/ic_tracking_sdk_status_bar.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable-mdpi/ic_tracking_sdk_status_bar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable-mdpi/ic_tracking_sdk_status_bar.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable-xhdpi/ic_tracking_sdk_status_bar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable-xhdpi/ic_tracking_sdk_status_bar.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable-xxhdpi/ic_rotate_left_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable-xxhdpi/ic_rotate_left_white_24dp.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable-xxxhdpi/ic_dash_arrow_right_gray.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable-xxxhdpi/ic_dash_arrow_right_gray.png
--------------------------------------------------------------------------------
/features/account/src/main/res/drawable-xxxhdpi/ic_wizard_phone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/account/src/main/res/drawable-xxxhdpi/ic_wizard_phone.png
--------------------------------------------------------------------------------
/features/account/src/main/res/drawable-xxxhdpi/ic_wizard_user.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/account/src/main/res/drawable-xxxhdpi/ic_wizard_user.png
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable-xxxhdpi/ic_dash_fuel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/dashboard/src/main/res/drawable-xxxhdpi/ic_dash_fuel.png
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable-xxxhdpi/ic_dash_tyres.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/dashboard/src/main/res/drawable-xxxhdpi/ic_dash_tyres.png
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/ic_dash_arrow_up_gray.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/dashboard/src/main/res/drawable/ic_dash_arrow_up_gray.png
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/ic_rewards_drivecoins.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/dashboard/src/main/res/drawable/ic_rewards_drivecoins.png
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/ic_red_popup__accleration.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/feed/src/main/res/drawable/ic_red_popup__accleration.png
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/ic_red_popup__deceleration.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/feed/src/main/res/drawable/ic_red_popup__deceleration.png
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/ic_red_popup__distraction.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/feed/src/main/res/drawable/ic_red_popup__distraction.png
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/ic_yellow_popup__cornering.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/feed/src/main/res/drawable/ic_yellow_popup__cornering.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable-hdpi/ic_tracking_sdk_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable-hdpi/ic_tracking_sdk_notification.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable-mdpi/ic_tracking_sdk_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable-mdpi/ic_tracking_sdk_notification.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable-xhdpi/ic_tracking_sdk_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable-xhdpi/ic_tracking_sdk_notification.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable-xxhdpi/ic_rotate_right_white_24dp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable-xxhdpi/ic_rotate_right_white_24dp.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable-xxhdpi/ic_tracking_sdk_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable-xxhdpi/ic_tracking_sdk_notification.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable-xxhdpi/ic_tracking_sdk_status_bar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable-xxhdpi/ic_tracking_sdk_status_bar.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable-xxxhdpi/ic_tracking_sdk_status_bar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable-xxxhdpi/ic_tracking_sdk_status_bar.png
--------------------------------------------------------------------------------
/features/account/src/main/res/drawable-xxxhdpi/ic_wizard_address.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/account/src/main/res/drawable-xxxhdpi/ic_wizard_address.png
--------------------------------------------------------------------------------
/features/account/src/main/res/drawable-xxxhdpi/ic_wizard_calendar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/account/src/main/res/drawable-xxxhdpi/ic_wizard_calendar.png
--------------------------------------------------------------------------------
/features/account/src/main/res/drawable-xxxhdpi/ic_wizard_number.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/account/src/main/res/drawable-xxxhdpi/ic_wizard_number.png
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable-xxxhdpi/ic_dash_brakes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/dashboard/src/main/res/drawable-xxxhdpi/ic_dash_brakes.png
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/ic_eco_scoring_tabs_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/dashboard/src/main/res/drawable/ic_eco_scoring_tabs_bg.png
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/ic_yellow_popup__acceleration.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/feed/src/main/res/drawable/ic_yellow_popup__acceleration.png
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/ic_yellow_popup__deceleration.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/feed/src/main/res/drawable/ic_yellow_popup__deceleration.png
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/ic_yellow_popup__distraction.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/feed/src/main/res/drawable/ic_yellow_popup__distraction.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable-xxxhdpi/ic_tracking_sdk_notification.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable-xxxhdpi/ic_tracking_sdk_notification.png
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/carservice/ManufacturerData.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.carservice
2 |
3 | data class ManufacturerData(
4 | val id: Int,
5 | val name: String
6 | )
--------------------------------------------------------------------------------
/features/leaderboard/src/main/res/drawable/ic_dash_arrow_right_gray.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/leaderboard/src/main/res/drawable/ic_dash_arrow_right_gray.png
--------------------------------------------------------------------------------
/content/src/main/res/drawable-xxxhdpi/ic_wizard_back_bubble_smallest.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/content/src/main/res/drawable-xxxhdpi/ic_wizard_back_bubble_smallest.png
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/company_id/InstanceName.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.company_id
2 |
3 | data class InstanceName(
4 | val name: String?,
5 | val isSuccess: Boolean
6 | )
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable-xxxhdpi/ic_dash_depreciation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/dashboard/src/main/res/drawable-xxxhdpi/ic_dash_depreciation.png
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/ib_empty_dashboard_last_trip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/dashboard/src/main/res/drawable/ib_empty_dashboard_last_trip.png
--------------------------------------------------------------------------------
/repo/com/isseiaoki/simplecropview/1.1.8/simplecropview-1.1.8-javadoc.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/repo/com/isseiaoki/simplecropview/1.1.8/simplecropview-1.1.8-javadoc.jar
--------------------------------------------------------------------------------
/repo/com/isseiaoki/simplecropview/1.1.8/simplecropview-1.1.8-sources.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/repo/com/isseiaoki/simplecropview/1.1.8/simplecropview-1.1.8-sources.jar
--------------------------------------------------------------------------------
/features/account/src/main/res/drawable-xxxhdpi/ic_wizard_driving_licence.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/account/src/main/res/drawable-xxxhdpi/ic_wizard_driving_licence.png
--------------------------------------------------------------------------------
/features/leaderboard/src/main/res/drawable/ic_wizard_back_bubble_smallest.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Mobile-Telematics/TelematicsApp-Android/HEAD/features/leaderboard/src/main/res/drawable/ic_wizard_back_bubble_smallest.png
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/reward/DriveCoinsDuration.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.reward
2 |
3 | enum class DriveCoinsDuration {
4 | ALL_TIME,
5 | DAY,
6 | THIS_MONTH,
7 | LAST_MONTH
8 | }
--------------------------------------------------------------------------------
/authentication/src/main/java/com/telematics/authentication/exception/AuthException.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.authentication.exception
2 |
3 | import java.io.IOException
4 |
5 | class AuthException(val errorCode: AuthErrorCode) : IOException()
--------------------------------------------------------------------------------
/content/src/main/res/drawable/splash_screen.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/reward/DriveCoinsTotalData.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.reward
2 |
3 | data class DriveCoinsTotalData(
4 | val totalEarnedCoins: Int = 0,
5 | val acquiredCoins: Int = 0
6 | )
--------------------------------------------------------------------------------
/features/reward/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("telematics.android.feature")
3 | }
4 |
5 | android {
6 | namespace = "com.telematics.reward"
7 | }
8 |
9 | dependencies {
10 | implementation(libs.chartView)
11 | }
12 |
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/authentication/PhoneAuthResult.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.authentication
2 |
3 | enum class PhoneAuthResult {
4 | TIMEOUT,
5 | CODE_SEND,
6 | COMPETED,
7 | FAILED
8 | }
--------------------------------------------------------------------------------
/features/account/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("telematics.android.feature")
3 | }
4 |
5 | android {
6 | namespace = "com.telematics.features.account"
7 | }
8 |
9 | dependencies {
10 | implementation(libs.cropView)
11 | }
--------------------------------------------------------------------------------
/features/leaderboard/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("telematics.android.feature")
3 | }
4 |
5 | android {
6 | namespace = "com.telematics.leaderboard"
7 | }
8 |
9 | dependencies {
10 | implementation(libs.glide)
11 | }
12 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/reward/DailyLimit.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.reward
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class DailyLimit(
6 | @SerializedName("DailyLimit") val dailyLimit: Int
7 | )
--------------------------------------------------------------------------------
/content/src/main/res/anim/fade_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
--------------------------------------------------------------------------------
/content/src/main/res/anim/fade_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/carservice/VehicleResponse.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.carservice
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class VehicleResponse(
6 | @SerializedName("Cars") val cars: List
7 | )
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/statistics/DriveCoinsRest.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.statistics
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class DriveCoinsRest(
6 | @SerializedName("TotalCoins") val totalCoins: Int
7 | )
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/RegistrationApiData.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model
2 |
3 | data class RegistrationApiData(
4 | var deviceToken: String,
5 | val accessToken: String,
6 | val refreshToken: String,
7 | var expiresIn: Long?
8 | )
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/reward/StreakCarType.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.reward
2 |
3 | enum class StreakCarType {
4 | Acceleration,
5 | Braking,
6 | Speeding,
7 | Distraction,
8 | Cornering,
9 | PhoneUsage
10 | }
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/statistics/ScoreType.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.statistics
2 |
3 | enum class ScoreType {
4 | OVERALL,
5 | ACCELERATION,
6 | BREAKING,
7 | PHONE_USAGE,
8 | SPEEDING,
9 | CORNERING
10 | }
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/ic_event_trip_bubble_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/ic_event_trip_bubble_type_bg.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
--------------------------------------------------------------------------------
/content/src/main/res/anim/slide_in.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
--------------------------------------------------------------------------------
/features/obd/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("telematics.android.feature")
3 | }
4 |
5 | android {
6 | namespace = "com.telematics.obd"
7 | }
8 |
9 | dependencies {
10 | implementation(libs.cropView)
11 | implementation(libs.circleIndicatorView)
12 | }
13 |
--------------------------------------------------------------------------------
/content/src/main/res/anim/slide_out.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/carservice/VehicleDevicesResponse.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.carservice
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class VehicleDevicesResponse(
6 | @SerializedName("Elms") val elms: List?
7 | )
--------------------------------------------------------------------------------
/data/src/main/res/drawable/ic_wizard_page_bg_center.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
--------------------------------------------------------------------------------
/features/reward/src/main/res/drawable/badge_tab_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/company_id/InstanceNameBody.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.company_id
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class InstanceNameBody(
6 | @SerializedName("InstanceName")
7 | val instanceName: String?
8 | )
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/ic_event_trip_label_bg_green.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/carservice/ModelRest.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.carservice
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class ModelRest(
6 | @SerializedName("Id") val id: Int,
7 | @SerializedName("Name") val name: String
8 | )
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/ic_dashboard_ecoscoring_hint_bubble.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/circle_setting_tracking_mode_disable.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/api/errors/ApiError.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.api.errors
2 |
3 | import java.io.IOException
4 |
5 | data class ApiError(
6 | val errorCode: Int,
7 | val msg: String? = null,
8 | //val details: List? = null
9 | ) : IOException(msg)
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/statistics/StatisticEcoScoringTabData.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.statistics
2 |
3 | data class StatisticEcoScoringTabData(
4 | var averageSpeed: Double = .0,
5 | var maxSpeed: Double = .0,
6 | var averageTripDistance: Double = .0
7 | )
--------------------------------------------------------------------------------
/features/obd/src/main/java/ui/step4_connect_device/DeviceConnectEnum.kt:
--------------------------------------------------------------------------------
1 | package ui.step4_connect_device
2 |
3 | import com.telematics.obd.R
4 |
5 |
6 | enum class DeviceConnectEnum(val pageResId: Int) {
7 | PREPARE(R.layout.odb_prepare),
8 | TURN_ON_BLUETOOTH(R.layout.odb_turn_on_bluetooth)
9 | }
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_def_btn_norm.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/login/LoginFieldsWithDeviceToken.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.login
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class LoginFieldsWithDeviceToken(
6 | @SerializedName("DeviceToken")
7 | val deviceToken: String? = null
8 | )
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_def_btn_orange.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_dot_red.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/carservice/ManufacturerRest.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.carservice
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class ManufacturerRest(
6 | @SerializedName("Id") val id: Int,
7 | @SerializedName("Name") val name: String
8 | )
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/on_demand/OnDemandJobState.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.on_demand
2 |
3 |
4 | enum class OnDemandJobState {
5 | CURRENT, ACCEPTED, COMPLETE, PAUSED;
6 |
7 | override fun toString(): String {
8 | return this.name
9 | }
10 | }
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
4 | networkTimeout=10000
5 | validateDistributionUrl=true
6 | zipStoreBase=GRADLE_USER_HOME
7 | zipStorePath=wrapper/dists
8 |
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_def_btn_disable.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_dot_green.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/statistics/StatisticEcoScoringMain.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.statistics
2 |
3 | data class StatisticEcoScoringMain(
4 | val score: Int = 0,
5 | val fuel: Int = 0,
6 | val tires: Int = 0,
7 | val brakes: Int = 0,
8 | val cost: Int = 0
9 | )
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/ic_def_btn_norm.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_dot_orange.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_dot_yellow.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/rest/ErrorData.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.rest
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class ErrorData(
6 | @SerializedName("Key")
7 | val key: String?,
8 | @SerializedName("Message")
9 | val message: String?
10 | )
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/tracking/ChangeTripEvent.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.tracking
2 |
3 | data class ChangeTripEvent(
4 | val eventType: String?,
5 | val latitude: Double?,
6 | val longitude: Double?,
7 | val pointDate: String?,
8 | val changeTypeTo: String?
9 | )
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_slide_dot_checked.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/utils/Resource.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.utils
2 |
3 | sealed class Resource {
4 |
5 | class Success(val data: T? = null) : Resource()
6 |
7 | class Loading : Resource()
8 |
9 | class Failure(val error: Throwable? = null) : Resource()
10 | }
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/statistics/UserStatisticsIndividualData.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.statistics
2 |
3 | data class UserStatisticsIndividualData(
4 | val tripsCount: Int = 0,
5 | val mileageKm: Double = .0,
6 | val mileageMile: Double = .0,
7 | val drivingTime: Int = 0
8 | )
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/ic_def_btn_disable.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/rank_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_sett_measure.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_sett_profile.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_slide_dot_unchecked.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/content/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/rest/AccessToken.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.rest
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class AccessToken(
6 | @SerializedName("ExpiresIn")
7 | val expiresIn: Long,
8 | @SerializedName("Token")
9 | val token: String
10 | )
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/ic_trip_circle_white.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_custom_dialog_bubble.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/content/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/login/LoginFields.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.login
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class LoginFields(
6 | @SerializedName("Phone")
7 | val phone: String? = null,
8 | @SerializedName("Email")
9 | val email: String? = null
10 | )
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/profile/ProfileResponse.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.profile
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class ProfileResponse(
6 | @SerializedName("name")
7 | val name: String,
8 | @SerializedName("session")
9 | val session: String
10 | )
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/rest/BaseResponse.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.rest
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | open class BaseResponse {
6 |
7 | @SerializedName("Code")
8 | var code: Int = 0
9 | @SerializedName("Message")
10 | var message: String? = null
11 | }
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/reward/DriveCoinsTotal.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.reward
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class DriveCoinsTotal(
6 | @SerializedName("TotalEarnedCoins") val totalEarnedCoins: Int,
7 | @SerializedName("AcquiredCoins") val acquiredCoins: Int
8 | )
--------------------------------------------------------------------------------
/features/dashboard/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("telematics.android.feature")
3 | }
4 |
5 | android {
6 | namespace = "com.telematics.dashboard"
7 | }
8 |
9 | dependencies {
10 | implementation(project(":core:sdkhelper"))
11 | implementation(libs.chartView)
12 | implementation(libs.circleIndicatorView)
13 | }
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/btn_rectangle_red.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/ic_orange_btn_disable.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/login/LoginBody.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.login
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class LoginBody(
6 | @SerializedName("loginFields")
7 | val loginFields: LoginFields,
8 | @SerializedName("password")
9 | val password: String
10 | )
--------------------------------------------------------------------------------
/domain/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("telematics.android.library")
3 | id("telematics.android.room")
4 | }
5 |
6 |
7 | android {
8 | namespace = "com.telematics.domain"
9 | }
10 |
11 | dependencies {
12 | implementation(libs.androidx.recyclerview)
13 |
14 | implementation(libs.kotlinx.coroutines.core)
15 |
16 | }
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/reward/DriveCoinsDailyData.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.reward
2 |
3 | data class DriveCoinsDailyData(
4 | val data: String = "",
5 | val dateUpdated: String = "",
6 | val limitReached: Boolean = true,
7 | val totalEarnedCoins: Int = 0,
8 | val acquiredCoins: Int = 0
9 | )
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/tracking/ElmDevice.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.tracking
2 |
3 | data class ElmDevice(
4 | var connectedState: Boolean,
5 | var device: android.bluetooth.BluetoothDevice?,
6 | var deviceMacAddress: String?,
7 | var deviceName: String?,
8 | var rssi: Int
9 | )
10 |
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/ic_trip_circle_blue.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/features/obd/src/main/java/ui/step2_wizard/ConnectVehicleEnum.kt:
--------------------------------------------------------------------------------
1 | package ui.step2_wizard
2 |
3 | import com.telematics.obd.R
4 |
5 | enum class ConnectVehicleEnum(val layout: Int) {
6 | INSTALL_YOUR_DEVICE(R.layout.obd_first_step),
7 | TURN_ON_VEHICLE(R.layout.obd_second_step),
8 | PHOTO_PHOTO_OF_ODOMETR(R.layout.obd_third_step)
9 | }
--------------------------------------------------------------------------------
/core/sdkhelper/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("telematics.android.library")
3 | }
4 |
5 | android {
6 | namespace = "com.telematics.core.sdkhelper"
7 | }
8 |
9 | dependencies {
10 | implementation(libs.androidx.core.ktx)
11 | implementation(libs.androidx.constraintlayout)
12 | implementation(libs.androidx.fragment)
13 | }
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/login/RegistrationBody.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.login
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class RegistrationBody(
6 | @SerializedName("Email")
7 | val email: String? = null,
8 | @SerializedName("Phone")
9 | val phone: String? = null
10 | )
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/ic_orange_btn_norm.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/ic_event_trip_bubble_right_btn.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
7 |
--------------------------------------------------------------------------------
/features/leaderboard/src/main/java/com/telematics/features/leaderboard/ui/leaderboard_details/LeaderboardDetailsViewModel.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.features.leaderboard.ui.leaderboard_details
2 |
3 | import androidx.lifecycle.ViewModel
4 | import javax.inject.Inject
5 |
6 | class LeaderboardDetailsViewModel @Inject constructor(
7 |
8 | ) : ViewModel()
--------------------------------------------------------------------------------
/features/obd/src/main/res/drawable/background_rounded.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/db_room/migration/Migration1To2.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.db_room.migration
2 |
3 | import androidx.room.migration.Migration
4 | import androidx.sqlite.db.SupportSQLiteDatabase
5 |
6 | class Migration1To2 : Migration(1, 2) {
7 | override fun migrate(database: SupportSQLiteDatabase) {
8 |
9 | }
10 | }
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/SessionData.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model
2 |
3 | interface IAvailableSession
4 |
5 | data class SessionData(
6 | val accessToken: String,
7 | val refreshToken: String,
8 | var expiresIn: Long?
9 | ) : IAvailableSession {
10 | fun isEmpty(): Boolean = accessToken.isBlank()
11 | }
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/btn_rectangle_green_bold.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/cancel_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
--------------------------------------------------------------------------------
/features/feed/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("telematics.android.feature")
3 | }
4 |
5 | android {
6 | namespace = "com.telematics.feed"
7 |
8 | defaultConfig {
9 | manifestPlaceholders["MAPS_API_KEY"] = AppConfig.GOOGLE_MAP_API
10 | }
11 | }
12 |
13 | dependencies {
14 | implementation(libs.google.play.services.maps)
15 | }
16 |
--------------------------------------------------------------------------------
/features/feed/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/refresh_token/RefreshRequest.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.refresh_token
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class RefreshRequest(
6 | @SerializedName("AccessToken")
7 | val accessToken: String,
8 | @SerializedName("RefreshToken")
9 | val refreshToken: String
10 | )
--------------------------------------------------------------------------------
/features/obd/src/main/res/drawable/elm_selected_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
--------------------------------------------------------------------------------
/data/src/main/res/drawable/dialog_selected_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/reward/Streak.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.reward
2 |
3 | data class Streak(
4 | val cardType: StreakCarType,
5 | val currentDistance: String,
6 | val currentDate: String?,
7 | val currentTrips: String,
8 | val bestDistance: String,
9 | val bestDate: String?,
10 | val bestTrips: String
11 | )
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/login/LoginWithDeviceTokenBody.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.login
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class LoginWithDeviceTokenBody(
6 | @SerializedName("loginFields")
7 | val loginFields: LoginFieldsWithDeviceToken,
8 | @SerializedName("password")
9 | val password: String
10 | )
--------------------------------------------------------------------------------
/features/leaderboard/src/main/res/drawable/gradient_leadboard_current_user.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/ic_rect_round_5dp.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/features/obd/src/main/res/drawable/obd_connected.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/extentions/DoubleExt.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.extentions
2 |
3 | import java.text.DecimalFormat
4 | import java.util.Locale
5 |
6 | fun Double.format(format: String = "0.0"): String {
7 | Locale.setDefault(Locale.US)
8 | return DecimalFormat(format).format(this)
9 | }
10 |
11 | fun Double.toMiles(): Double {
12 | return this / 1.609f
13 | }
--------------------------------------------------------------------------------
/data/src/main/res/drawable/ic_wizard_page_disable_rect.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/statistics/UserStatisticsScoreData.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.statistics
2 |
3 | data class UserStatisticsScoreData(
4 | val overallScore: Int = 0,
5 | val accelerationScore: Int = 0,
6 | val brakingScore: Int = 0,
7 | val distractedScore: Int = 0,
8 | val speedingScore: Int = 0,
9 | val corneringScore: Int = 0
10 | )
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/tracking/ElmManagerLinkingResult.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.tracking
2 |
3 | class ElmManagerLinkingResult(
4 | val isLinkingComplete: Boolean,
5 | val vehicleToken: String?,
6 | val elmMAC: String?,
7 |
8 | val isScanningComplete: Boolean,
9 | val foundDevices: List?,
10 |
11 | val error: String?
12 | )
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_def_btn_press.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
8 |
9 |
--------------------------------------------------------------------------------
/content/src/main/res/drawable/dr_login_email_rect.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_menu_feed.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/authentication/PhoneAuthCallback.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.authentication
2 |
3 | class PhoneAuthCred(val credential: T, val phone: String)
4 |
5 | interface PhoneAuthCallback {
6 | fun onCodeSend(verificationId: String)
7 | fun onCompleted(result: PhoneAuthCred<*>)
8 | fun onTimeout() {}
9 | fun onFailure(e: Exception)
10 | }
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/statistics/StatisticEcoScoringTabsData.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.statistics
2 |
3 | data class StatisticEcoScoringTabsData(
4 | var week: StatisticEcoScoringTabData = StatisticEcoScoringTabData(),
5 | var month: StatisticEcoScoringTabData = StatisticEcoScoringTabData(),
6 | var year: StatisticEcoScoringTabData = StatisticEcoScoringTabData()
7 | )
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/ic_event_trip_round_gray.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
12 |
13 |
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/ic_event_trip_round_green.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
12 |
13 |
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_menu_dashboard.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/data/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/ic_def_btn_press.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
8 |
9 |
--------------------------------------------------------------------------------
/content/src/main/res/color/bottom_menu_item_text_sel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_menu_profile.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/rest/ApiResult.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.rest
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class ApiResult(
6 | @SerializedName("AccessToken")
7 | val accessToken: AccessToken,
8 | @SerializedName("DeviceToken")
9 | val deviceToken: String,
10 | @SerializedName("RefreshToken")
11 | val refreshToken: String
12 | )
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/ic_behavior_bubble.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
--------------------------------------------------------------------------------
/content/src/main/res/drawable/selector_primary_color.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/content/src/main/res/color/default_button_text_sel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/features/feed/src/main/res/anim/list_push_left_in_animator.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
11 |
--------------------------------------------------------------------------------
/features/reward/src/main/res/drawable/total_coins_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
10 |
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_menu_leaderboard.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/statistics/StatisticScoringData.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.statistics
2 |
3 | data class StatisticScoringData(
4 | val drivingDetailsData: List = ScoreTypeModel.empty(),
5 | val userStatisticsIndividualData: UserStatisticsIndividualData = UserStatisticsIndividualData(),
6 | val userStatisticsScoreData: List = ScoreTypeModel.empty()
7 | )
--------------------------------------------------------------------------------
/content/src/main/res/drawable/selector_account_edit_btn.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/content/src/main/res/drawable/selector_account_photo_btn.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/values/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/statistics/LeaderboardResponse.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.statistics
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class LeaderboardResponse(
6 | @SerializedName("ScoringRate")
7 | val scoringRate: String,
8 | @SerializedName("Users")
9 | val users: List?,
10 | @SerializedName("UsersNumber")
11 | val usersNumber: Int
12 | )
--------------------------------------------------------------------------------
/content/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("telematics.android.library")
3 | }
4 |
5 |
6 | android {
7 | namespace = "com.telematics.content"
8 | }
9 |
10 | dependencies {
11 |
12 | implementation(libs.androidx.appcompat)
13 | implementation(libs.androidx.activity)
14 | implementation(libs.androidx.fragment)
15 |
16 | implementation(libs.androidx.navigation.fragment.ktx)
17 |
18 | implementation(libs.google.material)
19 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/telematics/zenroad/MainViewModel.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.zenroad
2 |
3 | import androidx.lifecycle.ViewModel
4 | import com.telematics.data.tracking.TrackingUseCase
5 | import javax.inject.Inject
6 |
7 | class MainViewModel @Inject constructor(
8 | private val trackingUseCase: TrackingUseCase
9 | ) : ViewModel() {
10 |
11 | fun allPermissionsGranted() {
12 |
13 | trackingUseCase.enableTrackingSDK()
14 | }
15 | }
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/circle_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
12 |
--------------------------------------------------------------------------------
/content/src/main/res/color/menu_icon_color_sel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/repository/LeaderboardRepo.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.repository
2 |
3 | import com.telematics.domain.model.leaderboard.LeaderboardMemberData
4 | import com.telematics.domain.model.leaderboard.LeaderboardUserItems
5 |
6 | interface LeaderboardRepo {
7 |
8 | suspend fun getLeaderboardUserData(): List
9 | suspend fun getLeaderboardUserList(type: Int): List
10 | }
--------------------------------------------------------------------------------
/data/src/main/res/drawable/ic_wizard_page_bg_top.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/repository/SessionRepo.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.repository
2 |
3 | import com.telematics.domain.model.SessionData
4 |
5 |
6 | interface SessionRepo {
7 | fun saveSession(session: SessionData)
8 | fun getSession(): SessionData
9 | fun clearSession()
10 |
11 | fun saveStateForRewardInviteScreen()
12 | fun isRewardInviteScreenOpened(): Boolean
13 | fun clearStateForRewardInviteScreen()
14 | }
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/ic_orange_btn_press.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
8 |
9 |
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/ic_toast_success.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/authentication/src/main/java/com/telematics/authentication/exception/AuthErrorCode.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.authentication.exception
2 |
3 | enum class AuthErrorCode {
4 | INVALID_PASSWORD,
5 | USER_NOT_EXIST,
6 | LOGIN_TIMEOUT,
7 | EMPTY_VERIFICATION_CODE,
8 | INVALID_VERIFICATION_CODE,
9 | EMPTY_SESSION,
10 | EMPTY_DEVICE_TOKEN,
11 | NONE,
12 | EMPTY,
13 | NEED_VERIFY_CODE,
14 | EMAIL_ALREADY_IN_USE,
15 | NETWORK_EXCEPTION
16 | }
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_arrow_back_24dp.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/data/src/main/res/drawable/ic_wizard_page_bg_bottom.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/feed_circle.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/extentions/FloatExt.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.extentions
2 |
3 | import android.content.Context
4 | import java.text.DecimalFormat
5 | import java.util.Locale
6 |
7 | fun Float.format(format: String = "0.0"): String {
8 | Locale.setDefault(Locale.US)
9 | return DecimalFormat(format).format(this)
10 | }
11 |
12 | fun convertDpToPx(context: Context, dp: Float): Float {
13 | return dp * context.resources.displayMetrics.density
14 | }
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/rect_fade_gradient.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
8 |
9 |
13 |
14 |
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/ic_toast_error.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/rest/ApiResponse.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.rest
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class ApiResponse(
6 |
7 | @SerializedName("Result")
8 | val result: Result?,
9 | @SerializedName("Status")
10 | val status: Int,
11 | @SerializedName("Title")
12 | val msg: String? = null,
13 | @SerializedName("Errors")
14 | val details: List? = null
15 | ) : BaseResponse()
--------------------------------------------------------------------------------
/content/src/main/res/drawable/selector_default_btn.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/tracking/TripDetailsAddressesData.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.tracking
2 |
3 | class TripDetailsAddressesData(
4 | val city: String? = null,
5 | val country: String? = null,
6 | val countryCode: String? = null,
7 | val county: String? = null,
8 | val distinct: String? = null,
9 | val house: String? = null,
10 | val postalCode: String? = null,
11 | val state: String? = null,
12 | val street: String? = null
13 | )
--------------------------------------------------------------------------------
/content/src/main/res/drawable/selector_orange_btn.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/on_demand/TrackingState.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.on_demand
2 |
3 | enum class TrackingState(val index: Int) {
4 | AUTO(0), DEMAND(1), DISABLE(2);
5 |
6 | companion object {
7 | fun parse(index: Int?): TrackingState {
8 | return when (index) {
9 | 0 -> AUTO
10 | 1 -> DEMAND
11 | 2 -> DISABLE
12 | else -> AUTO
13 | }
14 | }
15 | }
16 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/telematics/zenroad/extention/Extentions.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.zenroad.extention
2 |
3 | import android.util.Patterns
4 | import android.view.View
5 |
6 | fun View.setVisible(visible: Boolean?) {
7 | this.visibility = when (visible) {
8 | true -> View.VISIBLE
9 | false -> View.INVISIBLE
10 | null -> View.GONE
11 | }
12 | }
13 |
14 | fun String.isValidEmail(): Boolean {
15 | return this.isNotEmpty() && Patterns.EMAIL_ADDRESS.matcher(this).matches()
16 | }
17 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/statistics/EcoScoringRest.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.statistics
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class EcoScoringRest(
6 | @SerializedName("EcoScoreFuel") val fuel: Double,
7 | @SerializedName("EcoScoreTyres") val tyres: Double,
8 | @SerializedName("EcoScoreDepreciation") val depreciation: Double,
9 | @SerializedName("EcoScoreBrakes") val brakes: Double,
10 | @SerializedName("EcoScore") val score: Double
11 | )
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/tracking/TripPointData.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.tracking
2 |
3 | class TripPointData {
4 |
5 | var latitude: Double = 0.0
6 | var longitude: Double = 0.0
7 | var speedType: String? = null
8 | var alertType: String? = null
9 | var usePhone: Boolean = false
10 | var alertValue: Double = 0.0
11 | var speed: Double = 0.0
12 | var date: String = ""
13 | var fullDate: String = ""
14 | var edited: Boolean = false
15 |
16 | }
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/selector_default_btn.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Gradle files
2 | .gradle/
3 | build/
4 |
5 | # Local configuration file (sdk path, etc)
6 | local.properties
7 |
8 | # Log/OS Files
9 | *.log
10 |
11 | # Android Studio generated files and folders
12 | captures/
13 | .externalNativeBuild/
14 | .cxx/
15 | *.apk
16 | output.json
17 |
18 | # IntelliJ
19 | *.iml
20 | .idea/
21 | misc.xml
22 |
23 | # Keystore files
24 | #*.jks
25 | #*.keystore
26 |
27 | # Google Services (e.g. APIs or Firebase)
28 | #google-services.json
29 |
30 | # Android Profiling
31 | *.hprof
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/api/RefreshApi.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.api
2 |
3 | import com.telematics.data.model.refresh_token.RefreshRequest
4 | import com.telematics.data.model.rest.ApiResponse
5 | import com.telematics.data.model.rest.ApiResult
6 | import retrofit2.http.Body
7 | import retrofit2.http.POST
8 |
9 | interface RefreshApi {
10 |
11 | // refresh token
12 | @POST("v1/Auth/RefreshToken")
13 | suspend fun refreshToken(@Body refreshRequest: RefreshRequest): ApiResponse
14 | }
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/reward/DriveCoinsDaily.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.reward
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class DriveCoinsDaily(
6 | @SerializedName("Date") val data: String,
7 | @SerializedName("DateUpdated") val dateUpdated: String,
8 | @SerializedName("LimitReached") val limitReached: Boolean,
9 | @SerializedName("TotalEarnedCoins") val totalEarnedCoins: Int,
10 | @SerializedName("AcquiredCoins") val acquiredCoins: Int
11 | )
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/selector_default_btn_stroke.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/background_with_elevation.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/background_with_elevation.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/selector_orange_btn_stroke.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/authentication/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("telematics.android.library")
3 | }
4 |
5 |
6 | android {
7 | namespace = "com.telematics.authentication"
8 | }
9 |
10 | dependencies {
11 |
12 | implementation(project(":domain"))
13 | implementation(project(":data"))
14 |
15 | implementation(platform(libs.firebase.bom))
16 | implementation(libs.firebase.database)
17 | implementation(libs.firebase.auth)
18 | implementation(libs.firebase.storage)
19 |
20 | implementation(libs.loginAuthFramework)
21 | }
--------------------------------------------------------------------------------
/content/src/main/res/drawable/radio_group_rounded_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
12 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/reward/DriveCoinsDetailed.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.reward
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class DriveCoinsDetailed(
6 | @SerializedName("CoinCategoryName") val coinCategoryName: String,
7 | @SerializedName("CoinCategoryToken") val coinCategoryToken: String,
8 | @SerializedName("CoinFactor") val coinFactor: String,
9 | @SerializedName("CoinFactorToken") val coinFactorToken: String,
10 | @SerializedName("CoinsSum") val coinsSum: Int
11 | )
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/user_exists/UserExists.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.user_exists
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class UserExists(
6 | @SerializedName("FirstName")
7 | val firstName: String?,
8 | @SerializedName("ImageUrl")
9 | val imageUrl: String?,
10 | @SerializedName("LastName")
11 | val lastName: String?,
12 | @SerializedName("Nickname")
13 | val nickname: String?,
14 | @SerializedName("UserExists")
15 | val userExists: Boolean
16 | )
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/leaderboard/LeaderboardType.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.leaderboard
2 |
3 | enum class LeaderboardType(val index: Int) {
4 | Rate(1),
5 |
6 | Acceleration(2),
7 | Deceleration(3),
8 | Speeding(4),
9 | Distraction(5),
10 | Turn(6),
11 |
12 | Trips(7),
13 | Distance(8),
14 | Duration(9);
15 |
16 | companion object {
17 | fun getFromIndex(index: Int): LeaderboardType {
18 | return values()[index - 1]
19 | }
20 | }
21 | }
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/reward/DriveCoinsScoreEco.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.reward
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class DriveCoinsScoreEco(
6 | @SerializedName("EcoScoreFuel") val ecoScoreFuel: Double,
7 | @SerializedName("EcoScoreTyres") val ecoScoreTyres: Double,
8 | @SerializedName("EcoScoreBrakes") val ecoScoreBrakes: Double,
9 | @SerializedName("EcoScoreDepreciation") val ecoScoreDepreciation: Double,
10 | @SerializedName("EcoScore") val ecoScore: Double
11 | )
--------------------------------------------------------------------------------
/core/sdkhelper/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | For optimal app function, a persistent notification is displayed. If preferred, disable it without affecting performance by tapping Settings.\nThanks for your understanding.
4 | Notification Reminder
5 | Settings
6 | Skip
7 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/reward/DriveCoinsDetailed2.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.reward
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class DriveCoinsDetailed2(
6 | @SerializedName("AccelerationsCount") val accelerationCount: Int,
7 | @SerializedName("BrakingsCount") val brakingCount: Int,
8 | @SerializedName("CorneringsCount") val corneringCount: Int,
9 | @SerializedName("TotalSpeedingKm") val totalSpeedingKm: Double,
10 | @SerializedName("PhoneUsageDurationMin") val phoneUsage: Double
11 | )
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/tracking/ChangeEventBody.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.tracking
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class ChangeEventBody(
6 | @SerializedName("EventType")
7 | val eventType: String?,
8 | @SerializedName("Latitude")
9 | val latitude: Double?,
10 | @SerializedName("Longitude")
11 | val longitude: Double?,
12 | @SerializedName("PointDate")
13 | val pointDate: String?,
14 | @SerializedName("ChangeTypeTo")
15 | val changeTypeTo: String?
16 | )
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_check.xml:
--------------------------------------------------------------------------------
1 |
6 |
14 |
15 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/carservice/ElmRest.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.carservice
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class ElmRest(
6 | @SerializedName("Id") val id: Int,
7 | @SerializedName("UUID") val uuid: String,
8 | @SerializedName("Name") val name: String?,
9 | @SerializedName("Model") val model: String?,
10 | @SerializedName("Manufacturer") val manufacturer: String?,
11 | @SerializedName("SoftwareVersion") val softwareVersion: String?,
12 | @SerializedName("Mac") val mac: String?
13 | )
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/statistics/DrivingDetailsData.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.statistics
2 |
3 | data class DrivingDetailsData(
4 | val createdAtUtc: String = "",
5 | val distanceKm: Double = 0.0,
6 | val durationMinutes: Double = 0.0,
7 | val periodDays: Int = 0,
8 | val score: Int = 0,
9 | val scoreAcceleration: Int = 0,
10 | val scoreDate: String = "",
11 | val scoreDeceleration: Int = 0,
12 | val scoreDistraction: Int = 0,
13 | val scoreSpeeding: Int = 0,
14 | val scoreTurn: Int = 0,
15 | val trips: Int = 0
16 | )
--------------------------------------------------------------------------------
/features/obd/src/main/res/values/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
13 |
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_next.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_rect_checkbox.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/statistics/UserStatisticsIndividualRest.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.statistics
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class UserStatisticsIndividualRest(
6 | @SerializedName("TripsCount") val tripsCount: Double,
7 | @SerializedName("MileageMile") val mileageMile: Double,
8 | @SerializedName("MileageKm") val mileageKm: Double,
9 | @SerializedName("DrivingTime") val drivingTime: Double,
10 | @SerializedName("AverageSpeedKmh") val averageSpeedKmh: Double,
11 | @SerializedName("MaxSpeedKmh") val maxSpeedKmh: Double
12 | )
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/ic_next.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/extentions/BundleExt.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.extentions
2 |
3 | import android.os.Build
4 | import android.os.Bundle
5 | import java.io.Serializable
6 |
7 | fun Bundle.getSerializableCompat(
8 | key: String?,
9 | clazz: Class
10 | ): T? {
11 | return when {
12 | Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU -> {
13 | getSerializable(key, clazz)
14 | }
15 |
16 | else -> {
17 | @Suppress("DEPRECATION", "UNCHECKED_CAST")
18 | getSerializable(key) as T?
19 | }
20 | }
21 | }
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/interceptor/InstanceValuesInterceptor.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.interceptor
2 |
3 | import com.telematics.data.BuildConfig
4 | import okhttp3.Interceptor
5 | import okhttp3.Response
6 |
7 | class InstanceValuesInterceptor : Interceptor {
8 | override fun intercept(chain: Interceptor.Chain): Response {
9 | val request = chain.request()
10 | .newBuilder()
11 | .addHeader("InstanceId", BuildConfig.INSTANCE_ID)
12 | .addHeader("InstanceKey", BuildConfig.INSTANCE_KEY)
13 | .build()
14 | return chain.proceed(request)
15 | }
16 | }
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_rect_checkbox_empty.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/statistics/UserStatisticsScoreRest.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.statistics
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class UserStatisticsScoreRest(
6 | @SerializedName("AccelerationScore") val accelerationScore: Double,
7 | @SerializedName("BrakingScore") val brakingScore: Double,
8 | @SerializedName("SpeedingScore") val speedingScore: Double,
9 | @SerializedName("PhoneUsageScore") val distractedScore: Double,
10 | @SerializedName("CorneringScore") val corneringScore: Double,
11 | @SerializedName("SafetyScore") val overallScore: Double
12 | )
--------------------------------------------------------------------------------
/authentication/src/main/java/com/telematics/authentication/model/UserDatabase.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.authentication.model
2 |
3 | class UserDatabase {
4 | var email: String? = null
5 | var deviceToken: String? = null
6 | var userId: String? = null
7 | var firstName: String? = null
8 | var lastName: String? = null
9 | var phone: String? = null
10 | var birthday: String? = null //in ISO
11 | var address: String? = null
12 | var clientId: String? = null
13 | var profilePictureLink: String? = null
14 | var gender: String? = null
15 | var maritalStatus: String? = null
16 | var childrenCount: Int? = 0
17 | }
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/ic_event_trip_round_gray.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/ic_event_trip_round_green.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
--------------------------------------------------------------------------------
/features/reward/src/main/java/com/telematics/features/reward/rewards/RewardViewModel.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.features.reward.rewards
2 |
3 | import androidx.lifecycle.ViewModel
4 | import com.telematics.domain.repository.SessionRepo
5 | import javax.inject.Inject
6 |
7 | class RewardViewModel @Inject constructor(
8 | private val sessionRepo: SessionRepo
9 | ) : ViewModel() {
10 |
11 | val isNeedShowRewardsInvite: Boolean
12 | get() {
13 | return !sessionRepo.isRewardInviteScreenOpened()
14 | }
15 |
16 | fun inviteScreenClosed() {
17 |
18 | sessionRepo.saveStateForRewardInviteScreen()
19 | }
20 |
21 | }
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/repository/CarServiceRepo.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.repository
2 |
3 | import com.telematics.domain.model.carservice.ManufacturerData
4 | import com.telematics.domain.model.carservice.ModelData
5 | import com.telematics.domain.model.carservice.Vehicle
6 |
7 | interface CarServiceRepo {
8 | suspend fun getVehicles(): List
9 | suspend fun createVehicle(vehicle: Vehicle)
10 | suspend fun updateVehicle(vehicle: Vehicle)
11 | suspend fun deleteVehicle(vehicleToken: String)
12 | suspend fun getManufacturers(): List
13 | suspend fun getModels(manufacturerId: Int): List
14 | }
--------------------------------------------------------------------------------
/features/feed/src/main/res/values/themes.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
16 |
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_back.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | 17sp
6 | 14sp
7 | 130dp
8 | 45dp
9 | 50dp
10 | 40dp
11 | 16dp
12 |
13 |
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/leaderboard/LeaderboardMemberData.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.leaderboard
2 |
3 | data class LeaderboardMemberData(
4 | var deviceToken: String? = null,
5 | var firstName: String? = null,
6 | var familyName: String? = null,
7 | var rank: Int = -1, // place
8 | var tracksCount: Int = 0, // rating
9 | var photoUrl: String? = null,
10 | var isCurrentUser: Boolean = false,
11 | var type: LeaderboardType = LeaderboardType.Rate,
12 | var nickname: String = "",
13 | var distance: Double = 0.0,
14 | var duration: Double = 0.0,
15 | var value: Double = 0.0,
16 | var valuePerc: Double = 0.0
17 | )
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_exit.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
17 |
18 |
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/repository/OnDemandRepo.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.repository
2 |
3 | import com.telematics.domain.model.on_demand.DashboardOnDemandJob
4 | import com.telematics.domain.model.on_demand.OnDemandJobState
5 |
6 | interface OnDemandRepo {
7 |
8 | suspend fun getOnDemandJobList(): List
9 |
10 | suspend fun putOnDemandJobList(list: List)
11 | suspend fun removeOnDemandJobByState(state: OnDemandJobState)
12 | suspend fun updateOnDemandJob(jobTagName: String, newState: String)
13 | suspend fun addOnDemandJob(job: DashboardOnDemandJob)
14 | fun removeOnDemandJob(job: DashboardOnDemandJob)
15 | }
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/usecase/AlarmPermissionUseCase.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.usecase
2 |
3 | import android.content.Context
4 | import com.telematics.data.extentions.isExactAlarmGranted
5 | import dagger.hilt.android.qualifiers.ApplicationContext
6 | import kotlinx.coroutines.flow.Flow
7 | import kotlinx.coroutines.flow.flow
8 | import javax.inject.Inject
9 |
10 | open class AlarmPermissionUseCase @Inject constructor(
11 | @ApplicationContext private val context: Context,
12 | ) {
13 |
14 | operator fun invoke(): Flow {
15 | return flow {
16 | emit(
17 | isExactAlarmGranted(context)
18 | )
19 | }
20 | }
21 | }
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/extentions/TaskExt.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.extentions
2 |
3 | import android.util.Log
4 | import kotlin.coroutines.resume
5 | import kotlin.coroutines.resumeWithException
6 | import kotlin.coroutines.suspendCoroutine
7 |
8 | suspend fun com.telematicssdk.auth.external.Task.await(): T =
9 | suspendCoroutine { continuation ->
10 | onSuccess {
11 | Log.d("com.telematicssdk.auth", "TASK: await: onSuccess")
12 | continuation.resume(it)
13 | }
14 | onError {
15 | Log.d("com.telematicssdk.auth", "TASK: await: onError ${it.message}")
16 | continuation.resumeWithException(it)
17 | }
18 | }
--------------------------------------------------------------------------------
/features/leaderboard/src/main/res/layout/layout_item_leaderboard_placeholder.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
14 |
--------------------------------------------------------------------------------
/features/reward/src/main/res/drawable/drive_coins_arrow_top.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
16 |
17 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/statistics/DrivingDetailsRest.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.statistics
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class DrivingDetailsRest(
6 | @SerializedName("SafetyScore")
7 | val score: Int,
8 | @SerializedName("AccelerationScore")
9 | val scoreAcceleration: Int,
10 | @SerializedName("CalcDate")
11 | val scoreDate: String,
12 | @SerializedName("BrakingScore")
13 | val scoreDeceleration: Int,
14 | @SerializedName("PhoneUsageScore")
15 | val scoreDistraction: Int,
16 | @SerializedName("SpeedingScore")
17 | val scoreSpeeding: Int,
18 | @SerializedName("CorneringScore")
19 | val scoreTurn: Int
20 | )
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/on_demand/OnDemandState.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.on_demand
2 |
3 | enum class OnDemandState {
4 | ONLINE, OFFLINE, ON_DUTY;
5 |
6 | companion object {
7 | fun translation(s: String?): OnDemandState {
8 | return when (s) {
9 | "online" -> ONLINE
10 | "offline" -> OFFLINE
11 | "on_duty" -> ON_DUTY
12 | else -> OFFLINE
13 | }
14 | }
15 | }
16 |
17 | override fun toString(): String {
18 | return when (this) {
19 | ONLINE -> "online"
20 | OFFLINE -> "offline"
21 | ON_DUTY -> "on_duty"
22 | }
23 | }
24 | }
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/ic_trip_details_speed_hint.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
17 |
18 |
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/custom_info_bubble.xml:
--------------------------------------------------------------------------------
1 |
6 |
7 |
8 |
11 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/statistics/ScoreTypeModel.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.statistics
2 |
3 | data class ScoreTypeModel(
4 | val type: ScoreType = ScoreType.OVERALL,
5 | val score: Int = -1,
6 | val data: MutableList> = mutableListOf()
7 | ) {
8 | companion object {
9 | fun empty() = mutableListOf(
10 | ScoreTypeModel(ScoreType.OVERALL, -2),
11 | ScoreTypeModel(ScoreType.ACCELERATION, -2),
12 | ScoreTypeModel(ScoreType.BREAKING, -2),
13 | ScoreTypeModel(ScoreType.PHONE_USAGE, -2),
14 | ScoreTypeModel(ScoreType.SPEEDING, -2),
15 | ScoreTypeModel(ScoreType.CORNERING, -2)
16 | )
17 | }
18 | }
--------------------------------------------------------------------------------
/features/feed/src/main/res/layout/fragment_trip_details_map.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
10 |
11 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/repository/UserRepo.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.repository
2 |
3 | import android.content.Context
4 | import android.graphics.Bitmap
5 | import com.telematics.domain.model.authentication.User
6 |
7 | interface UserRepo {
8 |
9 | suspend fun saveDeviceToken(deviceToken: String?)
10 | suspend fun getDeviceToken(): String
11 |
12 | suspend fun saveUserId(uId: String?)
13 | suspend fun getUserId(): String?
14 |
15 | suspend fun getUser(): User
16 | suspend fun saveUser(user: User)
17 |
18 | suspend fun getUserPicture(context: Context): Bitmap
19 |
20 | suspend fun needOnboarding(): Boolean
21 | suspend fun setNeedOnboarding(need: Boolean)
22 |
23 | suspend fun clear()
24 | }
--------------------------------------------------------------------------------
/features/reward/src/main/res/navigation/reward_nav_graph.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
16 |
17 |
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/ic_event_trip_bubble_taxi.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/features/obd/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
11 |
15 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/api/TripEventTypeApi.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.api
2 |
3 | import com.telematics.data.model.tracking.ChangeEventBody
4 | import retrofit2.http.Body
5 | import retrofit2.http.Header
6 | import retrofit2.http.POST
7 | import retrofit2.http.Path
8 |
9 | interface TripEventTypeApi {
10 |
11 | @POST("events/reportwrongeventtype/v1/{trackToken}")
12 | suspend fun changeEvent(
13 | @Header("DeviceToken") deviceToken: String,
14 | @Path("trackToken") trackToken: String,
15 | @Body body: ChangeEventBody
16 | )
17 |
18 | @POST("track/{trackId}/setdeleted/v1")
19 | suspend fun setDeleted(
20 | @Path("trackId") trackId: String,
21 | @Header("DeviceToken") deviceToken: String
22 | )
23 | }
--------------------------------------------------------------------------------
/features/feed/src/main/java/com/telematics/features/feed/FeedFeatureHost.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.features.feed
2 |
3 | import android.os.Bundle
4 | import android.view.LayoutInflater
5 | import android.view.View
6 | import android.view.ViewGroup
7 | import androidx.fragment.app.Fragment
8 | import com.telematics.feed.databinding.FragmentFeedFeatureHostBinding
9 |
10 | class FeedFeatureHost : Fragment() {
11 |
12 | lateinit var binding: FragmentFeedFeatureHostBinding
13 |
14 | override fun onCreateView(
15 | inflater: LayoutInflater,
16 | container: ViewGroup?,
17 | savedInstanceState: Bundle?
18 | ): View {
19 | binding = FragmentFeedFeatureHostBinding.inflate(inflater, container, false)
20 | return binding.root
21 | }
22 | }
--------------------------------------------------------------------------------
/features/feed/src/main/res/layout/fragment_feed_feature_host.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
14 |
15 |
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/carservice/Vehicle.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.carservice
2 |
3 | import java.io.Serializable
4 |
5 | data class Vehicle(
6 | var plateNumber: String? = "",
7 | var vin: String? = "",
8 | var manufacturer: String? = "",
9 | var manufacturerId: Int? = null,
10 | var model: String? = "",
11 | var modelId: Int? = null,
12 | var name: String? = "",
13 | var carYear: Int? = null,
14 | var initialMileage: String? = "",
15 |
16 | var token: String? = "",
17 | var activated: Boolean = false,
18 |
19 | var company: String? = "",
20 | var type: String? = "",
21 | var specialMarks: String? = "",
22 | var nvic: String? = "",
23 | var vehicleIdString: String? = ""
24 | ) : Serializable
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/on_demand/DashboardOnDemandJob.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.on_demand
2 |
3 | import androidx.room.Entity
4 | import androidx.room.PrimaryKey
5 |
6 | @Entity(tableName = "DashboardOnDemandJob")
7 | data class DashboardOnDemandJob(
8 | val name: String,
9 | val state: String,
10 | val createTime: Long //use for sort by date
11 | ) {
12 |
13 | @PrimaryKey(autoGenerate = true)
14 | var key: Int = 0
15 |
16 | val getTag: String
17 | get() {
18 | return name
19 | }
20 |
21 | val getOriginName: String
22 | get() {
23 | return createTime.toString()
24 | }
25 |
26 | val getName: String
27 | get() {
28 | return name
29 | }
30 | }
--------------------------------------------------------------------------------
/features/reward/src/main/res/layout/fragment_reward_feature_host.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/java/com/telematics/zenroad/MainApplication.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.zenroad
2 |
3 | import android.app.Application
4 | import androidx.appcompat.app.AppCompatDelegate
5 | import com.telematics.data.extentions.isExactAlarmGranted
6 | import com.telematics.data.tracking.TrackingUseCase
7 | import dagger.hilt.android.HiltAndroidApp
8 | import javax.inject.Inject
9 |
10 | @HiltAndroidApp
11 | class MainApplication : Application() {
12 |
13 | @Inject
14 | lateinit var trackingUseCase: TrackingUseCase
15 |
16 | override fun onCreate() {
17 | super.onCreate()
18 | AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
19 |
20 | if (isExactAlarmGranted(this)) {
21 | trackingUseCase.initializeSdk()
22 | }
23 | }
24 | }
--------------------------------------------------------------------------------
/features/account/src/main/res/layout/fragment_account_feature_host.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
14 |
15 |
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/progress_bg.xml:
--------------------------------------------------------------------------------
1 |
2 | -
3 |
4 |
5 |
6 |
7 |
8 |
9 | -
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_rect_checkbox_fill.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
13 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/features/account/src/main/res/layout/account_navigation_fragment.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
16 |
17 |
--------------------------------------------------------------------------------
/features/leaderboard/src/main/res/layout/fragment_leaderboard_feature_host.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/java/com/telematics/zenroad/ui/onboarding/OnboardingViewModel.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.zenroad.ui.onboarding
2 |
3 | import androidx.lifecycle.ViewModel
4 | import androidx.lifecycle.viewModelScope
5 | import com.telematics.domain.repository.UserRepo
6 | import kotlinx.coroutines.Dispatchers
7 | import kotlinx.coroutines.flow.flow
8 | import kotlinx.coroutines.flow.flowOn
9 | import kotlinx.coroutines.flow.launchIn
10 | import javax.inject.Inject
11 |
12 | class OnboardingViewModel @Inject constructor(
13 | private val userRepo: UserRepo
14 | ) : ViewModel() {
15 |
16 | fun onboardingScreenComplete() {
17 |
18 | flow {
19 | emit(userRepo.setNeedOnboarding(false))
20 | }
21 | .flowOn(Dispatchers.IO)
22 | .launchIn(viewModelScope)
23 | }
24 | }
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_dash_arrow_down_gray.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
--------------------------------------------------------------------------------
/features/account/src/main/java/com/telematics/features/account/AccountFeatureHost.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.features.account
2 |
3 | import android.os.Bundle
4 | import android.view.LayoutInflater
5 | import android.view.View
6 | import android.view.ViewGroup
7 | import androidx.fragment.app.Fragment
8 | import com.telematics.features.account.databinding.FragmentAccountFeatureHostBinding
9 |
10 | class AccountFeatureHost : Fragment() {
11 |
12 | private lateinit var binding: FragmentAccountFeatureHostBinding
13 |
14 | override fun onCreateView(
15 | inflater: LayoutInflater,
16 | container: ViewGroup?,
17 | savedInstanceState: Bundle?
18 | ): View {
19 | binding = FragmentAccountFeatureHostBinding.inflate(inflater, container, false)
20 | return binding.root
21 | }
22 | }
--------------------------------------------------------------------------------
/features/leaderboard/src/main/java/com/telematics/features/leaderboard/LeaderboardFeatureHost.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.features.leaderboard
2 |
3 | import android.os.Bundle
4 | import android.view.LayoutInflater
5 | import android.view.View
6 | import android.view.ViewGroup
7 | import androidx.fragment.app.Fragment
8 | import com.telematics.leaderboard.databinding.FragmentLeaderboardFeatureHostBinding
9 |
10 | class LeaderboardFeatureHost : Fragment() {
11 |
12 | lateinit var binding: FragmentLeaderboardFeatureHostBinding
13 |
14 | override fun onCreateView(
15 | inflater: LayoutInflater,
16 | container: ViewGroup?,
17 | savedInstanceState: Bundle?
18 | ): View {
19 | binding = FragmentLeaderboardFeatureHostBinding.inflate(inflater, container, false)
20 | return binding.root
21 | }
22 | }
--------------------------------------------------------------------------------
/app/src/main/res/layout/main_activity.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
16 |
17 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/tracking/MeasuresFormatter.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.tracking
2 |
3 | import com.telematics.domain.model.measures.DistanceMeasure
4 | import java.util.Date
5 |
6 |
7 | interface MeasuresFormatter {
8 |
9 | fun getFullNewDate(date: Date?): String
10 | fun getDateMonthDay(date: Date?): String
11 | fun parseDate(date: String): Date?
12 | fun getTime(date: Date?): String
13 | fun getDateYearTime(date: Date?): String
14 |
15 | fun parseFullNewDate(date: String): Date?
16 | fun getDateWithTime(date: Date?): String
17 |
18 | fun getDistanceByKm(km: Double): Double
19 | fun getDistanceByKm(km: Float): Double
20 | fun getDistanceByKm(km: Int): Double
21 | fun getDistanceMeasureValue(): DistanceMeasure
22 |
23 | fun getDateForDemandMode(time: Long?): String
24 | }
--------------------------------------------------------------------------------
/core/sdkhelper/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/extentions/ResourceExt.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.extentions
2 |
3 | import android.annotation.SuppressLint
4 | import android.content.Context
5 | import android.content.res.Resources
6 | import android.graphics.drawable.Drawable
7 | import android.os.Build
8 |
9 | @Suppress("DEPRECATION")
10 | fun Resources.color(colorRes: Int) =
11 | if (Build.VERSION.SDK_INT >= 23) {
12 | this.getColor(colorRes, null)
13 | } else {
14 | this.getColor(colorRes)
15 | }
16 |
17 | @SuppressLint("ObsoleteSdkInt")
18 | @Suppress("DEPRECATION")
19 | fun Resources.drawable(drawableRes: Int, context: Context): Drawable =
20 | if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
21 | this.getDrawable(drawableRes, context.theme)
22 | } else {
23 | this.getDrawable(drawableRes)
24 | }
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/repository/UserServicesRepo.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.repository
2 |
3 | import com.telematics.domain.model.LoginType
4 | import com.telematics.domain.model.RegistrationApiData
5 | import com.telematics.domain.model.SessionData
6 | import com.telematics.domain.model.authentication.IUser
7 | import com.telematics.domain.model.company_id.InstanceName
8 |
9 | interface UserServicesRepo {
10 | suspend fun login(login: String, password: String, loginType: LoginType): SessionData
11 | suspend fun logout()
12 | suspend fun loginWithDeviceToken(deviceToken: String): SessionData
13 | suspend fun registration(): RegistrationApiData
14 | suspend fun updateUser(user: IUser): SessionData
15 | suspend fun updateUserPicture(path: String)
16 | suspend fun changeCompanyId(companyId: String): InstanceName
17 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/telematics/zenroad/di/DatabaseModule.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.zenroad.di
2 |
3 | import android.content.Context
4 | import com.telematics.data.db_room.AppDatabase
5 | import com.telematics.data.db_room.OnDemandDao
6 | import dagger.Module
7 | import dagger.Provides
8 | import dagger.hilt.InstallIn
9 | import dagger.hilt.android.qualifiers.ApplicationContext
10 | import dagger.hilt.components.SingletonComponent
11 | import javax.inject.Singleton
12 |
13 | @InstallIn(SingletonComponent::class)
14 | @Module
15 | class DatabaseModule {
16 | @Provides
17 | @Singleton
18 | fun provideAppDatabase(
19 | @ApplicationContext appContext: Context
20 | ): AppDatabase = AppDatabase(appContext)
21 |
22 | @Provides
23 | @Singleton
24 | fun provideOnDemandDao(appDatabase: AppDatabase): OnDemandDao = appDatabase.onDemandDao()
25 | }
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_event_trash.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_edit.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
14 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/features/account/src/main/res/xml/file_paths.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
9 |
12 |
15 |
16 |
19 |
22 |
25 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # You can control the set of applied configuration files using the
3 | # proguardFiles setting in build.gradle.kts.
4 | #
5 | # For more details, see
6 | # http://developer.android.com/guide/developing/tools/proguard.html
7 |
8 | # If your project uses WebView with JS, uncomment the following
9 | # and specify the fully qualified class name to the JavaScript interface
10 | # class:
11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12 | # public *;
13 | #}
14 |
15 | # Uncomment this to preserve the line number information for
16 | # debugging stack traces.
17 | #-keepattributes SourceFile,LineNumberTable
18 |
19 | # If you keep the line number information, uncomment this to
20 | # hide the original source file name.
21 | #-renamesourcefileattribute SourceFile
22 | -keep public class com.telematicssdk.auth.** {*;}
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/repository/RewardRepo.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.repository
2 |
3 | import com.telematics.domain.model.reward.DailyLimitData
4 | import com.telematics.domain.model.reward.DriveCoinsDetailedData
5 | import com.telematics.domain.model.reward.DriveCoinsDuration
6 | import com.telematics.domain.model.reward.DriveCoinsTotalData
7 | import com.telematics.domain.model.reward.Streak
8 | import com.telematics.domain.model.reward.StreaksData
9 |
10 | interface RewardRepo {
11 |
12 | suspend fun getDaily(): List>
13 | suspend fun getDailyLimit(): DailyLimitData
14 | suspend fun getTotalCoinsByDuration(duration: DriveCoinsDuration): DriveCoinsTotalData
15 | suspend fun getDetailed(duration: DriveCoinsDuration): DriveCoinsDetailedData
16 | suspend fun getStreaks(): List
17 | suspend fun getDrivingStreaks(): StreaksData
18 | }
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/carservice/CarUpdateBody.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.carservice
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class CarUpdateBody(
6 | @SerializedName("Name") val name: String? = "",
7 | @SerializedName("PlateNumber") val plateNumber: String? = "",
8 | @SerializedName("Vin") val vin: String? = "",
9 | @SerializedName("ManufacturerId") val manufacturerId: Int? = null,
10 | @SerializedName("ManufacturerName") val manufacturer: String? = "",
11 | @SerializedName("ModelId") val modelId: Int? = null,
12 | @SerializedName("ModelName") val model: String? = "",
13 | @SerializedName("TypeName") val type: String? = "",
14 | @SerializedName("CarYear") val carYear: Int? = 0,
15 | @SerializedName("InitialMilage") val initialMileage: String? = "",
16 | @SerializedName("EntityStatus") val status: Int? = 1
17 | )
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/api/LeaderboardApi.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.api
2 |
3 | import com.telematics.data.model.rest.ApiResponse
4 | import com.telematics.data.model.statistics.LeaderboardResponse
5 | import com.telematics.data.model.statistics.LeaderboardUserResponse
6 | import retrofit2.http.GET
7 | import retrofit2.http.Header
8 | import retrofit2.http.Query
9 |
10 | interface LeaderboardApi {
11 |
12 | @GET("v1/Leaderboard")
13 | suspend fun getLeaderBoard(
14 | @Header("DeviceToken") deviceToken: String,
15 | @Query("usersCount") userCount: Int? = 10,
16 | @Query("roundUsersCount") roundUsersCount: Int? = 2,
17 | @Query("ScoringRate") scoringRate: Int
18 | ): ApiResponse
19 |
20 | @GET("v1/Leaderboard/user")
21 | suspend fun getUserLeaderboard(
22 | @Header("DeviceToken") deviceToken: String
23 | ): ApiResponse
24 | }
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_leaderboard_more.xml:
--------------------------------------------------------------------------------
1 |
6 |
12 |
13 |
--------------------------------------------------------------------------------
/data/src/main/res/drawable/ic_wizard_page_location_bg.xml:
--------------------------------------------------------------------------------
1 |
2 | -
3 |
4 |
-
5 |
6 |
7 |
8 |
9 |
10 | -
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/features/account/src/main/res/layout/vehicles_choose_item_view.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
20 |
--------------------------------------------------------------------------------
/features/obd/src/main/res/layout/vehicles_choose_item_view.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
20 |
--------------------------------------------------------------------------------
/features/feed/src/main/java/com/telematics/features/feed/model/SpeedType.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.features.feed.model
2 |
3 | import androidx.annotation.ColorRes
4 | import com.telematics.feed.R
5 |
6 | enum class SpeedType constructor(
7 | val type: String,
8 | @param:ColorRes @field:ColorRes val colorResId: Int
9 | ) {
10 |
11 | UNKNOWN("", R.color.colorSpeedTypeNormal),
12 | NORMAL("norm", R.color.colorSpeedTypeNormal),
13 | MID("mid", R.color.colorSpeedTypeMid),
14 | HIGH("high", R.color.colorSpeedTypeHigh);
15 |
16 | companion object {
17 |
18 | fun from(type: String?): SpeedType {
19 | for (speedType in values()) {
20 | if (speedType.type == type) {
21 | return speedType
22 | }
23 | }
24 | return UNKNOWN
25 | }
26 |
27 | @ColorRes
28 | fun getColor(type: String?): Int {
29 | return from(type).colorResId
30 | }
31 | }
32 |
33 | }
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/login/UserUpdateBody.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.login
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class UserUpdateBody(
6 | @SerializedName("Phone")
7 | val phone: String? = null,
8 | @SerializedName("Email")
9 | val email: String? = null,
10 | @SerializedName("address")
11 | val address: String? = null,
12 | @SerializedName("birthday")
13 | val birthday: String? = null,
14 | @SerializedName("childrenCount")
15 | val childrenCount: Int? = null,
16 | @SerializedName("firstName")
17 | val firstName: String? = null,
18 | @SerializedName("gender")
19 | val gender: String? = null,
20 | @SerializedName("lastName")
21 | val lastName: String? = null,
22 | @SerializedName("maritalStatus")
23 | val maritalStatus: String? = null,
24 | @SerializedName("ClientID")
25 | val clientId: String? = null,
26 | @SerializedName("imageUrl")
27 | val imageUrl: String? = null
28 | )
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/statistics/LeaderboardUserBody.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.statistics
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class LeaderboardUserBody(
6 | @SerializedName("DeviceToken")
7 | val deviceToken: String?,
8 | @SerializedName("Distance")
9 | val distance: Double?,
10 | @SerializedName("Duration")
11 | val duration: Double?,
12 | @SerializedName("FirstName")
13 | val firstName: String?,
14 | @SerializedName("Image")
15 | val image: String?,
16 | @SerializedName("IsCurrentUser")
17 | val isCurrentUser: Boolean?,
18 | @SerializedName("LastName")
19 | val lastName: String?,
20 | @SerializedName("Nickname")
21 | val nickname: String?,
22 | @SerializedName("Place")
23 | val place: Int?,
24 | @SerializedName("Trips")
25 | val trips: Int?,
26 | @SerializedName("Value")
27 | val value: Double?,
28 | @SerializedName("ValuePerc")
29 | val valuePerc: Double?
30 | )
31 |
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/leaderboard/LeaderboardUserItems.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.leaderboard
2 |
3 | import androidx.recyclerview.widget.DiffUtil
4 |
5 | data class LeaderboardUserItems(
6 | val type: LeaderboardType = LeaderboardType.Rate,
7 | val progress: Double = 0.0,
8 | val place: Int = -1,
9 | val progressMax: Int = 100
10 | ) {
11 | companion object {
12 | val DIFF_CALLBACK = object : DiffUtil.ItemCallback() {
13 | override fun areItemsTheSame(
14 | oldItem: LeaderboardUserItems,
15 | newItem: LeaderboardUserItems
16 | ): Boolean {
17 | return oldItem == newItem
18 | }
19 |
20 | override fun areContentsTheSame(
21 | oldItem: LeaderboardUserItems,
22 | newItem: LeaderboardUserItems
23 | ): Boolean {
24 | return oldItem == newItem
25 | }
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/ic_event_message_round.xml:
--------------------------------------------------------------------------------
1 |
7 |
15 |
16 |
--------------------------------------------------------------------------------
/features/reward/src/main/res/drawable/ic_acceleration_arrow.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
18 |
23 |
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/ic_dot_a_trip_v.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
11 |
14 |
17 |
--------------------------------------------------------------------------------
/features/obd/src/main/java/ui/step_unknown_error/CouldNotConnectFragment.kt:
--------------------------------------------------------------------------------
1 | package ui.step_unknown_error
2 |
3 | import android.os.Bundle
4 | import android.view.LayoutInflater
5 | import android.view.View
6 | import android.view.ViewGroup
7 | import com.telematics.content.utils.BaseFragment
8 | import com.telematics.obd.databinding.FragmentOdbOopsBinding
9 |
10 | class CouldNotConnectFragment : BaseFragment() {
11 |
12 | private lateinit var binding: FragmentOdbOopsBinding
13 |
14 | override fun onCreateView(
15 | inflater: LayoutInflater, container: ViewGroup?,
16 | savedInstanceState: Bundle?
17 | ): View {
18 | binding = FragmentOdbOopsBinding.inflate(inflater, container, false)
19 | return binding.root
20 | }
21 |
22 | override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
23 | super.onViewCreated(view, savedInstanceState)
24 |
25 | binding.tryAgainButton.setOnClickListener {
26 | onBackPressed()
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/features/leaderboard/src/main/res/layout/fragment_leaderboard_details_page.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
12 |
13 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/features/feed/src/main/res/navigation/feed_nav_graph.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
13 |
16 |
17 |
18 |
23 |
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_arrow_double_back.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
12 |
13 |
--------------------------------------------------------------------------------
/content/src/main/res/drawable/ic_login_email.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
20 |
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/ic_empty_dashboard_last_trip_warning.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/extentions/ViewExt.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.extentions
2 |
3 | import android.content.res.ColorStateList
4 | import android.widget.ProgressBar
5 | import androidx.core.content.ContextCompat
6 | import com.telematics.data.R
7 |
8 | fun ProgressBar.setProgressWithColor(p: Int) {
9 |
10 | val newP = if (p > 100) 100 else if (p < 0) 0 else p
11 | progressTintList =
12 | ColorStateList.valueOf(ContextCompat.getColor(this.context, p.getColorByScore()))
13 | progress = newP
14 | }
15 |
16 | fun Int.getColorByScore(): Int {
17 | return when (if (this > 100) 100 else if (this < 0) 0 else this) {
18 | in 81..100 -> {
19 | R.color.colorSpeedTypeNormal
20 | }
21 |
22 | in 61..80 -> {
23 | R.color.colorSpeedTypeMid
24 | }
25 |
26 | in 40..60 -> {
27 | R.color.colorSpeedTypeMid2
28 | }
29 |
30 | in 0..39 -> {
31 | R.color.colorSpeedTypeHigh
32 | }
33 |
34 | else -> R.color.colorSpeedTypeNormal
35 | }
36 | }
--------------------------------------------------------------------------------
/features/dashboard/src/main/res/drawable/ic_empty_dashboard_last_trip_warning.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/features/feed/src/main/res/drawable/ic_dash_arrow_up_gray.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
13 |
14 |
--------------------------------------------------------------------------------
/content/src/main/java/com/telematics/content/utils/TryOpenLink.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.content.utils
2 |
3 | import android.content.Context
4 | import android.content.Intent
5 | import android.net.Uri
6 | import android.webkit.URLUtil
7 |
8 | class TryOpenLink(private val context: Context) {
9 | fun open(link: String): Boolean {
10 |
11 | if (!URLUtil.isValidUrl(link)) return false
12 |
13 | val openIntent = Intent(Intent.ACTION_VIEW).apply {
14 | addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
15 | addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY)
16 | setDataAndType(Uri.parse(link), "text/html")
17 | }
18 |
19 | return try {
20 | context.startActivity(openIntent)
21 | true
22 | } catch (ex: Exception) {
23 | try {
24 | openIntent.addCategory(Intent.CATEGORY_BROWSABLE)
25 | context.startActivity(openIntent)
26 | true
27 | } catch (ex: Exception) {
28 | false
29 | }
30 | }
31 | }
32 | }
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/extentions/FlowExt.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.extentions
2 |
3 | import androidx.lifecycle.MutableLiveData
4 | import com.telematics.data.utils.Resource
5 | import kotlinx.coroutines.flow.Flow
6 | import kotlinx.coroutines.flow.catch
7 | import kotlinx.coroutines.flow.onEach
8 | import kotlinx.coroutines.flow.onStart
9 |
10 | fun Flow.setLiveData(liveData: MutableLiveData>): Flow {
11 | return this
12 | .onStart {
13 | liveData.postValue(Resource.Loading())
14 | }
15 | .onEach {
16 | liveData.postValue(Resource.Success(it))
17 | }
18 | .catch {
19 | liveData.postValue(Resource.Failure(it))
20 | }
21 | }
22 |
23 | fun Flow.setLiveDataForResult(liveData: MutableLiveData>): Flow {
24 | return this
25 | .onStart {
26 |
27 | }
28 | .onEach {
29 | liveData.postValue(Result.success(it))
30 | }
31 | .catch {
32 | liveData.postValue(Result.failure(it))
33 | }
34 | }
--------------------------------------------------------------------------------
/features/account/src/main/res/drawable-xxxhdpi/ic_wizard_email.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/network_security_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | raxel-test.raxeltelematics.com
5 |
6 |
7 | user.telematicssdk.com
8 |
9 |
10 | leaderboard.telematicssdk.com
11 |
12 |
13 | test.raxeltelematics.com
14 |
15 |
16 | telematicssdk.com
17 |
18 |
19 | test.telematicssdk.com
20 |
21 |
--------------------------------------------------------------------------------
/domain/src/main/java/com/telematics/domain/model/leaderboard/LeaderboardUser.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.domain.model.leaderboard
2 |
3 | data class LeaderboardUser(
4 | val accelerationPerc: Double = 0.0,
5 | val accelerationPlace: Int = 0,
6 | val accelerationScore: Double = 0.0,
7 | val decelerationPerc: Double = 0.0,
8 | val decelerationPlace: Int = 0,
9 | val decelerationScore: Double = 0.0,
10 | val distance: Double = 0.0,
11 | val distractionPerc: Double = 0.0,
12 | val distractionPlace: Int = 0,
13 | val distractionScore: Double = 0.0,
14 | val duration: Double = 0.0,
15 | val perc: Double = 0.0,
16 | val place: Int = 0,
17 | val score: Double = 0.0,
18 | val speedingPerc: Double = 0.0,
19 | val speedingPlace: Int = 0,
20 | val speedingScore: Double = 0.0,
21 | val trips: Int = 0,
22 | val turnPerc: Double = 0.0,
23 | val turnPlace: Int = 0,
24 | val turnScore: Double = 0.0,
25 | val usersNumber: Int = 0,
26 | val tripsPlace: Int = 0,
27 | val durationPlace: Int = 0,
28 | val distancePlace: Int = 0
29 | )
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/model/carservice/CarRest.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.model.carservice
2 |
3 | import com.google.gson.annotations.SerializedName
4 |
5 | data class CarRest(
6 | @SerializedName("Company") val company: String?,
7 | @SerializedName("Name") val name: String?,
8 | @SerializedName("PlateNumber") val plateNumber: String?,
9 | @SerializedName("Vin") val vin: String?,
10 | @SerializedName("ManufacturerId") val manufacturerId: Int?,
11 | @SerializedName("Manufacturer") val manufacturer: String?,
12 | @SerializedName("ModelId") val modelId: Int?,
13 | @SerializedName("Model") val model: String?,
14 | @SerializedName("Type") val type: String?,
15 | @SerializedName("CarYear") val carYear: Int?,
16 | @SerializedName("SpecialMarks") val specialMarks: String?,
17 | @SerializedName("Nvic") val nvic: String?,
18 | @SerializedName("InitialMilage") val initialMilage: String?,
19 | @SerializedName("VehicleIdString") val vehicleIdString: String?,
20 | @SerializedName("Token") val token: String?,
21 | var activated: Boolean
22 | )
--------------------------------------------------------------------------------
/features/reward/src/main/res/drawable/drive_coins_eco_score.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/features/obd/src/main/res/layout/elm_device_item_view.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
22 |
23 |
--------------------------------------------------------------------------------
/app/src/main/java/com/telematics/zenroad/ui/login/LoginViewModel.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.zenroad.ui.login
2 |
3 | import androidx.lifecycle.LiveData
4 | import androidx.lifecycle.MutableLiveData
5 | import androidx.lifecycle.ViewModel
6 | import androidx.lifecycle.viewModelScope
7 | import com.telematics.data.extentions.setLiveDataForResult
8 | import com.telematics.features.account.use_case.LoginUseCase
9 | import kotlinx.coroutines.Dispatchers
10 | import kotlinx.coroutines.flow.flowOn
11 | import kotlinx.coroutines.flow.launchIn
12 | import javax.inject.Inject
13 |
14 | class LoginViewModel @Inject constructor(
15 | private var loginUseCase: LoginUseCase
16 | ) : ViewModel() {
17 |
18 | fun authorize(
19 | login: String,
20 | password: String
21 | ): LiveData> {
22 |
23 | val authorizeState = MutableLiveData>()
24 |
25 | loginUseCase.authorize(login, password)
26 | .flowOn(Dispatchers.IO)
27 | .setLiveDataForResult(authorizeState)
28 | .launchIn(viewModelScope)
29 |
30 | return authorizeState
31 | }
32 | }
--------------------------------------------------------------------------------
/settings.gradle.kts:
--------------------------------------------------------------------------------
1 | pluginManagement {
2 | includeBuild("build-logic")
3 | repositories {
4 | google()
5 | mavenCentral()
6 | gradlePluginPortal()
7 | }
8 | }
9 | dependencyResolutionManagement {
10 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
11 | gradle.startParameter.excludedTaskNames.addAll(listOf(":build-logic:convention:testClasses"))
12 | repositories {
13 | google()
14 | mavenCentral()
15 | //jcenter() // Warning: this repository is going to shut down soon
16 | maven { url = uri("https://jitpack.io") }
17 | maven { url = uri("https://s3.us-east-2.amazonaws.com/android.telematics.sdk.production/") }
18 | maven { url = uri("file://${rootDir}/repo") }
19 | }
20 | }
21 | include(
22 | ":app",
23 | ":data",
24 | ":domain",
25 | ":content",
26 | ":authentication",
27 | ":features:account",
28 | ":features:dashboard",
29 | ":features:feed",
30 | ":features:leaderboard",
31 | ":features:reward",
32 | ":features:obd",
33 | ":core:sdkhelper"
34 | )
35 | rootProject.name = "Telematics"
36 |
--------------------------------------------------------------------------------
/app/src/main/java/com/telematics/zenroad/ui/settings/company_id/CompanyIdViewModel.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.zenroad.ui.settings.company_id
2 |
3 | import androidx.lifecycle.LiveData
4 | import androidx.lifecycle.MutableLiveData
5 | import androidx.lifecycle.ViewModel
6 | import androidx.lifecycle.viewModelScope
7 | import com.telematics.data.extentions.setLiveDataForResult
8 | import com.telematics.domain.model.company_id.InstanceName
9 | import com.telematics.features.account.use_case.LoginUseCase
10 | import kotlinx.coroutines.Dispatchers
11 | import kotlinx.coroutines.flow.flowOn
12 | import kotlinx.coroutines.flow.launchIn
13 | import javax.inject.Inject
14 |
15 | class CompanyIdViewModel @Inject constructor(
16 | private val loginUseCase: LoginUseCase
17 | ) : ViewModel() {
18 |
19 | fun send(companyId: String): LiveData> {
20 |
21 | val logoutState = MutableLiveData>()
22 | loginUseCase.changeCompanyId(companyId)
23 | .flowOn(Dispatchers.IO)
24 | .setLiveDataForResult(logoutState)
25 | .launchIn(viewModelScope)
26 | return logoutState
27 | }
28 | }
--------------------------------------------------------------------------------
/data/src/main/java/com/telematics/data/db_room/OnDemandDao.kt:
--------------------------------------------------------------------------------
1 | package com.telematics.data.db_room
2 |
3 | import androidx.room.Dao
4 | import androidx.room.Insert
5 | import androidx.room.OnConflictStrategy
6 | import androidx.room.Query
7 | import com.telematics.domain.model.on_demand.DashboardOnDemandJob
8 |
9 | @Dao
10 | interface OnDemandDao {
11 |
12 | @Query("SELECT * FROM DashboardOnDemandJob")
13 | fun getOnDemandJobList(): List
14 |
15 | @Insert(onConflict = OnConflictStrategy.REPLACE)
16 | fun putOnDemandJobList(list: List)
17 |
18 | @Query("DELETE FROM DashboardOnDemandJob WHERE state = :state")
19 | fun removeOnDemandJobByState(state: String)
20 |
21 | @Query("UPDATE DashboardOnDemandJob SET state = :newState WHERE createTime = :originJobName")
22 | fun updateOnDemandJob(originJobName: String, newState: String)
23 |
24 | @Insert(onConflict = OnConflictStrategy.REPLACE)
25 | fun addOnDemandJob(job: DashboardOnDemandJob)
26 |
27 | @Query("DELETE FROM DashboardOnDemandJob WHERE createTime = :originJobName")
28 | fun removeOnDemandJob(originJobName: String)
29 | }
--------------------------------------------------------------------------------
/features/reward/src/main/res/layout/fragment_streaks.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
22 |
23 |
--------------------------------------------------------------------------------