├── .editorconfig ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── PULL_REQUEST_TEMPLATE.md ├── auto_label.yml └── workflows │ ├── Build.yml │ └── stale.yml ├── .gitignore ├── .idea ├── codeStyles │ └── codeStyleConfig.xml ├── encodings.xml ├── misc.xml ├── runConfigurations.xml └── vcs.xml ├── .m2 └── repository │ └── com │ └── github │ └── jasminb │ └── jsonapi-converter │ └── 0.11-SNAPSHOT │ ├── _remote.repositories │ ├── jsonapi-converter-0.11-SNAPSHOT.jar │ ├── jsonapi-converter-0.11-SNAPSHOT.pom │ └── maven-metadata-local.xml ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── app ├── .gitignore ├── build.gradle ├── google-services.json ├── libs │ └── YouTubeAndroidPlayerApi.jar ├── proguard-rules.pro ├── schemas │ └── com.codingblocks.cbonlineapp.database.AppDatabase │ │ ├── 21.json │ │ ├── 22.json │ │ ├── 23.json │ │ ├── 24.json │ │ ├── 25.json │ │ ├── 26.json │ │ ├── 27.json │ │ ├── 28.json │ │ ├── 29.json │ │ ├── 30.json │ │ ├── 31.json │ │ └── 32.json ├── screenshots │ ├── 1.png │ ├── 2.png │ ├── 3.png │ ├── 4.png │ ├── 5.png │ ├── 6.png │ ├── 7.png │ ├── 8.png │ └── 9.png ├── signingconfigs.gradle └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── codingblocks │ │ └── cbonlineapp │ │ └── ExampleInstrumentedTest.kt │ ├── debug │ └── res │ │ └── values │ │ └── strings.xml │ ├── main │ ├── AndroidManifest.xml │ ├── assets │ │ ├── Chat.html │ │ ├── comparision.json │ │ ├── csvjson.json │ │ ├── demographics.json │ │ ├── fonts │ │ │ ├── gilroy_bold.ttf │ │ │ └── gilroy_medium.ttf │ │ ├── gift.json │ │ └── lose.json │ ├── feature-graphic.png │ ├── ic_launcher-playstore.png │ ├── ic_launcher-web.png │ ├── java │ │ └── com │ │ │ └── codingblocks │ │ │ └── cbonlineapp │ │ │ ├── CBOnlineApp.kt │ │ │ ├── CrashHandler.kt │ │ │ ├── SplashActivity.kt │ │ │ ├── URLRouterActivity.kt │ │ │ ├── admin │ │ │ ├── AdminActivity.kt │ │ │ ├── InboxFragment.kt │ │ │ ├── doubts │ │ │ │ ├── AdminDoubtRepository.kt │ │ │ │ ├── AdminDoubtsFragment.kt │ │ │ │ ├── AdminDoubtsListAdapter.kt │ │ │ │ ├── AdminDoubtsViewHolder.kt │ │ │ │ ├── AdminDoubtsViewModel.kt │ │ │ │ └── DoubtReceiver.kt │ │ │ └── overview │ │ │ │ ├── AdminLeaderBoardListAdapter.kt │ │ │ │ ├── AdminLeaderBoardViewHolder.kt │ │ │ │ ├── AdminOverviewFragment.kt │ │ │ │ ├── AdminOverviewRepository.kt │ │ │ │ └── AdminOverviewViewModel.kt │ │ │ ├── analytics │ │ │ └── AppCrashlyticsWrapper.kt │ │ │ ├── auth │ │ │ ├── AuthRepository.kt │ │ │ ├── AuthViewModel.kt │ │ │ ├── LoginActivity.kt │ │ │ ├── LoginEmailBottomSheet.kt │ │ │ ├── LoginHomeFragment.kt │ │ │ ├── LoginOtpFragment.kt │ │ │ ├── SignInFragment.kt │ │ │ ├── SignUpFragment.kt │ │ │ ├── SocialLoginFragment.kt │ │ │ └── onboarding │ │ │ │ ├── CompleteProfileActivity.kt │ │ │ │ ├── Intro.kt │ │ │ │ ├── IntroPagerAdapter.kt │ │ │ │ └── OnBoardingActivity.kt │ │ │ ├── baseclasses │ │ │ ├── BaseCBActivity.kt │ │ │ ├── BaseCBFragment.kt │ │ │ ├── BaseCBViewModel.kt │ │ │ └── BaseLifecycleComponent.kt │ │ │ ├── campaign │ │ │ ├── CampaignActivity.kt │ │ │ ├── CampaignDataSource.kt │ │ │ ├── CampaignRepository.kt │ │ │ ├── CampaignViewModel.kt │ │ │ ├── HomeFragment.kt │ │ │ ├── LeaderBoardFragment.kt │ │ │ ├── LeaderBoardPagedListAdapter.kt │ │ │ ├── RulesFragment.kt │ │ │ ├── WinningsFragment.kt │ │ │ └── WinningsListAdapter.kt │ │ │ ├── commons │ │ │ ├── CarouselSliderAdapter.kt │ │ │ ├── EndlessPagerAdapter.kt │ │ │ ├── FragmentChangeListener.kt │ │ │ ├── InstructorListAdapter.kt │ │ │ ├── RecyclerViewCallbacks.kt │ │ │ ├── RoundedBottomSheetDialogFragment.kt │ │ │ ├── SheetAdapter.kt │ │ │ └── TabLayoutAdapter.kt │ │ │ ├── course │ │ │ ├── CourseActivity.kt │ │ │ ├── CourseListAdapter.kt │ │ │ ├── CourseProjectAdapter.kt │ │ │ ├── CourseRepository.kt │ │ │ ├── CourseSearchFragment.kt │ │ │ ├── CourseSectionAllFragment.kt │ │ │ ├── CourseSectionListAdapter.kt │ │ │ ├── CourseViewModel.kt │ │ │ ├── SearchCourseActivity.kt │ │ │ ├── adapter │ │ │ │ ├── CourseDataSource.kt │ │ │ │ ├── CourseDiffUtil.kt │ │ │ │ ├── CourseListAdapter.kt │ │ │ │ ├── CourseViewHolder.kt │ │ │ │ ├── ItemClickListener.kt │ │ │ │ ├── PagedCourseListAdapter.kt │ │ │ │ └── WishlistListener.kt │ │ │ ├── batches │ │ │ │ ├── BatchComparisonAdapter.kt │ │ │ │ ├── BatchListAdapter.kt │ │ │ │ ├── CourseTierFragment.kt │ │ │ │ ├── RunFragment.kt │ │ │ │ ├── RunListAdapter.kt │ │ │ │ └── RunsPagerAdapter.kt │ │ │ └── checkout │ │ │ │ ├── CheckoutActivity.kt │ │ │ │ ├── CheckoutFailedFragment.kt │ │ │ │ ├── CheckoutOrderDetailsFragment.kt │ │ │ │ ├── CheckoutPaymentFragment.kt │ │ │ │ ├── CheckoutPersonalDetailsFragment.kt │ │ │ │ └── CheckoutViewModel.kt │ │ │ ├── dashboard │ │ │ ├── ChatActivity.kt │ │ │ ├── DashboardActivity.kt │ │ │ ├── DashboardViewModel.kt │ │ │ ├── DoubtCommentActivity.kt │ │ │ ├── ViewPager2Adapter.kt │ │ │ ├── doubts │ │ │ │ ├── CommentsListAdapter.kt │ │ │ │ ├── DashboardDoubtListAdapter.kt │ │ │ │ ├── DashboardDoubtsFragment.kt │ │ │ │ ├── DashboardDoubtsRepository.kt │ │ │ │ └── DashboardDoubtsViewModel.kt │ │ │ ├── explore │ │ │ │ └── DashboardExploreFragment.kt │ │ │ ├── home │ │ │ │ ├── DashboardHomeFragment.kt │ │ │ │ ├── DashboardHomeRepository.kt │ │ │ │ ├── RecentlyPlayedAdapter.kt │ │ │ │ ├── WishlistActivity.kt │ │ │ │ ├── WishlistDataSource.kt │ │ │ │ ├── WishlistPagedAdapter.kt │ │ │ │ └── WishlistViewModel.kt │ │ │ ├── library │ │ │ │ └── DashboardLibraryFragment.kt │ │ │ └── mycourses │ │ │ │ ├── DashboardMyCoursesFragment.kt │ │ │ │ ├── DashboardMyCoursesRepository.kt │ │ │ │ └── MyCourseListAdapter.kt │ │ │ ├── database │ │ │ ├── AppDatabase.kt │ │ │ ├── BaseDao.kt │ │ │ ├── BookmarkDao.kt │ │ │ ├── CodeChallengeDao.kt │ │ │ ├── CommentsDao.kt │ │ │ ├── ContentDao.kt │ │ │ ├── CourseDao.kt │ │ │ ├── CourseWithInstructorDao.kt │ │ │ ├── DoubtsDao.kt │ │ │ ├── HBRankDao.kt │ │ │ ├── InstructorDao.kt │ │ │ ├── JobsDao.kt │ │ │ ├── LibraryDao.kt │ │ │ ├── ListObject.kt │ │ │ ├── NotesDao.kt │ │ │ ├── NotificationDao.kt │ │ │ ├── PlayerDao.kt │ │ │ ├── RunAttemptDao.kt │ │ │ ├── RunDao.kt │ │ │ ├── RunPerformanceDao.kt │ │ │ ├── RunWithAttemptDao.kt │ │ │ ├── SectionDao.kt │ │ │ ├── SectionWithContentsDao.kt │ │ │ ├── converters │ │ │ │ ├── CourseIdList.kt │ │ │ │ ├── ProgresItemConverter.kt │ │ │ │ ├── ProjectIdList.kt │ │ │ │ ├── RunTagList.kt │ │ │ │ └── TimestampConverter.kt │ │ │ └── models │ │ │ │ ├── CommentModel.kt │ │ │ │ ├── ContentModel.kt │ │ │ │ ├── CourseInstructorHolder.kt │ │ │ │ ├── CourseModel.kt │ │ │ │ ├── DbModels.kt │ │ │ │ ├── DoubtsModel.kt │ │ │ │ ├── DownloadData.kt │ │ │ │ ├── InstructorModel.kt │ │ │ │ ├── PlayerState.kt │ │ │ │ ├── RunAttempModel.kt │ │ │ │ ├── RunModel.kt │ │ │ │ ├── RunPerformance.kt │ │ │ │ ├── SectionContentHolder.kt │ │ │ │ └── SectionModel.kt │ │ │ ├── di │ │ │ └── Modules.kt │ │ │ ├── jobs │ │ │ ├── JobsActivity.kt │ │ │ ├── JobsAdapter.kt │ │ │ ├── JobsCardUi.kt │ │ │ ├── JobsViewModel.kt │ │ │ └── jobdetails │ │ │ │ ├── JobDetailActivity.kt │ │ │ │ ├── JobDetailViewModel.kt │ │ │ │ └── JobRepository.kt │ │ │ ├── library │ │ │ ├── LibraryActivity.kt │ │ │ ├── LibraryHomeFragment.kt │ │ │ ├── LibraryListAdapter.kt │ │ │ ├── LibraryRepository.kt │ │ │ ├── LibraryViewFragment.kt │ │ │ ├── LibraryViewModel.kt │ │ │ └── Selection.kt │ │ │ ├── mycourse │ │ │ ├── MyCourseActivity.kt │ │ │ ├── MyCourseRepository.kt │ │ │ ├── MyCourseViewModel.kt │ │ │ ├── content │ │ │ │ ├── ContentViewHolder.kt │ │ │ │ ├── CourseContentFragment.kt │ │ │ │ ├── SectionItemsAdapter.kt │ │ │ │ ├── SectionListAdapter.kt │ │ │ │ ├── SectionViewHolder.kt │ │ │ │ ├── codechallenge │ │ │ │ │ ├── CodeChallengeActivity.kt │ │ │ │ │ ├── CodeChallengeRepository.kt │ │ │ │ │ └── CodeChallengeViewModel.kt │ │ │ │ ├── document │ │ │ │ │ ├── PdfActivity.kt │ │ │ │ │ ├── PdfActivityRepository.kt │ │ │ │ │ └── PdfViewModel.kt │ │ │ │ ├── player │ │ │ │ │ ├── PlaylistAdapter.kt │ │ │ │ │ ├── ThumbnailWorker.kt │ │ │ │ │ ├── VideoBottomSheet.kt │ │ │ │ │ ├── VideoPlayerActivity.kt │ │ │ │ │ ├── VideoPlayerRepository.kt │ │ │ │ │ ├── VideoPlayerViewModel.kt │ │ │ │ │ ├── doubts │ │ │ │ │ │ └── VideoDoubtFragment.kt │ │ │ │ │ └── notes │ │ │ │ │ │ ├── NotesWorker.kt │ │ │ │ │ │ └── VideoNotesFragment.kt │ │ │ │ └── quiz │ │ │ │ │ ├── AboutQuizFragment.kt │ │ │ │ │ ├── QuizActivity.kt │ │ │ │ │ ├── QuizChoiceAdapter.kt │ │ │ │ │ ├── QuizFragment.kt │ │ │ │ │ ├── QuizRepository.kt │ │ │ │ │ ├── QuizResultFragment.kt │ │ │ │ │ ├── QuizViewModel.kt │ │ │ │ │ ├── ViewPagerAdapter.kt │ │ │ │ │ ├── info │ │ │ │ │ └── QuizInfoFragment.kt │ │ │ │ │ └── submissions │ │ │ │ │ ├── QuizSubmissionListAdapter.kt │ │ │ │ │ └── QuizSubmissionsFragment.kt │ │ │ ├── library │ │ │ │ └── CourseLibraryFragment.kt │ │ │ ├── misc │ │ │ │ ├── CourseMiscFragment.kt │ │ │ │ ├── PauseSheetFragment.kt │ │ │ │ └── UpgradeSheetFragment.kt │ │ │ └── overview │ │ │ │ ├── GoodiesRequestFragment.kt │ │ │ │ ├── LeaderBoardListAdapter.kt │ │ │ │ ├── LeaderBoardViewHolder.kt │ │ │ │ └── OverviewFragment.kt │ │ │ ├── notifications │ │ │ ├── NotificationViewModel.kt │ │ │ ├── NotificationsActivity.kt │ │ │ └── NotificationsAdapter.kt │ │ │ ├── profile │ │ │ ├── ProfileActivity.kt │ │ │ ├── ProfileRepository.kt │ │ │ ├── ProfileViewModel.kt │ │ │ └── ReferralActivity.kt │ │ │ ├── purchases │ │ │ └── PurchasesActivity.kt │ │ │ ├── settings │ │ │ ├── AboutActivity.kt │ │ │ ├── SettingsActivity.kt │ │ │ └── SettingsViewModel.kt │ │ │ ├── tracks │ │ │ ├── LearningTracksActivity.kt │ │ │ ├── TrackActivity.kt │ │ │ ├── TrackViewModel.kt │ │ │ ├── TracksListAdapter.kt │ │ │ └── TracksRepository.kt │ │ │ ├── util │ │ │ ├── Animations.kt │ │ │ ├── BaseCBDialogHelper.kt │ │ │ ├── CBDialog.kt │ │ │ ├── Constants.kt │ │ │ ├── CustomDialog.kt │ │ │ ├── FileUtils.kt │ │ │ ├── JWTUtils.java │ │ │ ├── KeyboardVisibilityUtil.kt │ │ │ ├── MediaUtils.kt │ │ │ ├── NetworkUtils.kt │ │ │ ├── PreferenceHelper.kt │ │ │ ├── ShareUtils.kt │ │ │ ├── VideoUtils.kt │ │ │ ├── extensions │ │ │ │ ├── Delegates.kt │ │ │ │ ├── LangUtilsExtensions.kt │ │ │ │ ├── PreferenceHelperExtensions.kt │ │ │ │ ├── RetrofitHelper.kt │ │ │ │ ├── StringExtensions.kt │ │ │ │ ├── ViewExtensions.kt │ │ │ │ └── ViewModelExtensions.kt │ │ │ ├── glide │ │ │ │ ├── ImageViewExtensions.kt │ │ │ │ ├── SvgDecoder.kt │ │ │ │ ├── SvgDrawableTranscoder.kt │ │ │ │ ├── SvgModule.kt │ │ │ │ └── SvgSoftwareLayerSetter.kt │ │ │ ├── livedata │ │ │ │ ├── DoubleTrigger.kt │ │ │ │ └── LiveDataExtensions.kt │ │ │ ├── misc │ │ │ │ └── AppSignatureHelper.java │ │ │ ├── receivers │ │ │ │ ├── CertificateDownloadReceiver.kt │ │ │ │ ├── DownloadBroadcastReceiver.kt │ │ │ │ ├── MySMSBroadcastReceiver.kt │ │ │ │ └── OneSignalHandlers.kt │ │ │ ├── recyclerciew │ │ │ │ ├── DividerItemDecorator.kt │ │ │ │ └── SpacesItemDecoration.kt │ │ │ └── widgets │ │ │ │ ├── BottomSheetListView.java │ │ │ │ ├── ExpandableTextView.kt │ │ │ │ ├── GradientTextView.kt │ │ │ │ ├── ProgressDialog.kt │ │ │ │ ├── SheetDialog.kt │ │ │ │ ├── SvgRatingBar.java │ │ │ │ ├── VdoPlayerControls.kt │ │ │ │ └── ZoomOutPageTransformer.kt │ │ │ └── workers │ │ │ ├── DeleteDownloadsWorker.kt │ │ │ ├── DownloadService.kt │ │ │ ├── DownloadWorker.kt │ │ │ ├── ProgressWorker.kt │ │ │ ├── SectionDownloadService.kt │ │ │ └── SectionDownloadWorker.kt │ └── res │ │ ├── anim │ │ ├── fab_close.xml │ │ ├── fab_open.xml │ │ ├── fab_rotate_anticlock.xml │ │ └── fab_rotate_clock.xml │ │ ├── animator │ │ ├── slide_in_left.xml │ │ ├── slide_in_right.xml │ │ ├── slide_out_left.xml │ │ └── slide_out_right.xml │ │ ├── color │ │ ├── bnv_tab_item.xml │ │ ├── button_dark_text.xml │ │ ├── content_text_color.xml │ │ └── rank_text_color.xml │ │ ├── drawable-hdpi │ │ ├── cblogo.png │ │ ├── failed.png │ │ ├── intro1.png │ │ ├── intro2.png │ │ ├── intro3.png │ │ ├── login.png │ │ └── offline.png │ │ ├── drawable-mdpi │ │ ├── cblogo.png │ │ ├── failed.png │ │ ├── intro1.png │ │ ├── intro2.png │ │ ├── intro3.png │ │ ├── login.png │ │ └── offline.png │ │ ├── drawable-v23 │ │ └── background_splash.xml │ │ ├── drawable-xhdpi │ │ ├── cblogo.png │ │ ├── failed.png │ │ ├── ic_error_white_36dp.png │ │ ├── ic_fullscreen_exit_white_24dp.png │ │ ├── ic_pause_white_24dp.png │ │ ├── intro1.png │ │ ├── intro2.png │ │ ├── intro3.png │ │ ├── login.png │ │ └── offline.png │ │ ├── drawable-xxhdpi │ │ ├── cblogo.png │ │ ├── failed.png │ │ ├── intro1.png │ │ ├── intro2.png │ │ ├── intro3.png │ │ ├── login.png │ │ └── offline.png │ │ ├── drawable-xxxhdpi │ │ ├── cblogo.png │ │ ├── failed.png │ │ ├── intro1.png │ │ ├── intro2.png │ │ ├── intro3.png │ │ ├── login.png │ │ └── offline.png │ │ ├── drawable │ │ ├── backdrop.xml │ │ ├── background_custom_radio_buttons_unselected_state.xml │ │ ├── background_green.xml │ │ ├── background_orange.xml │ │ ├── background_purple.xml │ │ ├── background_splash.xml │ │ ├── bck_rounded.xml │ │ ├── black_gradient.xml │ │ ├── blue_gradient.xml │ │ ├── bookmark_state.xml │ │ ├── button_background.xml │ │ ├── button_background_outline.xml │ │ ├── button_background_states.xml │ │ ├── button_disable.xml │ │ ├── button_disable_grey.xml │ │ ├── button_quiz.xml │ │ ├── button_states.xml │ │ ├── cblogosplash.png │ │ ├── circle.xml │ │ ├── code_challenge_text_background.xml │ │ ├── custom_btn_radio.xml │ │ ├── custom_rating.xml │ │ ├── defaultavatar.png │ │ ├── divider.xml │ │ ├── dividerthick.xml │ │ ├── dots.xml │ │ ├── dotted.xml │ │ ├── dotted_red.xml │ │ ├── download_states.xml │ │ ├── download_states_content.xml │ │ ├── ic_announcement_circle.xml │ │ ├── ic_arrow_inc.xml │ │ ├── ic_arrow_inverted_selector.xml │ │ ├── ic_arrow_selector.xml │ │ ├── ic_back.xml │ │ ├── ic_back_small.xml │ │ ├── ic_back_white.xml │ │ ├── ic_banner.webp │ │ ├── ic_baseline_lock_24.xml │ │ ├── ic_baseline_lock_open_24.xml │ │ ├── ic_bookmark.xml │ │ ├── ic_bookmark_big.xml │ │ ├── ic_bookmark_circle.xml │ │ ├── ic_bookmark_fill.xml │ │ ├── ic_cart.xml │ │ ├── ic_cart_gradient.xml │ │ ├── ic_certi_state.xml │ │ ├── ic_certificate.xml │ │ ├── ic_certificate_black.xml │ │ ├── ic_certificate_gen.xml │ │ ├── ic_certified.xml │ │ ├── ic_chart_line.xml │ │ ├── ic_chat.xml │ │ ├── ic_circle.xml │ │ ├── ic_circle_orange.xml │ │ ├── ic_circle_pink.xml │ │ ├── ic_circle_transparent.xml │ │ ├── ic_circle_white_small.xml │ │ ├── ic_classroom.xml │ │ ├── ic_clock.xml │ │ ├── ic_close.xml │ │ ├── ic_code.xml │ │ ├── ic_code_greeen.xml │ │ ├── ic_code_grey.xml │ │ ├── ic_comment.xml │ │ ├── ic_comment_small.xml │ │ ├── ic_comp1.xml │ │ ├── ic_comp2.xml │ │ ├── ic_comp3.xml │ │ ├── ic_comp4.xml │ │ ├── ic_compare.xml │ │ ├── ic_content_copy.xml │ │ ├── ic_content_status.xml │ │ ├── ic_conversation.xml │ │ ├── ic_correct_circle_small.xml │ │ ├── ic_coupon.xml │ │ ├── ic_course_logo.xml │ │ ├── ic_courses.xml │ │ ├── ic_courses_gradient.xml │ │ ├── ic_cpp.xml │ │ ├── ic_cross.xml │ │ ├── ic_cross_white.xml │ │ ├── ic_dashboar_empty.xml │ │ ├── ic_dashboard.xml │ │ ├── ic_delete.xml │ │ ├── ic_doc.xml │ │ ├── ic_document.xml │ │ ├── ic_double_tick_indicator.xml │ │ ├── ic_doubt.xml │ │ ├── ic_doubt_gradient.xml │ │ ├── ic_doubts.xml │ │ ├── ic_down.xml │ │ ├── ic_down_inverted.xml │ │ ├── ic_download.xml │ │ ├── ic_download_big.xml │ │ ├── ic_download_circle.xml │ │ ├── ic_download_circle_small.xml │ │ ├── ic_dropdown.xml │ │ ├── ic_dropdown_small.xml │ │ ├── ic_dropright.xml │ │ ├── ic_dropright_big.xml │ │ ├── ic_edit.xml │ │ ├── ic_edit_grey.xml │ │ ├── ic_empty_circle.xml │ │ ├── ic_expired.xml │ │ ├── ic_explore.xml │ │ ├── ic_fab.xml │ │ ├── ic_fb.xml │ │ ├── ic_file_download.xml │ │ ├── ic_filter.xml │ │ ├── ic_forward.xml │ │ ├── ic_fullscreen_exit_white_24dp.png │ │ ├── ic_fullscreen_white_24dp.xml │ │ ├── ic_gift.xml │ │ ├── ic_gmail.xml │ │ ├── ic_goodie.xml │ │ ├── ic_goodies.xml │ │ ├── ic_help.xml │ │ ├── ic_help_fill.xml │ │ ├── ic_high_quality_white_24dp.png │ │ ├── ic_hiring.xml │ │ ├── ic_incorrect.xml │ │ ├── ic_info.xml │ │ ├── ic_jobs.xml │ │ ├── ic_leaderboard.xml │ │ ├── ic_leaderboard_gradient.xml │ │ ├── ic_lecture.xml │ │ ├── ic_library.xml │ │ ├── ic_library_big.xml │ │ ├── ic_like.xml │ │ ├── ic_like_empty.xml │ │ ├── ic_like_gradient.xml │ │ ├── ic_lite.xml │ │ ├── ic_live.xml │ │ ├── ic_live_mentor.xml │ │ ├── ic_live_ta.xml │ │ ├── ic_lock.xml │ │ ├── ic_mentor.xml │ │ ├── ic_menu.xml │ │ ├── ic_no_connection.xml │ │ ├── ic_note_big.xml │ │ ├── ic_note_small.xml │ │ ├── ic_notes_circle.xml │ │ ├── ic_notes_green.xml │ │ ├── ic_notes_grey.xml │ │ ├── ic_offline.xml │ │ ├── ic_pause.xml │ │ ├── ic_pause_circle.xml │ │ ├── ic_pause_course.xml │ │ ├── ic_performance.xml │ │ ├── ic_play.xml │ │ ├── ic_play_black.xml │ │ ├── ic_play_lock.xml │ │ ├── ic_points.xml │ │ ├── ic_popular.xml │ │ ├── ic_premium.xml │ │ ├── ic_progress_selector.xml │ │ ├── ic_purchase.xml │ │ ├── ic_quiz.xml │ │ ├── ic_quiz_black.xml │ │ ├── ic_quiz_green.xml │ │ ├── ic_quiz_grey.xml │ │ ├── ic_radio_off.xml │ │ ├── ic_ranks.xml │ │ ├── ic_rate.xml │ │ ├── ic_recent.xml │ │ ├── ic_recorded.xml │ │ ├── ic_reopen.xml │ │ ├── ic_reopen_small.xml │ │ ├── ic_replay.xml │ │ ├── ic_request_selector.xml │ │ ├── ic_resolve.xml │ │ ├── ic_resolve_dialog.xml │ │ ├── ic_revise.xml │ │ ├── ic_ring.xml │ │ ├── ic_round_play_button.xml │ │ ├── ic_round_play_button_white.xml │ │ ├── ic_search.xml │ │ ├── ic_selected.xml │ │ ├── ic_selected_selector.xml │ │ ├── ic_send.xml │ │ ├── ic_settings.xml │ │ ├── ic_share.xml │ │ ├── ic_speech.xml │ │ ├── ic_stand.xml │ │ ├── ic_star_filled.xml │ │ ├── ic_star_unfilled.xml │ │ ├── ic_start_black.xml │ │ ├── ic_status.xml │ │ ├── ic_thumbnail.xml │ │ ├── ic_tick.xml │ │ ├── ic_ticker.xml │ │ ├── ic_tracks.xml │ │ ├── ic_trending.xml │ │ ├── ic_twitter.xml │ │ ├── ic_up_inverted.xml │ │ ├── ic_upgrade.xml │ │ ├── ic_vdo_back.xml │ │ ├── ic_vdo_setting.xml │ │ ├── ic_video.xml │ │ ├── ic_video_green.xml │ │ ├── ic_video_grey.xml │ │ ├── ic_whatsapp.xml │ │ ├── ic_wishlisted.xml │ │ ├── intro1.png │ │ ├── intro2.png │ │ ├── intro3.png │ │ ├── like_state.xml │ │ ├── loader.gif │ │ ├── lock_selector.xml │ │ ├── ripple.xml │ │ ├── rounded_dialog.xml │ │ ├── seekbar_thumb.xml │ │ ├── seekbar_track.xml │ │ ├── skeleton_bg_rounded.xml │ │ ├── skeleton_bg_rounded_card.xml │ │ ├── skeleton_bg_rounded_small.xml │ │ ├── splash.jpg │ │ ├── sq_seekbar_clipped.xml │ │ ├── thumb.xml │ │ ├── tick_inside_circle.png │ │ ├── toolbar_bg.xml │ │ ├── toolbar_bg_borderless.xml │ │ ├── toolbar_bg_colored.xml │ │ ├── toolbar_bg_dark.xml │ │ ├── toolbar_bg_dark_secondary.xml │ │ ├── toolbar_bg_search.xml │ │ ├── wheel.webp │ │ └── wildcraft.webp │ │ ├── font │ │ ├── gilroy_bold.ttf │ │ ├── gilroy_medium.ttf │ │ ├── gilroy_semibold.ttf │ │ └── my_font_family.xml │ │ ├── layout-land │ │ └── activity_login.xml │ │ ├── layout │ │ ├── activity_about.xml │ │ ├── activity_admin.xml │ │ ├── activity_chat.xml │ │ ├── activity_checkout.xml │ │ ├── activity_code_challenge.xml │ │ ├── activity_complete_profile.xml │ │ ├── activity_course.xml │ │ ├── activity_dashboard.xml │ │ ├── activity_doubt_comment.xml │ │ ├── activity_job_detail.xml │ │ ├── activity_jobs.xml │ │ ├── activity_learning_tracks.xml │ │ ├── activity_library.xml │ │ ├── activity_login.xml │ │ ├── activity_login2.xml │ │ ├── activity_my_course.xml │ │ ├── activity_notifications.xml │ │ ├── activity_on_boarding.xml │ │ ├── activity_pdf.xml │ │ ├── activity_profile.xml │ │ ├── activity_purchases.xml │ │ ├── activity_quiz.xml │ │ ├── activity_referral.xml │ │ ├── activity_search_course.xml │ │ ├── activity_settings.xml │ │ ├── activity_spin_win.xml │ │ ├── activity_splash.xml │ │ ├── activity_track.xml │ │ ├── activity_video_player.xml │ │ ├── activity_wishlist.xml │ │ ├── admin_overview_fragment.xml │ │ ├── app_bar_dashboard.xml │ │ ├── bottom_question_sheet.xml │ │ ├── bottom_sheet_batch.xml │ │ ├── bottom_sheet_comparsion.xml │ │ ├── bottom_sheet_goodies.xml │ │ ├── bottom_sheet_login.xml │ │ ├── bottom_sheet_mycourses.xml │ │ ├── bottom_sheet_note.xml │ │ ├── bottom_sheet_runs.xml │ │ ├── button_quiz_small.xml │ │ ├── course_pause_fragment.xml │ │ ├── course_upgrade_fragment.xml │ │ ├── custom_dialog.xml │ │ ├── custom_form_dialog.xml │ │ ├── dialog.xml │ │ ├── dialog_coupon.xml │ │ ├── dialog_help.xml │ │ ├── dialog_loading.xml │ │ ├── dialog_result.xml │ │ ├── dialog_share.xml │ │ ├── doubts_fragment.xml │ │ ├── filters_tab.xml │ │ ├── fragment_about_quiz.xml │ │ ├── fragment_all_section_course.xml │ │ ├── fragment_campaign_home.xml │ │ ├── fragment_campaign_leaderboard.xml │ │ ├── fragment_campaign_rules.xml │ │ ├── fragment_campaign_winnigs.xml │ │ ├── fragment_checkout_order_completed.xml │ │ ├── fragment_checkout_order_details.xml │ │ ├── fragment_checkout_payment.xml │ │ ├── fragment_checkout_personal_details.xml │ │ ├── fragment_course_content.xml │ │ ├── fragment_course_library.xml │ │ ├── fragment_course_run.xml │ │ ├── fragment_dashboard_doubts.xml │ │ ├── fragment_dashboard_explore.xml │ │ ├── fragment_dashboard_home.xml │ │ ├── fragment_dashboard_library.xml │ │ ├── fragment_dashboard_my_courses.xml │ │ ├── fragment_inbox.xml │ │ ├── fragment_library_view.xml │ │ ├── fragment_login_home.xml │ │ ├── fragment_login_otp.xml │ │ ├── fragment_misc.xml │ │ ├── fragment_notes.xml │ │ ├── fragment_overview.xml │ │ ├── fragment_quiz.xml │ │ ├── fragment_quiz_info.xml │ │ ├── fragment_quiz_result.xml │ │ ├── fragment_quiz_submissions.xml │ │ ├── fragment_search_course.xml │ │ ├── fragment_sign_in.xml │ │ ├── fragment_sign_up.xml │ │ ├── fragment_social_login.xml │ │ ├── fragment_video_doubt.xml │ │ ├── item_admin_doubt.xml │ │ ├── item_admin_leaderboard.xml │ │ ├── item_batch.xml │ │ ├── item_bookmark.xml │ │ ├── item_bottomsheet.xml │ │ ├── item_campaign_leaderboard.xml │ │ ├── item_carousel.xml │ │ ├── item_certificate.xml │ │ ├── item_comment.xml │ │ ├── item_content.xml │ │ ├── item_continue_card.xml │ │ ├── item_course_card.xml │ │ ├── item_course_card_list.xml │ │ ├── item_course_card_secondary.xml │ │ ├── item_course_leaderboard.xml │ │ ├── item_course_section.xml │ │ ├── item_course_wishlist.xml │ │ ├── item_courses.xml │ │ ├── item_doubts.xml │ │ ├── item_download.xml │ │ ├── item_extension.xml │ │ ├── item_hb_performance.xml │ │ ├── item_instructor.xml │ │ ├── item_job.xml │ │ ├── item_note.xml │ │ ├── item_note_player.xml │ │ ├── item_performance.xml │ │ ├── item_playlist.xml │ │ ├── item_project.xml │ │ ├── item_quiz_attempt.xml │ │ ├── item_run.xml │ │ ├── item_run_comparision.xml │ │ ├── item_section.xml │ │ ├── item_section_content_info.xml │ │ ├── item_section_list.xml │ │ ├── item_skeleten_course_list.xml │ │ ├── item_skeleton_card_popular.xml │ │ ├── item_skeleton_content.xml │ │ ├── item_skeleton_course_card.xml │ │ ├── item_skeleton_dashbaord.xml │ │ ├── item_skeleton_learning_tracks.xml │ │ ├── item_skeleton_track.xml │ │ ├── item_skeleton_track_course_card.xml │ │ ├── item_track.xml │ │ ├── item_track_card.xml │ │ ├── item_track_course.xml │ │ ├── item_winnings.xml │ │ ├── my_fab_menu.xml │ │ ├── nav_header_home.xml │ │ ├── offline_page.xml │ │ ├── payment_failed_layput.xml │ │ ├── progress_dialog.xml │ │ ├── quiz_header.xml │ │ ├── quiz_single_option.xml │ │ ├── quizlayout.xml │ │ ├── rating_dialog.xml │ │ ├── report_dialog.xml │ │ ├── sheet_filter.xml │ │ ├── simple_list_item_single_choice.xml │ │ ├── single_chip_layout.xml │ │ ├── tour_layout.xml │ │ ├── track_selection_dialog.xml │ │ ├── vdo_control_view.xml │ │ └── wishlist_shimmer_layout.xml │ │ ├── menu │ │ ├── activity_home_drawer.xml │ │ ├── bottom_nav_admin.xml │ │ ├── bottom_nav_dashboard.xml │ │ ├── course_menu.xml │ │ ├── dashboard.xml │ │ └── notification_menu.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ ├── ic_launcher_foreground.png │ │ └── ic_launcher_round.png │ │ ├── raw │ │ ├── download.json │ │ ├── forward.json │ │ ├── payment.json │ │ └── rewind.json │ │ ├── transition │ │ └── explode.xml │ │ ├── values │ │ ├── arrays.xml │ │ ├── attr.xml │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── font_certs.xml │ │ ├── ic_launcher_background.xml │ │ ├── preloaded_fonts.xml │ │ ├── refs.xml │ │ ├── strings.xml │ │ └── styles.xml │ │ └── xml │ │ ├── network_security_config.xml │ │ ├── paths.xml │ │ ├── remote_config_defaults.xml │ │ └── shortcut.xml │ └── test │ └── java │ └── com │ └── codingblocks │ └── cbonlineapp │ └── ExampleUnitTest.kt ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── keystores ├── .gitignore └── debug.keystore ├── onlineapi ├── .gitignore ├── build.gradle └── src │ ├── main │ └── kotlin │ │ └── com │ │ └── codingblocks │ │ └── onlineapi │ │ ├── CBOnlineCommunicator.kt │ │ ├── CBOnlineLib.kt │ │ ├── Clients.kt │ │ ├── ErrorStatus.kt │ │ ├── NetworkHelpter.kt │ │ ├── Result.kt │ │ ├── ResultWrapper.kt │ │ ├── api │ │ ├── OnlineJsonApi.kt │ │ └── OnlineRestApi.kt │ │ └── models │ │ ├── APIModel.kt │ │ ├── Performance.kt │ │ ├── RESTAPIModel.kt │ │ └── SpinResponse.kt │ └── test │ └── java │ └── com │ └── codingblocks │ └── onlineapi │ └── api │ ├── OnlineJsonApiAuthenticatedTest.kt │ ├── OnlineJsonApiPublicTest.kt │ └── OnlineRestApiAuthenticatedTest.kt └── settings.gradle /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style = space 5 | end_of_line = lf 6 | insert_final_newline = true 7 | 8 | [*.{kt,kts}] 9 | indent_size=4 10 | continuation_indent_size=4 11 | max_line_length=120 12 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | 5 | --- 6 | 7 | **Describe the feature you'd like** 8 | 9 | 10 | **Screenshots** 11 | 12 | 13 | **Additional context** 14 | 15 | 16 | **Would you like to work on the issue?** 17 | 18 | - [ ] Yes 19 | - [ ] No 20 | - Other: 21 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | Fixes #[Add issue number here. If you do not solve the issue entirely, please change the message e.g. "First steps for issues #IssueNumber] 2 | 3 | Changes: [Add here what changes were made in this issue and if possible provide links.] 4 | 5 | Screenshots for the change: 6 | -------------------------------------------------------------------------------- /.github/auto_label.yml: -------------------------------------------------------------------------------- 1 | labels: [fix, chore, ui] 2 | labelMapping: 3 | feat: [feature] 4 | fix(ui): [fix, ui] 5 | feat(ui): [feat, ui] 6 | refactor: [chore, refactor] 7 | chore(refactor): [chore, refactor]kjhbjkhbvkjhb SLks 8 | chore(deps): [dependencies] 9 | chore(docs): [chore, docs] 10 | docs: [chore, docs] 11 | test: [chore, test] 12 | chore(ci): [chore, tools, ci] 13 | chore(tools): [chore, tools] 14 | chore(release): [chore, release] 15 | -------------------------------------------------------------------------------- /.github/workflows/stale.yml: -------------------------------------------------------------------------------- 1 | name: Mark stale issues and pull requests 2 | 3 | on: 4 | schedule: 5 | - cron: "0 * * * *" 6 | 7 | jobs: 8 | stale: 9 | 10 | runs-on: ubuntu-latest 11 | 12 | steps: 13 | - uses: actions/stale@v1 14 | with: 15 | repo-token: ${{ secrets.GITHUB_TOKEN }} 16 | stale-issue-message: 'Stale issue message' 17 | stale-pr-message: 'Stale pull request message' 18 | stale-issue-label: 'no-issue-activity' 19 | stale-pr-label: 'no-pr-activity' 20 | -------------------------------------------------------------------------------- /.idea/codeStyles/codeStyleConfig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.m2/repository/com/github/jasminb/jsonapi-converter/0.11-SNAPSHOT/_remote.repositories: -------------------------------------------------------------------------------- 1 | #NOTE: This is a Maven Resolver internal implementation file, its format can be changed without prior notice. 2 | #Sun Jan 05 04:41:01 IST 2020 3 | jsonapi-converter-0.11-SNAPSHOT.pom>= 4 | jsonapi-converter-0.11-SNAPSHOT.jar>= 5 | -------------------------------------------------------------------------------- /.m2/repository/com/github/jasminb/jsonapi-converter/0.11-SNAPSHOT/jsonapi-converter-0.11-SNAPSHOT.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/.m2/repository/com/github/jasminb/jsonapi-converter/0.11-SNAPSHOT/jsonapi-converter-0.11-SNAPSHOT.jar -------------------------------------------------------------------------------- /.m2/repository/com/github/jasminb/jsonapi-converter/0.11-SNAPSHOT/maven-metadata-local.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | com.github.jasminb 4 | jsonapi-converter 5 | 0.11-SNAPSHOT 6 | 7 | 8 | true 9 | 10 | 20200104231101 11 | 12 | 13 | jar 14 | 0.11-SNAPSHOT 15 | 20200104231101 16 | 17 | 18 | pom 19 | 0.11-SNAPSHOT 20 | 20200104231101 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | release/ 3 | -------------------------------------------------------------------------------- /app/libs/YouTubeAndroidPlayerApi.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/libs/YouTubeAndroidPlayerApi.jar -------------------------------------------------------------------------------- /app/screenshots/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/screenshots/1.png -------------------------------------------------------------------------------- /app/screenshots/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/screenshots/2.png -------------------------------------------------------------------------------- /app/screenshots/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/screenshots/3.png -------------------------------------------------------------------------------- /app/screenshots/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/screenshots/4.png -------------------------------------------------------------------------------- /app/screenshots/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/screenshots/5.png -------------------------------------------------------------------------------- /app/screenshots/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/screenshots/6.png -------------------------------------------------------------------------------- /app/screenshots/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/screenshots/7.png -------------------------------------------------------------------------------- /app/screenshots/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/screenshots/8.png -------------------------------------------------------------------------------- /app/screenshots/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/screenshots/9.png -------------------------------------------------------------------------------- /app/signingconfigs.gradle: -------------------------------------------------------------------------------- 1 | android.signingConfigs { 2 | debug { 3 | keyAlias = "cbdebug" 4 | keyPassword = "cbdebug" 5 | storeFile = rootProject.file('keystores/debug.keystore') 6 | storePassword = "cbdebug" 7 | } 8 | release { 9 | keyAlias = "cbonlineapp" 10 | keyPassword = System.getenv("CB_APP_SIGNING_PASS") 11 | storeFile = rootProject.file('keystores/release.keystore') 12 | storePassword = System.getenv("CB_APP_SIGNING_PASS") 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/src/androidTest/java/com/codingblocks/cbonlineapp/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp 2 | 3 | import androidx.test.InstrumentationRegistry 4 | import androidx.test.runner.AndroidJUnit4 5 | import org.junit.Assert.assertEquals 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | /** 10 | * Instrumented test, which will execute on an Android device. 11 | * 12 | * See [testing documentation](http://d.android.com/tools/testing). 13 | */ 14 | @RunWith(AndroidJUnit4::class) 15 | class ExampleInstrumentedTest { 16 | @Test 17 | fun useAppContext() { 18 | // Context of the app under test. 19 | val appContext = InstrumentationRegistry.getTargetContext() 20 | assertEquals("com.codingblocks.cbonlineapp", appContext.packageName) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/debug/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | (Debug)Coding Blocks 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/assets/Chat.html: -------------------------------------------------------------------------------- 1 | 9 | 10 | 11 |
Loading chat... 12 |
13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/assets/fonts/gilroy_bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/assets/fonts/gilroy_bold.ttf -------------------------------------------------------------------------------- /app/src/main/assets/fonts/gilroy_medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/assets/fonts/gilroy_medium.ttf -------------------------------------------------------------------------------- /app/src/main/feature-graphic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/feature-graphic.png -------------------------------------------------------------------------------- /app/src/main/ic_launcher-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/ic_launcher-playstore.png -------------------------------------------------------------------------------- /app/src/main/ic_launcher-web.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/ic_launcher-web.png -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/admin/overview/AdminLeaderBoardViewHolder.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.admin.overview 2 | 3 | import android.view.View 4 | import androidx.recyclerview.widget.RecyclerView 5 | import com.codingblocks.cbonlineapp.util.extensions.round 6 | import com.codingblocks.onlineapi.models.DoubtLeaderBoard 7 | import kotlinx.android.synthetic.main.item_admin_leaderboard.view.* 8 | 9 | class AdminLeaderBoardViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { 10 | fun bind(doubtLeaderBoard: DoubtLeaderBoard, position: Int) { 11 | with(itemView) { 12 | userNoTv.text = (position + 1).toString() 13 | usernameTv.text = doubtLeaderBoard.user?.firstname + " " + doubtLeaderBoard.user?.lastname 14 | userRatingTv.text = doubtLeaderBoard.ratingAll.round(2).toString() 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/admin/overview/AdminOverviewRepository.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.admin.overview 2 | 3 | import com.codingblocks.onlineapi.CBOnlineLib 4 | import com.codingblocks.onlineapi.ResultWrapper 5 | import com.codingblocks.onlineapi.models.DoubtLeaderBoard 6 | import com.codingblocks.onlineapi.models.DoubtStats 7 | import com.codingblocks.onlineapi.safeApiCall 8 | import com.github.jasminb.jsonapi.JSONAPIDocument 9 | import retrofit2.Response 10 | 11 | class AdminOverviewRepository { 12 | 13 | suspend fun getDoubtStats(userId: String): ResultWrapper> { 14 | return safeApiCall { CBOnlineLib.api.doubtStats(userId) } 15 | } 16 | 17 | suspend fun getLeaderBoard(offSet: Int): ResultWrapper>>> { 18 | return safeApiCall { CBOnlineLib.onlineV2JsonApi.getLeaderBoard(offset = offSet) } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/analytics/AppCrashlyticsWrapper.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.analytics 2 | 3 | import android.util.Log 4 | import com.codingblocks.cbonlineapp.BuildConfig 5 | import com.google.firebase.crashlytics.FirebaseCrashlytics 6 | 7 | /** 8 | * Created by championswimmer on 2020-01-26. 9 | */ 10 | object AppCrashlyticsWrapper { 11 | fun log(msg: String) { 12 | if (BuildConfig.DEBUG) { 13 | Log.w("Crashlytics", msg) 14 | } else { 15 | FirebaseCrashlytics.getInstance().log(msg) 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/auth/onboarding/Intro.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.auth.onboarding 2 | 3 | /** 4 | * Represent a data class for an item for Onboarding screen. 5 | * @property title The title of the intro screen item string resId. 6 | * @property description The description of intro screen item string resId. 7 | * @property image The image drawable resId of intro screen item. 8 | */ 9 | data class Intro( 10 | val title: Int, 11 | val description: Int, 12 | val image: Int 13 | ) 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/baseclasses/BaseCBFragment.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.baseclasses 2 | 3 | import androidx.fragment.app.Fragment 4 | import androidx.lifecycle.LifecycleOwner 5 | 6 | /** 7 | * Created by championswimmer on 2020-02-02. 8 | */ 9 | abstract class BaseCBFragment : Fragment(), BaseLifecycleComponent { 10 | override val thisLifecycleOwner: LifecycleOwner get() = this 11 | 12 | init { 13 | lifecycle.addObserver(this) 14 | } 15 | 16 | override fun onDestroy() { 17 | super.onDestroy() 18 | lifecycle.removeObserver(this) 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/baseclasses/BaseCBViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.baseclasses 2 | 3 | import androidx.lifecycle.MutableLiveData 4 | import androidx.lifecycle.ViewModel 5 | 6 | /** 7 | * @author aggarwalpulkit596 8 | */ 9 | abstract class BaseCBViewModel : ViewModel() { 10 | var errorLiveData: MutableLiveData = MutableLiveData() 11 | 12 | fun setError(error: String) { 13 | errorLiveData.postValue(error) 14 | } 15 | } 16 | 17 | enum class STATE { 18 | SUCCESS, 19 | ERROR, 20 | LOADING 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/campaign/CampaignRepository.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.campaign 2 | 3 | import com.codingblocks.onlineapi.CBOnlineLib 4 | import com.codingblocks.onlineapi.safeApiCall 5 | import com.google.firebase.firestore.DocumentSnapshot 6 | import com.google.firebase.firestore.FirebaseFirestore 7 | import kotlinx.coroutines.tasks.await 8 | 9 | class CampaignRepository(private val firestore: FirebaseFirestore) { 10 | 11 | suspend fun getSpinStats() = safeApiCall { CBOnlineLib.api.spinStats() } 12 | suspend fun drawSpin() = safeApiCall { CBOnlineLib.api.drawSpin() } 13 | suspend fun getMyWinnings() = safeApiCall { CBOnlineLib.onlineV2JsonApi.getWinnings() } 14 | suspend fun getReferral() = safeApiCall { CBOnlineLib.api.myReferral() } 15 | 16 | suspend fun getRules(): DocumentSnapshot = firestore.collection("Campaign").document("spinnwin").get().await() 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/commons/FragmentChangeListener.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.commons 2 | 3 | interface FragmentChangeListener { 4 | 5 | fun openInbox(conversationId: String) 6 | 7 | fun openClassroom() 8 | 9 | fun openExplore() 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/commons/RecyclerViewCallbacks.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.commons 2 | 3 | interface NotificationClickListener { 4 | fun onClick(notificationID: Long, url: String, videoId: String) 5 | } 6 | 7 | interface SectionListClickListener { 8 | 9 | fun onClick(pos: Int, adapterPosition: Int) 10 | } 11 | 12 | interface OnCartItemClickListener { 13 | fun onItemClick(id: String, name: String) 14 | } 15 | 16 | interface DownloadStarter { 17 | fun startDownload(videoId: String, contentId: String, title: String, attemptId: String, sectionId: String) 18 | 19 | fun startSectionDownlod(sectionId: String) 20 | } 21 | 22 | interface OnItemClickListener { 23 | fun onItemClick(position: Int, id: String) 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/commons/RoundedBottomSheetDialogFragment.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.commons 2 | 3 | import android.app.Dialog 4 | import android.os.Bundle 5 | import com.codingblocks.cbonlineapp.R 6 | import com.google.android.material.bottomsheet.BottomSheetDialog 7 | import com.google.android.material.bottomsheet.BottomSheetDialogFragment 8 | 9 | /** 10 | * [BottomSheetDialogFragment] that uses a custom 11 | * theme which sets a rounded background to the dialog 12 | * and doesn't dim the navigation bar 13 | */ 14 | open class RoundedBottomSheetDialogFragment : BottomSheetDialogFragment() { 15 | 16 | override fun getTheme(): Int = R.style.RoundedBottomSheetDialogTheme 17 | 18 | override fun onCreateDialog(savedInstanceState: Bundle?): Dialog = BottomSheetDialog(requireContext(), theme) 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/commons/TabLayoutAdapter.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.commons 2 | 3 | import androidx.fragment.app.Fragment 4 | import androidx.fragment.app.FragmentManager 5 | import androidx.fragment.app.FragmentStatePagerAdapter 6 | 7 | class TabLayoutAdapter(fm: FragmentManager) : FragmentStatePagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) { 8 | 9 | private val tabNames: ArrayList = ArrayList() 10 | private val fragments: ArrayList = ArrayList() 11 | 12 | fun add(fragment: Fragment, title: String) { 13 | tabNames.add(title) 14 | fragments.add(fragment) 15 | } 16 | 17 | fun add(fragment: Fragment) { 18 | fragments.add(fragment) 19 | } 20 | 21 | override fun getCount(): Int { 22 | return fragments.size 23 | } 24 | 25 | override fun getItem(position: Int): Fragment { 26 | return fragments[position] 27 | } 28 | 29 | override fun getPageTitle(position: Int): CharSequence { 30 | return tabNames[position] 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/course/CourseListAdapter.kt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/java/com/codingblocks/cbonlineapp/course/CourseListAdapter.kt -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/course/adapter/CourseDiffUtil.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.course.adapter 2 | 3 | import androidx.recyclerview.widget.DiffUtil 4 | import com.codingblocks.cbonlineapp.util.extensions.sameAndEqual 5 | import com.codingblocks.onlineapi.models.Course 6 | 7 | class CourseDiffUtil : DiffUtil.ItemCallback() { 8 | override fun areItemsTheSame(oldItem: Course, newItem: Course): Boolean { 9 | return oldItem.id == newItem.id 10 | } 11 | 12 | override fun areContentsTheSame(oldItem: Course, newItem: Course): Boolean { 13 | return oldItem.sameAndEqual(newItem) 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/course/adapter/ItemClickListener.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.course.adapter 2 | 3 | import android.widget.ImageView 4 | 5 | interface ItemClickListener { 6 | fun onClick(id: String, name: String, logo: ImageView) 7 | } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/course/adapter/WishlistListener.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.course.adapter 2 | 3 | interface WishlistListener { 4 | fun onWishListClickListener(id: String) 5 | } 6 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/course/batches/RunsPagerAdapter.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.course.batches 2 | 3 | import androidx.fragment.app.Fragment 4 | import androidx.fragment.app.FragmentManager 5 | import androidx.fragment.app.FragmentStatePagerAdapter 6 | 7 | class RunsPagerAdapter(fm: FragmentManager, var filter: List) : FragmentStatePagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) { 8 | override fun getItem(position: Int): Fragment { 9 | return RunFragment.newInstance(filter[position]) 10 | } 11 | 12 | override fun getCount(): Int { 13 | return filter.size 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/database/BookmarkDao.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.database 2 | 3 | import androidx.lifecycle.LiveData 4 | import androidx.room.Dao 5 | import androidx.room.Query 6 | import com.codingblocks.cbonlineapp.database.models.BookmarkModel 7 | 8 | /** 9 | * @author aggarwalpulkit596 10 | */ 11 | @Dao 12 | interface BookmarkDao : BaseDao { 13 | @Query( 14 | """ 15 | SELECT b.*,c.title as contentName ,s.name as sectionName FROM BookmarkModel b 16 | INNER JOIN ContentModel c ON c.ccid = b.contentId 17 | INNER JOIN SectionModel s ON s.csid = b.sectionId 18 | WHERE b.contentId = :uid ORDER BY b.createdAt DESC 19 | """ 20 | ) 21 | fun getBookmarkById(uid: String): LiveData 22 | 23 | @Query("DELETE FROM BookmarkModel where bookmarkUid = :uid") 24 | fun deleteBookmark(uid: String) 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/database/CodeChallengeDao.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.database 2 | 3 | import androidx.room.Dao 4 | import androidx.room.Query 5 | import com.codingblocks.cbonlineapp.database.models.CodeChallengeModel 6 | import com.codingblocks.cbonlineapp.database.models.CodeModel 7 | 8 | @Dao 9 | interface CodeChallengeDao : BaseDao { 10 | 11 | @Query("SElECT * FROM CodeChallengeModel where id = :id") 12 | suspend fun getCodeChallengeById(id: String): CodeChallengeModel? 13 | 14 | @Query("SELECT codeUid, codeContestId, attempt_id FROM ContentModel WHERE ccid = :contentId") 15 | suspend fun getCodeChallenge(contentId: String): CodeModel 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/database/CommentsDao.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.database 2 | 3 | import androidx.lifecycle.LiveData 4 | import androidx.room.Dao 5 | import androidx.room.Query 6 | import com.codingblocks.cbonlineapp.database.models.CommentModel 7 | 8 | @Dao 9 | abstract class CommentsDao : BaseDao { 10 | 11 | @Query("SElECT * FROM CommentModel where dbtId = :id") 12 | abstract fun getComments(id: String): LiveData> 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/database/CourseDao.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.database 2 | 3 | import androidx.lifecycle.LiveData 4 | import androidx.room.Dao 5 | import androidx.room.Query 6 | import com.codingblocks.cbonlineapp.database.models.CourseModel 7 | 8 | @Dao 9 | interface CourseDao : BaseDao { 10 | 11 | @Query("SElECT * FROM CourseModel ") 12 | fun getCourses(): LiveData> 13 | 14 | @Query("DELETE FROM CourseModel") 15 | suspend fun nukeTable() 16 | 17 | @Query("SElECT cid FROM CourseModel WHERE cid = :id") 18 | fun getCourseById(id: String): String 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/database/HBRankDao.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.database 2 | 3 | import androidx.lifecycle.LiveData 4 | import androidx.room.Dao 5 | import androidx.room.Query 6 | import com.codingblocks.cbonlineapp.database.models.HBRankModel 7 | 8 | @Dao 9 | interface HBRankDao : BaseDao { 10 | @Query("SELECT * FROM HBRankModel LIMIT 1") 11 | fun getRank(): LiveData 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/database/InstructorDao.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.database 2 | 3 | import androidx.lifecycle.LiveData 4 | import androidx.room.Dao 5 | import androidx.room.Query 6 | import com.codingblocks.cbonlineapp.database.models.InstructorModel 7 | 8 | @Dao 9 | abstract class InstructorDao : BaseDao { 10 | 11 | @Query("SElECT * FROM InstructorModel ") 12 | abstract fun getInstructors(): LiveData> 13 | 14 | @Query("SElECT uid FROM InstructorModel WHERE uid = :id") 15 | abstract suspend fun getInstructorById(id: String): String 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/database/JobsDao.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.database 2 | 3 | import androidx.lifecycle.LiveData 4 | import androidx.room.Dao 5 | import androidx.room.Query 6 | import com.codingblocks.cbonlineapp.database.models.JobsModel 7 | 8 | @Dao 9 | abstract class JobsDao : BaseDao { 10 | @Query("SElECT * FROM JobsModel ") 11 | abstract fun getAllJobs(): LiveData> 12 | 13 | @Query("SElECT * FROM JobsModel where uid = :id") 14 | abstract fun getJobById(id: String): LiveData 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/database/ListObject.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.database 2 | 3 | abstract class ListObject { 4 | abstract fun getType(): Int 5 | 6 | companion object { 7 | val TYPE_SECTION = 0 8 | val TYPE_CONTENT = 1 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/database/PlayerDao.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.database 2 | 3 | import androidx.lifecycle.LiveData 4 | import androidx.room.Dao 5 | import androidx.room.Query 6 | import com.codingblocks.cbonlineapp.database.models.PlayerState 7 | 8 | @Dao 9 | interface PlayerDao : BaseDao { 10 | 11 | @Query( 12 | """ 13 | SELECT ps.*,s.name as sectionName,c.title as contentTitle,c.contentDuration From PlayerState ps 14 | INNER JOIN SectionModel s ON ps."sectionId" = s."csid" 15 | INNER JOIN ContentModel c ON c."ccid" = ps."contentId" 16 | ORDER BY ps.lastAccessedAt; 17 | """ 18 | ) 19 | fun getPromotedStories(): LiveData> 20 | 21 | @Query("UPDATE PlayerState SET thumbnail = :thumbnail WHERE contentId = :contentId") 22 | suspend fun updateThumbnail(thumbnail: String, contentId: String) 23 | 24 | @Query("DELETE FROM PlayerState WHERE attemptId = :attemptId") 25 | fun deleteById(attemptId: String) 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/database/RunAttemptDao.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.database 2 | 3 | import androidx.lifecycle.LiveData 4 | import androidx.room.Dao 5 | import androidx.room.Query 6 | import com.codingblocks.cbonlineapp.database.models.RunAttemptModel 7 | 8 | /** 9 | * @author aggarwalpulkit596 10 | */ 11 | @Dao 12 | interface RunAttemptDao : BaseDao { 13 | 14 | @Query("SElECT * FROM RunAttemptModel where attemptId = :id") 15 | fun getRunAttempt(id: String): LiveData 16 | 17 | @Query("SElECT * FROM RunAttemptModel") 18 | fun getRunAttempts(): LiveData> 19 | 20 | @Query("SElECT attemptId FROM RunAttemptModel where attemptId = :id") 21 | fun getAttemptId(id: String): String? 22 | 23 | @Query("UPDATE RunAttemptModel SET paused = :paused, pauseTimeLeft = :pausedTimeLeft,lastPausedLeft = :lastPausedLeft WHERE attemptId =:id") 24 | suspend fun updatePause(id: String, paused: Boolean, pausedTimeLeft: String?, lastPausedLeft: String?) 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/database/RunDao.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.database 2 | 3 | import androidx.lifecycle.LiveData 4 | import androidx.room.Dao 5 | import androidx.room.Query 6 | import com.codingblocks.cbonlineapp.database.models.RunModel 7 | 8 | /** 9 | * @author aggarwalpulkit596 10 | */ 11 | @Dao 12 | interface RunDao : BaseDao { 13 | 14 | @Query("SElECT crUid FROM RunModel where crUid = :id") 15 | fun getRunId(id: String): String? 16 | 17 | @Query("SElECT * FROM RunModel") 18 | fun getRunAttempts(): LiveData> 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/database/RunPerformanceDao.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.database 2 | 3 | import androidx.lifecycle.LiveData 4 | import androidx.room.Dao 5 | import androidx.room.Query 6 | import com.codingblocks.cbonlineapp.database.models.RunPerformance 7 | 8 | /** 9 | * @author aggarwalpulkit596 10 | */ 11 | @Dao 12 | interface RunPerformanceDao : BaseDao { 13 | 14 | @Query("SElECT * FROM RunPerformance where id = :id") 15 | fun getPerformance(id: String): LiveData 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/database/RunWithAttemptDao.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.database 2 | 3 | import androidx.lifecycle.LiveData 4 | import androidx.room.Dao 5 | import androidx.room.Query 6 | import androidx.room.Transaction 7 | import com.codingblocks.cbonlineapp.database.models.RunWithAttempt 8 | 9 | /** 10 | * @author aggarwalpulkit596 11 | */ 12 | @Dao 13 | interface RunWithAttemptDao { 14 | 15 | @Transaction 16 | @Query("SELECT * FROM RunModel") 17 | fun getRunsAndAttempts(): LiveData> 18 | 19 | @Transaction 20 | @Query("SELECT * FROM RunModel where crUid = :id") 21 | fun getRunWithAttempt(id: String): LiveData 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/database/SectionDao.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.database 2 | 3 | import androidx.lifecycle.LiveData 4 | import androidx.room.Dao 5 | import androidx.room.Query 6 | import com.codingblocks.cbonlineapp.database.models.SectionModel 7 | 8 | @Dao 9 | interface SectionDao : BaseDao { 10 | 11 | @Query("SElECT * FROM SectionModel ") 12 | fun getSections(): LiveData> 13 | 14 | @Query("SElECT * FROM SectionModel where csid = :id") 15 | abstract fun getSectionWithId(id: String): SectionModel 16 | 17 | @Query("SElECT csid FROM SectionModel where run_id = :runId ORDER BY `sectionOrder`") 18 | suspend fun getCourseSection(runId: String): List 19 | 20 | @Query("SElECT name FROM SectionModel where csid = :id") 21 | suspend fun getSectionTitle(id: String): String 22 | 23 | @Query("DELETE FROM SectionModel where csid = :id") 24 | fun deleteSection(id: String) 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/database/converters/CourseIdList.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.database.converters 2 | 3 | import androidx.room.TypeConverter 4 | import com.codingblocks.onlineapi.models.Course 5 | import com.fasterxml.jackson.core.type.TypeReference 6 | import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper 7 | 8 | class CourseIdList { 9 | @TypeConverter 10 | fun fromListCourseId(companyList: ArrayList): String = 11 | jacksonObjectMapper().writeValueAsString(companyList) 12 | 13 | @TypeConverter 14 | fun toListCourseId(courseIdList: String): ArrayList { 15 | val mapType = object : TypeReference>() {} 16 | return jacksonObjectMapper().readValue(courseIdList, mapType) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/database/converters/ProgresItemConverter.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.database.converters 2 | 3 | import androidx.room.TypeConverter 4 | import com.codingblocks.onlineapi.models.ProgressItem 5 | import com.fasterxml.jackson.core.type.TypeReference 6 | import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper 7 | 8 | /** 9 | * @author aggarwalpulkit596 10 | */ 11 | class ProgressItemConverter { 12 | @TypeConverter 13 | fun fromProgressList(progressList: ArrayList): String = 14 | jacksonObjectMapper().writeValueAsString(progressList) 15 | 16 | @TypeConverter 17 | fun toProgressList(progressList: String): ArrayList { 18 | val mapType = object : TypeReference>() {} 19 | return jacksonObjectMapper().readValue(progressList, mapType) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/database/converters/ProjectIdList.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.database.converters 2 | 3 | import androidx.room.TypeConverter 4 | import com.codingblocks.onlineapi.models.Project 5 | import com.fasterxml.jackson.core.type.TypeReference 6 | import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper 7 | 8 | class ProjectIdList { 9 | @TypeConverter 10 | fun fromProjectIdList(projectIdList: ArrayList): String = 11 | jacksonObjectMapper().writeValueAsString(projectIdList) 12 | 13 | @TypeConverter 14 | fun toProjectIdList(projectIdList: String): ArrayList { 15 | val mapType = object : TypeReference>() {} 16 | return jacksonObjectMapper().readValue(projectIdList, mapType) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/database/converters/RunTagList.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.database.converters 2 | 3 | import androidx.room.TypeConverter 4 | import com.codingblocks.onlineapi.models.Tags 5 | import com.fasterxml.jackson.core.type.TypeReference 6 | import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper 7 | 8 | class RunTagList { 9 | @TypeConverter 10 | fun fromTagList(tagList: ArrayList): String = 11 | jacksonObjectMapper().writeValueAsString(tagList) 12 | 13 | @TypeConverter 14 | fun toTagList(tagList: String): ArrayList { 15 | val mapType = object : TypeReference>() {} 16 | return jacksonObjectMapper().readValue(tagList, mapType) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/database/converters/TimestampConverter.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.database.converters 2 | 3 | import androidx.room.TypeConverter 4 | import java.sql.Date 5 | 6 | class TimestampConverter { 7 | @TypeConverter 8 | fun fromTimestamp(value: Long?): Date? { 9 | return if (value == null) null else Date(value) 10 | } 11 | 12 | @TypeConverter 13 | fun dateToTimestamp(date: Date?): Long? { 14 | return date?.time 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/database/models/CommentModel.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.database.models 2 | 3 | import androidx.room.Entity 4 | import androidx.room.ForeignKey 5 | import androidx.room.Index 6 | import androidx.room.PrimaryKey 7 | 8 | @Entity( 9 | indices = [Index("dbtId")], 10 | foreignKeys = [ 11 | ( 12 | ForeignKey( 13 | entity = DoubtsModel::class, 14 | parentColumns = ["dbtUid"], 15 | childColumns = ["dbtId"], 16 | onDelete = ForeignKey.CASCADE // or CASCADE 17 | ) 18 | ) 19 | ] 20 | ) 21 | class CommentModel( 22 | @PrimaryKey 23 | var id: String, 24 | var body: String, 25 | var dbtId: String, 26 | var updatedAt: String, 27 | var username: String 28 | ) { 29 | constructor() : this("", "", "", "", "") 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/database/models/CourseModel.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.database.models 2 | 3 | import androidx.room.Entity 4 | import androidx.room.PrimaryKey 5 | 6 | @Entity 7 | data class CourseModel( 8 | @PrimaryKey 9 | var cid: String, 10 | var title: String, 11 | var subtitle: String, 12 | var logo: String, 13 | var summary: String, 14 | var promoVideo: String, 15 | var difficulty: String, 16 | var reviewCount: Int, 17 | var rating: Float, 18 | var slug: String?, 19 | var coverImage: String, 20 | var categoryId: Int 21 | ) { 22 | constructor() : this( 23 | "", "", "", "", "", 24 | "", "", 0, 0f, "", 25 | "", -1 26 | ) 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/database/models/DoubtsModel.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.database.models 2 | 3 | import androidx.room.Entity 4 | import androidx.room.PrimaryKey 5 | 6 | @Entity 7 | data class DoubtsModel( 8 | @PrimaryKey 9 | var dbtUid: String, 10 | var title: String, 11 | var body: String, 12 | var contentId: String, 13 | var status: String, 14 | var runAttemptId: String, 15 | var discourseTopicId: String, 16 | var conversationId: String?, 17 | var createdAt: String 18 | ) { 19 | constructor() : this( 20 | "", "", "", "", "", 21 | "", "", null, "" 22 | ) 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/database/models/DownloadData.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.database.models 2 | 3 | import androidx.core.app.NotificationCompat 4 | import java.io.Serializable 5 | 6 | data class DownloadData( 7 | val sectionId: String, 8 | val videoId: String, 9 | val attemptId: String, 10 | val contentId: String, 11 | val notificationId: Int, 12 | val notificationBuilder: NotificationCompat.Builder 13 | ) : Serializable 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/database/models/InstructorModel.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.database.models 2 | 3 | import androidx.room.Entity 4 | import androidx.room.PrimaryKey 5 | 6 | @Entity 7 | data class InstructorModel( 8 | @PrimaryKey 9 | var uid: String, 10 | var name: String?, 11 | var description: String, 12 | var photo: String?, 13 | var email: String?, 14 | var sub: String? 15 | ) 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/database/models/RunPerformance.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.database.models 2 | 3 | import androidx.room.Entity 4 | import androidx.room.PrimaryKey 5 | import androidx.room.TypeConverters 6 | import com.codingblocks.cbonlineapp.database.converters.ProgressItemConverter 7 | import com.codingblocks.onlineapi.models.ProgressItem 8 | 9 | /** 10 | * @author aggarwalpulkit596 11 | */ 12 | @Entity 13 | data class RunPerformance( 14 | @PrimaryKey 15 | val id: String = "", 16 | val percentile: Int = 0, 17 | val remarks: String = "", 18 | @TypeConverters(ProgressItemConverter::class) 19 | val averageProgress: ArrayList, 20 | @TypeConverters(ProgressItemConverter::class) 21 | val userProgress: ArrayList 22 | ) 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/jobs/JobsCardUi.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.jobs 2 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/mycourse/misc/UpgradeSheetFragment.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.mycourse.misc 2 | 3 | import android.os.Bundle 4 | import android.view.LayoutInflater 5 | import android.view.View 6 | import android.view.ViewGroup 7 | import com.codingblocks.cbonlineapp.R 8 | import com.codingblocks.cbonlineapp.commons.RoundedBottomSheetDialogFragment 9 | import com.codingblocks.cbonlineapp.mycourse.MyCourseViewModel 10 | import org.koin.androidx.viewmodel.ext.android.sharedViewModel 11 | 12 | class UpgradeSheetFragment : RoundedBottomSheetDialogFragment() { 13 | 14 | val vm: MyCourseViewModel by sharedViewModel() 15 | 16 | override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { 17 | return inflater.inflate(R.layout.course_upgrade_fragment, container, false) 18 | } 19 | 20 | override fun onViewCreated(view: View, savedInstanceState: Bundle?) { 21 | super.onViewCreated(view, savedInstanceState) 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/notifications/NotificationViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.notifications 2 | 3 | import com.codingblocks.cbonlineapp.baseclasses.BaseCBViewModel 4 | import com.codingblocks.cbonlineapp.database.NotificationDao 5 | 6 | class NotificationViewModel( 7 | private val notificationDao: NotificationDao 8 | ) : BaseCBViewModel() 9 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/profile/ProfileRepository.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.profile 2 | 3 | import com.codingblocks.cbonlineapp.util.PreferenceHelper 4 | import com.codingblocks.onlineapi.CBOnlineLib 5 | import com.codingblocks.onlineapi.safeApiCall 6 | 7 | /** 8 | * @author aggarwalpulkit596 9 | */ 10 | class ProfileRepository( 11 | val prefs: PreferenceHelper 12 | ) { 13 | 14 | suspend fun fetchUser() = safeApiCall { CBOnlineLib.onlineV2JsonApi.getMe() } 15 | 16 | suspend fun updateUser(id: String, map: Map) = safeApiCall { CBOnlineLib.api.updateUser(id, map) } 17 | 18 | suspend fun refreshToken() = safeApiCall { CBOnlineLib.api.refreshToken(prefs.SP_JWT_REFRESH_TOKEN) } 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/settings/SettingsViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.settings 2 | 3 | import androidx.lifecycle.viewModelScope 4 | import com.codingblocks.cbonlineapp.baseclasses.BaseCBViewModel 5 | import com.codingblocks.cbonlineapp.database.ContentDao 6 | import com.codingblocks.cbonlineapp.database.models.ContentModel 7 | import kotlinx.coroutines.Dispatchers 8 | import kotlinx.coroutines.withContext 9 | 10 | class SettingsViewModel( 11 | private val contentDao: ContentDao 12 | ) : BaseCBViewModel() { 13 | 14 | suspend fun getDownloads(): List = 15 | withContext(viewModelScope.coroutineContext + Dispatchers.IO) { 16 | contentDao.getDownloads(true) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/tracks/TracksRepository.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.tracks 2 | 3 | import com.codingblocks.onlineapi.CBOnlineLib 4 | import com.codingblocks.onlineapi.safeApiCall 5 | 6 | /** 7 | * @author aggarwalpulkit596 8 | */ 9 | class TracksRepository { 10 | suspend fun getTrack(id: String) = safeApiCall { CBOnlineLib.onlineV2JsonApi.getTrack(id) } 11 | 12 | suspend fun getTrackCourses(id: String) = safeApiCall { CBOnlineLib.onlineV2JsonApi.getTrackCourses(id) } 13 | 14 | suspend fun getTracks() = safeApiCall { CBOnlineLib.onlineV2JsonApi.getTracks() } 15 | 16 | suspend fun getProfessions() = safeApiCall { CBOnlineLib.onlineV2JsonApi.getProfessions() } 17 | suspend fun getRecommendedTrack(map: HashMap) = safeApiCall { CBOnlineLib.onlineV2JsonApi.getRecommendedTrack(map) } 18 | suspend fun generateLead(body: HashMap) = safeApiCall { CBOnlineLib.api.generateLead(body) } 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/util/Animations.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.util 2 | 3 | import android.view.animation.Animation 4 | import android.view.animation.AnimationUtils 5 | import androidx.fragment.app.FragmentActivity 6 | import com.codingblocks.cbonlineapp.R 7 | 8 | class Animations(val context: FragmentActivity) { 9 | val open: Animation by lazy { 10 | AnimationUtils.loadAnimation(context, R.anim.fab_open) 11 | } 12 | val close: Animation by lazy { 13 | AnimationUtils.loadAnimation(context, R.anim.fab_close) 14 | } 15 | val clock: Animation by lazy { 16 | AnimationUtils.loadAnimation(context, R.anim.fab_rotate_clock) 17 | } 18 | val anticlock: Animation by lazy { 19 | AnimationUtils.loadAnimation(context, R.anim.fab_rotate_anticlock) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/util/extensions/Delegates.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.util.extensions 2 | 3 | import androidx.lifecycle.SavedStateHandle 4 | import kotlin.properties.ReadWriteProperty 5 | import kotlin.reflect.KProperty 6 | 7 | fun savedStateValue(handle: SavedStateHandle, key: String): ReadWriteProperty { 8 | return ( 9 | object : ReadWriteProperty { 10 | override fun getValue(thisRef: Any?, property: KProperty<*>): T? { 11 | return handle[key] 12 | } 13 | 14 | override fun setValue(thisRef: Any?, property: KProperty<*>, value: T?) { 15 | handle.set(key, value) 16 | } 17 | } 18 | ) 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/util/extensions/LangUtilsExtensions.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.util.extensions 2 | 3 | import com.google.gson.Gson 4 | 5 | infix fun Boolean.then(block: () -> Unit) = if (this) block() else null 6 | 7 | infix fun Boolean.otherwise(block: () -> Unit) = if (this) null else block() 8 | 9 | @Suppress("NOTHING_TO_INLINE") 10 | inline fun T.sameAndEqual(n: K): Boolean = ((this.javaClass == n.javaClass) && (this == n)) 11 | 12 | inline fun String.deserializeNoteFromJson(): T { 13 | return Gson().fromJson(this, T::class.java) 14 | } 15 | 16 | inline fun T.serializeToJson(): String { 17 | return Gson().toJson(this) 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/util/extensions/PreferenceHelperExtensions.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.util.extensions 2 | 3 | import android.content.Context 4 | import androidx.annotation.Keep 5 | import androidx.fragment.app.Fragment 6 | import com.codingblocks.cbonlineapp.util.PreferenceHelper 7 | 8 | @Keep 9 | fun A.getPrefs(): PreferenceHelper { 10 | return PreferenceHelper.getPrefs(this) 11 | } 12 | 13 | @Keep 14 | fun F.getPrefs(): PreferenceHelper? { 15 | return context?.let { PreferenceHelper.getPrefs(it) } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/util/extensions/RetrofitHelper.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.util.extensions 2 | 3 | import retrofit2.Call 4 | import retrofit2.Callback 5 | import retrofit2.Response 6 | 7 | fun retrofitCallback(fn: (Throwable?, Response?) -> Unit): Callback { 8 | return object : Callback { 9 | override fun onFailure(call: Call?, t: Throwable?) = fn(t, null) 10 | override fun onResponse(call: Call?, response: Response?) = fn(null, response) 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/util/extensions/ViewModelExtensions.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.util.extensions 2 | 3 | import androidx.lifecycle.ViewModel 4 | import androidx.lifecycle.viewModelScope 5 | import kotlinx.coroutines.CoroutineScope 6 | import kotlinx.coroutines.Dispatchers 7 | import kotlinx.coroutines.launch 8 | 9 | fun ViewModel.runIO(function: suspend CoroutineScope.() -> Unit) { 10 | viewModelScope.launch(Dispatchers.IO) { function() } 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/util/glide/SvgDrawableTranscoder.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.util.glide 2 | 3 | import android.graphics.Picture 4 | import android.graphics.drawable.PictureDrawable 5 | import com.bumptech.glide.load.Options 6 | import com.bumptech.glide.load.engine.Resource 7 | import com.bumptech.glide.load.resource.SimpleResource 8 | import com.bumptech.glide.load.resource.transcode.ResourceTranscoder 9 | import com.caverock.androidsvg.SVG 10 | 11 | /** 12 | * @author aggarwalpulkit596 13 | */ 14 | /** 15 | * Convert the [SVG]'s internal representation to an Android-compatible one ([Picture]). 16 | */ 17 | class SvgDrawableTranscoder : ResourceTranscoder { 18 | override fun transcode( 19 | toTranscode: Resource, 20 | options: Options 21 | ): Resource? { 22 | val svg = toTranscode.get() 23 | val picture = svg.renderToPicture() 24 | val drawable = PictureDrawable(picture) 25 | return SimpleResource(drawable) 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/util/livedata/DoubleTrigger.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.util.livedata 2 | 3 | import androidx.lifecycle.LiveData 4 | import androidx.lifecycle.MediatorLiveData 5 | 6 | /** 7 | * Custom [MediatorLiveData] which takes an [Pair] instead of a single variable 8 | */ 9 | class DoubleTrigger(a: LiveData, b: LiveData) : MediatorLiveData>() { 10 | init { 11 | addSource(a) { value = it to b.value } 12 | addSource(b) { value = a.value to it } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/util/receivers/DownloadBroadcastReceiver.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.util.receivers 2 | 3 | import android.app.DownloadManager 4 | import android.content.BroadcastReceiver 5 | import android.content.Context 6 | import android.content.Intent 7 | 8 | open class DownloadBroadcastReceiver : BroadcastReceiver() { 9 | override fun onReceive(context: Context, intent: Intent) { 10 | val action = intent.action 11 | 12 | if (DownloadManager.ACTION_DOWNLOAD_COMPLETE == action) { 13 | // Show a notification 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/codingblocks/cbonlineapp/util/recyclerciew/SpacesItemDecoration.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp.util.recyclerciew 2 | 3 | import android.graphics.Rect 4 | import android.view.View 5 | import androidx.recyclerview.widget.RecyclerView 6 | 7 | class SpacesItemDecoration(private val space: Float) : RecyclerView.ItemDecoration() { 8 | override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) { 9 | val position = parent.getChildAdapterPosition(view) 10 | val isLast = position == state.itemCount - 1 11 | if (isLast) { 12 | outRect.right = space.toInt() 13 | outRect.left = 0 // don't forget about recycling... 14 | } 15 | if (position == 0) { 16 | outRect.left = 0 17 | // don't recycle bottom if first item is also last 18 | // should keep bottom padding set above 19 | if (!isLast) outRect.right = 0 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/res/anim/fab_close.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 14 | 15 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/anim/fab_open.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 14 | 15 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/anim/fab_rotate_anticlock.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/anim/fab_rotate_clock.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/animator/slide_in_left.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/animator/slide_in_right.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/animator/slide_out_left.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/animator/slide_out_right.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/color/bnv_tab_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/color/button_dark_text.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/color/content_text_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/color/rank_text_color.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/cblogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-hdpi/cblogo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/failed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-hdpi/failed.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/intro1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-hdpi/intro1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/intro2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-hdpi/intro2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/intro3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-hdpi/intro3.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-hdpi/login.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/offline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-hdpi/offline.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/cblogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-mdpi/cblogo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/failed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-mdpi/failed.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/intro1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-mdpi/intro1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/intro2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-mdpi/intro2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/intro3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-mdpi/intro3.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-mdpi/login.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/offline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-mdpi/offline.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-v23/background_splash.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/cblogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-xhdpi/cblogo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/failed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-xhdpi/failed.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_error_white_36dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-xhdpi/ic_error_white_36dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_fullscreen_exit_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-xhdpi/ic_fullscreen_exit_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/ic_pause_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-xhdpi/ic_pause_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/intro1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-xhdpi/intro1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/intro2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-xhdpi/intro2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/intro3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-xhdpi/intro3.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-xhdpi/login.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/offline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-xhdpi/offline.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/cblogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-xxhdpi/cblogo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/failed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-xxhdpi/failed.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/intro1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-xxhdpi/intro1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/intro2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-xxhdpi/intro2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/intro3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-xxhdpi/intro3.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-xxhdpi/login.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/offline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-xxhdpi/offline.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/cblogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-xxxhdpi/cblogo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/failed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-xxxhdpi/failed.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/intro1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-xxxhdpi/intro1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/intro2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-xxxhdpi/intro2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/intro3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-xxxhdpi/intro3.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-xxxhdpi/login.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/offline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable-xxxhdpi/offline.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/background_custom_radio_buttons_unselected_state.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/background_green.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/background_orange.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/background_purple.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/background_splash.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bck_rounded.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/black_gradient.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/blue_gradient.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bookmark_state.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/button_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/button_background_states.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/button_disable.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/button_disable_grey.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/button_quiz.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/button_states.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/cblogosplash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable/cblogosplash.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/circle.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/code_challenge_text_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/custom_btn_radio.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/custom_rating.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 10 | 11 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/defaultavatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable/defaultavatar.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/divider.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/dividerthick.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/dots.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/dotted.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/dotted_red.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/download_states.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/download_states_content.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_arrow_inc.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_arrow_inverted_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_arrow_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_back.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_back_small.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_back_white.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_banner.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable/ic_banner.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_lock_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_baseline_lock_open_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_bookmark.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_bookmark_fill.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_cart.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_certi_state.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_certificate_black.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_certificate_gen.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_chart_line.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_circle.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_circle_orange.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_circle_pink.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_circle_transparent.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_circle_white_small.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_clock.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_close.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_code.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_code_grey.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_comp1.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_compare.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_content_copy.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_content_status.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_courses.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_cross.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_cross_white.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_dashboard.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_delete.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_doc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_document.xml: -------------------------------------------------------------------------------- 1 | 6 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_double_tick_indicator.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_doubt.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_doubts.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_down.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_down_inverted.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_download.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_dropdown.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_dropdown_small.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_dropright.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_dropright_big.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_edit.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_edit_grey.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_empty_circle.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_expired.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_fb.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_file_download.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_forward.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_fullscreen_exit_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable/ic_fullscreen_exit_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_gift.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_gmail.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_goodies.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_help.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_help_fill.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_high_quality_white_24dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable/ic_high_quality_white_24dp.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_hiring.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_info.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_jobs.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_library.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_like.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_like_empty.xml: -------------------------------------------------------------------------------- 1 | 6 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_lite.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_live_mentor.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_live_ta.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_lock.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_menu.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_notes_grey.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 16 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_offline.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_pause.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_play.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_play_black.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_play_lock.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_progress_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_purchase.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_quiz.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_quiz_black.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_quiz_grey.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 16 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_radio_off.xml: -------------------------------------------------------------------------------- 1 | 7 | 11 | 12 | 18 | 21 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_rate.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_recent.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_recorded.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_replay.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_request_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_resolve.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_ring.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_round_play_button.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_round_play_button_white.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_search.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_selected.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 15 | 18 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_selected_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_send.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_share.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_stand.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 9 | 12 | 15 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_start_black.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_status.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_tick.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_tracks.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_trending.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | 15 | 18 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_up_inverted.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_upgrade.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_vdo_back.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_video.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_video_grey.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_wishlisted.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/intro1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable/intro1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/intro2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable/intro2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/intro3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable/intro3.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/like_state.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/loader.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable/loader.gif -------------------------------------------------------------------------------- /app/src/main/res/drawable/lock_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ripple.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rounded_dialog.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/skeleton_bg_rounded.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/skeleton_bg_rounded_card.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/skeleton_bg_rounded_small.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/splash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable/splash.jpg -------------------------------------------------------------------------------- /app/src/main/res/drawable/sq_seekbar_clipped.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 23 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/thumb.xml: -------------------------------------------------------------------------------- 1 | 7 | 11 | 12 | 18 | 21 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/tick_inside_circle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable/tick_inside_circle.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/toolbar_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/toolbar_bg_borderless.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/toolbar_bg_colored.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/toolbar_bg_dark.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/toolbar_bg_dark_secondary.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/toolbar_bg_search.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/wheel.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable/wheel.webp -------------------------------------------------------------------------------- /app/src/main/res/drawable/wildcraft.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/drawable/wildcraft.webp -------------------------------------------------------------------------------- /app/src/main/res/font/gilroy_bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/font/gilroy_bold.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/gilroy_medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/font/gilroy_medium.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/gilroy_semibold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/font/gilroy_semibold.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/my_font_family.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_login2.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_splash.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/layout/bottom_sheet_batch.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 16 | 17 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/layout/bottom_sheet_mycourses.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/layout/button_quiz_small.xml: -------------------------------------------------------------------------------- 1 | 2 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/layout/course_upgrade_fragment.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/layout/dialog_loading.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 14 | 15 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_campaign_leaderboard.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_campaign_rules.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_checkout_order_completed.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_inbox.xml: -------------------------------------------------------------------------------- 1 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_quiz.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_social_login.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_batch.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/layout/quiz_header.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 13 | 14 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/layout/single_chip_layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/layout/track_selection_dialog.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/menu/bottom_nav_admin.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 13 | 14 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/menu/bottom_nav_dashboard.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 8 | 9 | 13 | 14 | 18 | 19 | 23 | 24 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/menu/course_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 10 | 11 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/menu/dashboard.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 9 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/menu/notification_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/transition/explode.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/attr.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/values/font_certs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /app/src/main/res/values/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #1B1E26 4 | -------------------------------------------------------------------------------- /app/src/main/res/values/preloaded_fonts.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Mark as Resolved 7 | Mark as Triage 8 | Mark as Mentor Attention Required 9 | Mark as Ignored 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/values/refs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /app/src/main/res/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/xml/paths.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/xml/remote_config_defaults.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | app_goodies_min_price 5 | 1 6 | 7 | 8 | app_goodies_min_date 9 | 1 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/xml/shortcut.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 10 | 14 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/test/java/com/codingblocks/cbonlineapp/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.cbonlineapp 2 | 3 | import org.junit.Assert.assertEquals 4 | import org.junit.Test 5 | 6 | /** 7 | * Example local unit test, which will execute on the development machine (host). 8 | * 9 | * See [testing documentation](http://d.android.com/tools/testing). 10 | */ 11 | class ExampleUnitTest { 12 | @Test 13 | fun addition_isCorrect() { 14 | assertEquals(4, 2 + 2) 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Dec 20 12:01:11 IST 2019 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip 7 | -------------------------------------------------------------------------------- /keystores/.gitignore: -------------------------------------------------------------------------------- 1 | release.keystore 2 | -------------------------------------------------------------------------------- /keystores/debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/coding-blocks/CBOnlineApp/7b94f73558b5796ceec92d3c0c3e9da2307e5bd1/keystores/debug.keystore -------------------------------------------------------------------------------- /onlineapi/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /onlineapi/src/main/kotlin/com/codingblocks/onlineapi/CBOnlineCommunicator.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.onlineapi 2 | 3 | interface CBOnlineCommunicator { 4 | var authJwt: String 5 | var refreshToken: String 6 | var baseUrl: String 7 | var appVersion: Int 8 | } 9 | -------------------------------------------------------------------------------- /onlineapi/src/main/kotlin/com/codingblocks/onlineapi/CBOnlineLib.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.onlineapi 2 | 3 | object CBOnlineLib { 4 | private var clients: Clients? = null 5 | 6 | fun initialize(communicator: CBOnlineCommunicator) { 7 | clients = Clients(communicator) 8 | } 9 | 10 | private fun getClient() = checkNotNull(clients, { "CBOnlineLib.initialize() not called" }) 11 | 12 | val api get() = getClient().api 13 | 14 | val hackapi get() = getClient().hackapi 15 | 16 | val onlineV2JsonApi get() = getClient().onlineV2JsonApi 17 | 18 | var httpLogging 19 | get() = getClient().getHttpLogging() 20 | set(value) = getClient().setHttpLogging(value) 21 | } 22 | -------------------------------------------------------------------------------- /onlineapi/src/main/kotlin/com/codingblocks/onlineapi/Result.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.onlineapi 2 | 3 | data class Result(val status: Status, val data: T?, val message: String?) { 4 | 5 | enum class Status { 6 | SUCCESS, 7 | ERROR, 8 | LOADING 9 | } 10 | 11 | companion object { 12 | fun success(data: T): Result { 13 | return Result(Status.SUCCESS, data, null) 14 | } 15 | 16 | fun error(message: String, data: T? = null): Result { 17 | return Result(Status.ERROR, data, message) 18 | } 19 | 20 | fun loading(data: T? = null): Result { 21 | return Result(Status.LOADING, data, null) 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /onlineapi/src/main/kotlin/com/codingblocks/onlineapi/ResultWrapper.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.onlineapi 2 | 3 | sealed class ResultWrapper { 4 | data class Success(val value: T) : ResultWrapper() 5 | data class GenericError(val code: Int? = null, val error: String) : ResultWrapper() 6 | } 7 | -------------------------------------------------------------------------------- /onlineapi/src/main/kotlin/com/codingblocks/onlineapi/models/Performance.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.onlineapi.models 2 | 3 | data class PerformanceResponse( 4 | val performance: Performance?, 5 | val averageProgress: ArrayList, 6 | val userProgress: ArrayList 7 | ) 8 | 9 | data class Performance( 10 | val percentile: Int?, 11 | val remarks: String 12 | ) 13 | 14 | data class ProgressItem( 15 | val date: String, 16 | val progress: String 17 | ) 18 | 19 | data class RankResponse( 20 | val bestRank: Int, 21 | val bestRankAchievedOn: String, 22 | val currentMonthScore: Int, 23 | val currentOverallRank: Int, 24 | val previousMonthScore: Int, 25 | val previousOverallRank: Int 26 | ) 27 | 28 | data class Comparision( 29 | val name: String, 30 | val lite: Boolean, 31 | val premium: Boolean, 32 | val live: Boolean, 33 | val classroom: Boolean 34 | ) 35 | -------------------------------------------------------------------------------- /onlineapi/src/main/kotlin/com/codingblocks/onlineapi/models/SpinResponse.kt: -------------------------------------------------------------------------------- 1 | package com.codingblocks.onlineapi.models 2 | 3 | data class SpinResponse( 4 | val img: String, 5 | val chance: Int, 6 | val rotation: Int, 7 | val count: Int, 8 | val description: String, 9 | val webp: String, 10 | val title: String, 11 | val createdAt: String, 12 | val size: Int, 13 | val theme: String, 14 | val id: String, 15 | val actions: List, 16 | val updatedAt: String 17 | ) 18 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app', ':onlineapi' 2 | --------------------------------------------------------------------------------