├── .github ├── pull_request_template.md └── workflows │ └── android-ci.yml ├── .gitignore ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── puzzling │ │ └── puzzlingaos │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ ├── ic_puzzling-playstore.png │ ├── java │ │ └── com │ │ │ └── puzzling │ │ │ └── puzzlingaos │ │ │ ├── App.kt │ │ │ ├── TestFragment.kt │ │ │ ├── base │ │ │ ├── BaseActivity.kt │ │ │ ├── BaseDialogFragment.kt │ │ │ ├── BaseFragment.kt │ │ │ ├── BindingAdapter.kt │ │ │ └── BottomSheetDialogFragment.kt │ │ │ ├── data │ │ │ ├── datasource │ │ │ │ ├── local │ │ │ │ │ ├── ExampleLocalDataSource.kt │ │ │ │ │ ├── LocalDataSource.kt │ │ │ │ │ ├── TokenDataSource.kt │ │ │ │ │ └── UserDataSource.kt │ │ │ │ └── remote │ │ │ │ │ ├── AuthDataSource.kt │ │ │ │ │ ├── ExampleRemoteDataSource.kt │ │ │ │ │ ├── MyDashBoardDataSource.kt │ │ │ │ │ ├── MyPageDataSource.kt │ │ │ │ │ ├── ProjectDataSource.kt │ │ │ │ │ ├── TeamDashBoardDataSource.kt │ │ │ │ │ ├── WriteReviewDataSource.kt │ │ │ │ │ └── impl │ │ │ │ │ ├── AuthDataSourceImpl.kt │ │ │ │ │ ├── MyDashBoardDataSourceImpl.kt │ │ │ │ │ ├── MyPageDataSourceImpl.kt │ │ │ │ │ ├── ProjectDataSourceImpl.kt │ │ │ │ │ ├── TeamReviewDataSourceImpl.kt │ │ │ │ │ └── WriteReviewDataSourceImpl.kt │ │ │ ├── entity │ │ │ │ ├── CurrentProject.kt │ │ │ │ ├── Token.kt │ │ │ │ └── User.kt │ │ │ ├── interceptor │ │ │ │ └── ExampleInterceptor.kt │ │ │ ├── model │ │ │ │ ├── request │ │ │ │ │ ├── ExampleRequest.kt │ │ │ │ │ ├── RequestJoinProject.kt │ │ │ │ │ ├── RequestLoginDto.kt │ │ │ │ │ ├── RequestProjectRegisterDto.kt │ │ │ │ │ ├── RequestReview5FDto.kt │ │ │ │ │ ├── RequestReviewAARDto.kt │ │ │ │ │ └── RequestReviewTILDto.kt │ │ │ │ └── response │ │ │ │ │ ├── BaseResponse.kt │ │ │ │ │ ├── ExampleResponse.kt │ │ │ │ │ ├── ResponseActionPlanDto.kt │ │ │ │ │ ├── ResponseDetailRetroDto.kt │ │ │ │ │ ├── ResponseInvitationCodeDto.kt │ │ │ │ │ ├── ResponseJoinProjectDto.kt │ │ │ │ │ ├── ResponseLoginDto.kt │ │ │ │ │ ├── ResponseMyPageProjectDto.kt │ │ │ │ │ ├── ResponseMyPuzzleBoardDto.kt │ │ │ │ │ ├── ResponseMyRetroListDto.kt │ │ │ │ │ ├── ResponsePreviousTemplateDto.kt │ │ │ │ │ ├── ResponseProceedingProjectDto.kt │ │ │ │ │ ├── ResponseProjectRegisterDto.kt │ │ │ │ │ ├── ResponseProjectRetroWeekDto.kt │ │ │ │ │ ├── ResponseReviewTypeDto.kt │ │ │ │ │ ├── ResponseSaveReviewDto.kt │ │ │ │ │ ├── ResponseTeamPuzzleBoardDto.kt │ │ │ │ │ ├── ResponseTeamRankingDto.kt │ │ │ │ │ ├── ResponseTeamRetrospectListDto.kt │ │ │ │ │ ├── ResponseTeamReviewListDto.kt │ │ │ │ │ └── ResponseTokenDto.kt │ │ │ ├── repository │ │ │ │ ├── AuthRepositoryImpl.kt │ │ │ │ ├── ExampleRepositoryImpl.kt │ │ │ │ ├── MyBoardRepositoryImpl.kt │ │ │ │ ├── MyPageRepositoryImpl.kt │ │ │ │ ├── ProjectRepositoryImpl.kt │ │ │ │ ├── TeamDashBoardRepositoryImpl.kt │ │ │ │ ├── TokenRepositoryImpl.kt │ │ │ │ ├── UserRepositoryImpl.kt │ │ │ │ └── WriteReviewRepositoryImpl.kt │ │ │ └── service │ │ │ │ ├── AuthService.kt │ │ │ │ ├── CryptoService.kt │ │ │ │ ├── ExampleService.kt │ │ │ │ ├── KakaoAuthService.kt │ │ │ │ ├── MyPageService.kt │ │ │ │ ├── PersonalReviewService.kt │ │ │ │ ├── ProjectService.kt │ │ │ │ ├── ReIssueTokenService.kt │ │ │ │ ├── TeamReviewService.kt │ │ │ │ └── WriteReviewService.kt │ │ │ ├── di │ │ │ ├── ApiModule.kt │ │ │ ├── DataSourceModule.kt │ │ │ ├── DataStoreModule.kt │ │ │ ├── Qualifier.kt │ │ │ ├── ReIssueRetrofitModule.kt │ │ │ ├── RepositoryModule.kt │ │ │ └── RetrofitModule.kt │ │ │ ├── domain │ │ │ ├── entity │ │ │ │ ├── AAR.kt │ │ │ │ ├── ActionPlan.kt │ │ │ │ ├── DetailRetro.kt │ │ │ │ ├── DummyData.kt │ │ │ │ ├── F5.kt │ │ │ │ ├── InvitationCode.kt │ │ │ │ ├── JoinProjectInfo.kt │ │ │ │ ├── MyPuzzleBoard.kt │ │ │ │ ├── Project.kt │ │ │ │ ├── ProjectReview.kt │ │ │ │ ├── Puzzle.kt │ │ │ │ ├── PuzzleBoard.kt │ │ │ │ ├── RetrospectWeekCycle.kt │ │ │ │ ├── ReviewCycle.kt │ │ │ │ ├── ReviewType.kt │ │ │ │ ├── TIL.kt │ │ │ │ ├── TeamPuzzleBoard.kt │ │ │ │ ├── TeamRanking.kt │ │ │ │ ├── TeamReviewList.kt │ │ │ │ ├── TeamReviewMultiList.kt │ │ │ │ └── ThisWeek.kt │ │ │ ├── repository │ │ │ │ ├── AuthRepository.kt │ │ │ │ ├── ExampleRepository.kt │ │ │ │ ├── MyBoardRepository.kt │ │ │ │ ├── MyPageRepository.kt │ │ │ │ ├── ProjectRepository.kt │ │ │ │ ├── TeamDashBoardRepository.kt │ │ │ │ ├── TokenRepository.kt │ │ │ │ ├── UserRepository.kt │ │ │ │ └── WriteReviewRepository.kt │ │ │ └── usecase │ │ │ │ ├── onboarding │ │ │ │ ├── GetLocalTokenUseCase.kt │ │ │ │ ├── GetRemoteTokenUseCase.kt │ │ │ │ ├── GetUserUseCase.kt │ │ │ │ └── PostLocalTokenUseCase.kt │ │ │ │ ├── personaldashboard │ │ │ │ ├── GetActionPlanUseCase.kt │ │ │ │ ├── GetProceedingProjectUseCase.kt │ │ │ │ └── GetUserPuzzleUseCase.kt │ │ │ │ ├── review │ │ │ │ ├── GetPreviosReviewUseCase.kt │ │ │ │ ├── GetReviewTypeUseCase.kt │ │ │ │ ├── Post5FReviewUseCase.kt │ │ │ │ ├── PostAARReviewUseCase.kt │ │ │ │ └── PostTILReviewUseCase.kt │ │ │ │ └── teamdashboard │ │ │ │ ├── GetTeamPuzzleUseCase.kt │ │ │ │ └── GetTeamRankingUseCase.kt │ │ │ ├── presentation │ │ │ ├── detailRetrospect │ │ │ │ ├── DetailRetroActivity.kt │ │ │ │ ├── DetailRetroAdapter.kt │ │ │ │ ├── DetailRetroFragment.kt │ │ │ │ ├── DetailRetroViewModel.kt │ │ │ │ ├── NoDetailRetroFragment.kt │ │ │ │ └── WeekTapAdapter.kt │ │ │ ├── home │ │ │ │ ├── HomeFragment.kt │ │ │ │ ├── HomeViewModel.kt │ │ │ │ ├── personal │ │ │ │ │ ├── ActionPlanListAdapter.kt │ │ │ │ │ ├── PersonalDashboardFragment.kt │ │ │ │ │ ├── PersonalDashboardViewModel.kt │ │ │ │ │ └── puzzleboard │ │ │ │ │ │ ├── OnePuzzleBoardActivity.kt │ │ │ │ │ │ ├── ThreePuzzleBoardActivity.kt │ │ │ │ │ │ └── TwoPuzzleBoardActivity.kt │ │ │ │ └── team │ │ │ │ │ ├── TeamDashBoardViewModel.kt │ │ │ │ │ ├── TeamDashboardFragment.kt │ │ │ │ │ └── puzzleboard │ │ │ │ │ ├── OneTeamBoardActivity.kt │ │ │ │ │ ├── ThreeTeamBoardActivity.kt │ │ │ │ │ └── TwoTeamBoardActivity.kt │ │ │ ├── invitationCode │ │ │ │ ├── InputCodeFragment.kt │ │ │ │ ├── InputProfileFragment.kt │ │ │ │ ├── InvitationCodeActivity.kt │ │ │ │ └── InvitationCodeViewModel.kt │ │ │ ├── main │ │ │ │ ├── HomeChooseProjectAdapter.kt │ │ │ │ ├── HomeChooseProjectFragment.kt │ │ │ │ └── MainActivity.kt │ │ │ ├── mypage │ │ │ │ ├── ChooseProjectBottomFragment.kt │ │ │ │ ├── MyPageFragment.kt │ │ │ │ ├── MyRetrospectFragment.kt │ │ │ │ ├── MyRetrospectViewModel.kt │ │ │ │ └── adapter │ │ │ │ │ ├── ChooseProjectAdapter.kt │ │ │ │ │ ├── MyProjectBottomAdapter.kt │ │ │ │ │ ├── MyProjectContentAdapter.kt │ │ │ │ │ ├── MyProjectTitleAdapter.kt │ │ │ │ │ ├── MyRetroContentAdapter.kt │ │ │ │ │ └── MyRetroTitleAdapter.kt │ │ │ ├── onboarding │ │ │ │ ├── ChooseJoinRegisterActivity.kt │ │ │ │ ├── LoginActivity.kt │ │ │ │ └── LoginViewModel.kt │ │ │ ├── register │ │ │ │ ├── DatePickerFragment.kt │ │ │ │ ├── RegisterActivity.kt │ │ │ │ ├── RegisterViewModel.kt │ │ │ │ ├── RetrospectWeekCycleAdapter.kt │ │ │ │ └── projectCode │ │ │ │ │ └── ProjectCodeDialogFragment.kt │ │ │ ├── team │ │ │ │ └── currentSituation │ │ │ │ │ ├── ItemTeamRetrospectListFragment.kt │ │ │ │ │ ├── NoItemTeamRetrospectListFragment.kt │ │ │ │ │ ├── RetrospectListAdapter.kt │ │ │ │ │ ├── RetrospectThisWeekAdapter.kt │ │ │ │ │ ├── TeamRetroActivity.kt │ │ │ │ │ └── TeamRetroViewModel.kt │ │ │ └── writeRetrospective │ │ │ │ ├── ChooseReviewFragment.kt │ │ │ │ ├── RegisterDialogFragment.kt │ │ │ │ ├── Write5fFragment.kt │ │ │ │ ├── WriteAarFragment.kt │ │ │ │ ├── WriteRetrospectiveActivity.kt │ │ │ │ ├── WriteReviewViewModel.kt │ │ │ │ └── WriteTilFragment.kt │ │ │ └── util │ │ │ ├── Constants.kt │ │ │ ├── CustomSnackbar.kt │ │ │ ├── DividerItemDecoration.kt │ │ │ ├── GetClipBoardManger.kt │ │ │ ├── IntentExt.kt │ │ │ ├── ItemDiffCallback.kt │ │ │ ├── JsonObject.kt │ │ │ ├── KakaoLoginCallback.kt │ │ │ ├── Pixel.kt │ │ │ ├── ViewExt.kt │ │ │ └── ViewModelFactory.kt │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ ├── bg_button_selected_ripple.xml │ │ ├── bg_register_date_background.xml │ │ ├── bg_register_daycycle.xml │ │ ├── bg_register_edit_background.xml │ │ ├── bg_register_registerbutton_deselect.xml │ │ ├── bg_register_registerbutton_select.xml │ │ ├── circle_blue100_fill_0.xml │ │ ├── circle_blue400_fill.xml │ │ ├── circle_blue400_fill_0.xml │ │ ├── circle_gray300_line.xml │ │ ├── ic_back.xml │ │ ├── ic_cancel.xml │ │ ├── ic_check.xml │ │ ├── ic_down.xml │ │ ├── ic_first_rank.xml │ │ ├── ic_home.xml │ │ ├── ic_join_puzzle.png │ │ ├── ic_launcher_background.xml │ │ ├── ic_login_kakao.png │ │ ├── ic_monday.xml │ │ ├── ic_my_toolbar_alarm.xml │ │ ├── ic_my_toolbar_back.xml │ │ ├── ic_mypage.xml │ │ ├── ic_new_puzzle.png │ │ ├── ic_next.xml │ │ ├── ic_next_blue.xml │ │ ├── ic_no_detail_retro.png │ │ ├── ic_notification.xml │ │ ├── ic_plus.xml │ │ ├── ic_puzzle.xml │ │ ├── ic_puzzling.xml │ │ ├── ic_puzzling_background.xml │ │ ├── ic_puzzling_coment.xml │ │ ├── ic_puzzling_logo.png │ │ ├── ic_register_day_dropdown.xml │ │ ├── ic_register_toolbar_close.xml │ │ ├── ic_right.xml │ │ ├── ic_second_rank.xml │ │ ├── ic_selected_project.xml │ │ ├── ic_third_rank.xml │ │ ├── ic_thuesday.xml │ │ ├── ic_wednesday.xml │ │ ├── img_dialog_puzzle.png │ │ ├── img_dialog_puzzle1.png │ │ ├── img_home_puzzle_btn.png │ │ ├── img_myboard1.xml │ │ ├── img_myboard2.xml │ │ ├── img_myboard3.xml │ │ ├── img_myboard4.xml │ │ ├── img_puzzle1.png │ │ ├── img_puzzle10.png │ │ ├── img_puzzle12.png │ │ ├── img_puzzle13.png │ │ ├── img_puzzle14.png │ │ ├── img_puzzle15.png │ │ ├── img_puzzle2.png │ │ ├── img_puzzle3.png │ │ ├── img_puzzle4.png │ │ ├── img_puzzle5.png │ │ ├── img_puzzle6.png │ │ ├── img_puzzle7.png │ │ ├── img_puzzle8.png │ │ ├── img_puzzle9.png │ │ ├── img_teamboard1.xml │ │ ├── img_teamboard2.xml │ │ ├── img_teamboard3.xml │ │ ├── img_teamboard4.xml │ │ ├── puzzlea1.png │ │ ├── puzzlea10.png │ │ ├── puzzlea11.png │ │ ├── puzzlea12.png │ │ ├── puzzlea13.png │ │ ├── puzzlea14.png │ │ ├── puzzlea15.png │ │ ├── puzzlea2.png │ │ ├── puzzlea3.png │ │ ├── puzzlea4.png │ │ ├── puzzlea5.png │ │ ├── puzzlea6.png │ │ ├── puzzlea7.png │ │ ├── puzzlea8.png │ │ ├── puzzlea9.png │ │ ├── puzzleb1.png │ │ ├── puzzleb10.png │ │ ├── puzzleb11.png │ │ ├── puzzleb12.png │ │ ├── puzzleb13.png │ │ ├── puzzleb14.png │ │ ├── puzzleb15.png │ │ ├── puzzleb2.png │ │ ├── puzzleb3.png │ │ ├── puzzleb4.png │ │ ├── puzzleb5.png │ │ ├── puzzleb6.png │ │ ├── puzzleb7.png │ │ ├── puzzleb8.png │ │ ├── puzzleb9.png │ │ ├── puzzlec1.png │ │ ├── puzzlec10.png │ │ ├── puzzlec11.png │ │ ├── puzzlec12.png │ │ ├── puzzlec13.png │ │ ├── puzzlec14.png │ │ ├── puzzlec15.png │ │ ├── puzzlec2.png │ │ ├── puzzlec3.png │ │ ├── puzzlec4.png │ │ ├── puzzlec5.png │ │ ├── puzzlec6.png │ │ ├── puzzlec7.png │ │ ├── puzzlec8.png │ │ ├── puzzlec9.png │ │ ├── puzzled1.png │ │ ├── puzzled10.png │ │ ├── puzzled11.png │ │ ├── puzzled12.png │ │ ├── puzzled13.png │ │ ├── puzzled14.png │ │ ├── puzzled15.png │ │ ├── puzzled2.png │ │ ├── puzzled3.png │ │ ├── puzzled4.png │ │ ├── puzzled5.png │ │ ├── puzzled6.png │ │ ├── puzzled7.png │ │ ├── puzzled8.png │ │ ├── puzzled9.png │ │ ├── puzzlee1.png │ │ ├── puzzlee10.png │ │ ├── puzzlee11.png │ │ ├── puzzlee12.png │ │ ├── puzzlee13.png │ │ ├── puzzlee14.png │ │ ├── puzzlee15.png │ │ ├── puzzlee2.png │ │ ├── puzzlee3.png │ │ ├── puzzlee4.png │ │ ├── puzzlee5.png │ │ ├── puzzlee6.png │ │ ├── puzzlee7.png │ │ ├── puzzlee8.png │ │ ├── puzzlee9.png │ │ ├── rect_bg50_fill_radius_16.xml │ │ ├── rect_blue100_fill_16.xml │ │ ├── rect_blue200_line_16.xml │ │ ├── rect_blue400_fill_16.xml │ │ ├── rect_blue400_fill_radius_16.xml │ │ ├── rect_blue50_fill_bottom16.xml │ │ ├── rect_blue_fill_16.xml │ │ ├── rect_blue_fill_radius_16_gradient.xml │ │ ├── rect_gray050_fill_16.xml │ │ ├── rect_gray200_line_0.xml │ │ ├── rect_gray300_fill.xml │ │ ├── rect_gray400_fill_16.xml │ │ ├── rect_lightblue_fill_radius_14_gradient.xml │ │ ├── rect_red200_line_16.xml │ │ ├── rect_red_line_16.xml │ │ ├── rect_white_fill_16.xml │ │ ├── rect_white_fill_radius_16.xml │ │ ├── rect_white_fill_top16.xml │ │ ├── round_blue100_fill.xml │ │ ├── round_blue400_fill.xml │ │ ├── round_white_fill.xml │ │ ├── sel_detailretro_tablayer_retorweek_textcolor.xml │ │ ├── sel_detailretro_tablayer_retroweek_bg.xml │ │ ├── sel_detailretro_tablayer_textcolor.xml │ │ ├── sel_invitation_background_edittext.xml │ │ ├── sel_register_drawable_custom_edittext.xml │ │ ├── sel_register_drawable_enabled_btn.xml │ │ ├── selector_bottom_navigation.xml │ │ ├── selector_custom_button.xml │ │ ├── selector_custom_edittext.xml │ │ ├── shape_bottomnavi_background.xml │ │ ├── shape_tablayout_background.xml │ │ ├── tab_background.xml │ │ ├── tab_background_selector.xml │ │ └── tab_unselected_background.xml │ │ ├── font │ │ ├── notosans_black.otf │ │ ├── notosans_bold.otf │ │ ├── notosans_regular.otf │ │ ├── roboto_black.ttf │ │ ├── roboto_bold.ttf │ │ └── roboto_regular.ttf │ │ ├── layout │ │ ├── activity_choose_join_register.xml │ │ ├── activity_detail_retro.xml │ │ ├── activity_invitation_code.xml │ │ ├── activity_login.xml │ │ ├── activity_main.xml │ │ ├── activity_one_puzzle_board.xml │ │ ├── activity_one_team_board.xml │ │ ├── activity_register.xml │ │ ├── activity_team_retro.xml │ │ ├── activity_three_puzzle_board.xml │ │ ├── activity_three_team_board.xml │ │ ├── activity_two_puzzle_board.xml │ │ ├── activity_two_team_board.xml │ │ ├── activity_write_retrospective.xml │ │ ├── fragment__no_detail_retro.xml │ │ ├── fragment_bottom_choose_project.xml │ │ ├── fragment_choose_review.xml │ │ ├── fragment_date_picker.xml │ │ ├── fragment_detail_retro.xml │ │ ├── fragment_home.xml │ │ ├── fragment_home_choose_project.xml │ │ ├── fragment_input_code.xml │ │ ├── fragment_input_profile.xml │ │ ├── fragment_item_team_retrospect_list.xml │ │ ├── fragment_my_page.xml │ │ ├── fragment_my_retrospect.xml │ │ ├── fragment_no_item_team_retrospect_list.xml │ │ ├── fragment_personal_dashboard.xml │ │ ├── fragment_projectcode_dialog.xml │ │ ├── fragment_register_dialog.xml │ │ ├── fragment_team_dashboard.xml │ │ ├── fragment_write5f.xml │ │ ├── fragment_write_aar.xml │ │ ├── fragment_write_til.xml │ │ ├── item_bottom_logout.xml │ │ ├── item_detail_retro.xml │ │ ├── item_home_actionplan.xml │ │ ├── item_home_project.xml │ │ ├── item_my_project.xml │ │ ├── item_mypage_nickname.xml │ │ ├── item_mypuzzle_board.xml │ │ ├── item_myretro_all_projects.xml │ │ ├── item_myretro_current_project.xml │ │ ├── item_myretro_project.xml │ │ ├── item_myretro_retro.xml │ │ ├── item_personal_puzzle.xml │ │ ├── item_register_retrospect_week_cycle.xml │ │ ├── item_team_board.xml │ │ ├── item_team_do_retrospect_list.xml │ │ ├── item_team_do_retrospect_text.xml │ │ ├── item_team_dont_retrospect_list.xml │ │ ├── item_team_dont_retrospect_text.xml │ │ ├── item_team_this_week.xml │ │ ├── snackbar_custom.xml │ │ ├── tab_text_color_blue100.xml │ │ ├── tab_title.xml │ │ └── tab_title_text_black.xml │ │ ├── menu │ │ └── main_menu.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ ├── ic_launcher_round.xml │ │ ├── ic_puzzling.xml │ │ └── ic_puzzling_round.xml │ │ ├── mipmap-anydpi-v33 │ │ └── ic_launcher.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.webp │ │ ├── ic_launcher_round.webp │ │ ├── ic_puzzling.png │ │ ├── ic_puzzling_foreground.png │ │ └── ic_puzzling_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.webp │ │ ├── ic_launcher_round.webp │ │ ├── ic_puzzling.png │ │ ├── ic_puzzling_foreground.png │ │ └── ic_puzzling_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.webp │ │ ├── ic_launcher_round.webp │ │ ├── ic_puzzling.png │ │ ├── ic_puzzling_foreground.png │ │ └── ic_puzzling_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.webp │ │ ├── ic_launcher_round.webp │ │ ├── ic_puzzling.png │ │ ├── ic_puzzling_foreground.png │ │ └── ic_puzzling_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.webp │ │ ├── ic_launcher_round.webp │ │ ├── ic_puzzling.png │ │ ├── ic_puzzling_foreground.png │ │ └── ic_puzzling_round.png │ │ ├── values-night │ │ └── themes.xml │ │ ├── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ ├── styles.xml │ │ ├── text_appearance.xml │ │ └── themes.xml │ │ └── xml │ │ ├── backup_rules.xml │ │ └── data_extraction_rules.xml │ └── test │ └── java │ └── com │ └── puzzling │ └── puzzlingaos │ └── ExampleUnitTest.kt ├── build.gradle ├── core-ui ├── .gitignore ├── build.gradle ├── consumer-rules.pro ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── example │ │ └── core_ui │ │ └── ExampleInstrumentedTest.kt │ ├── main │ └── AndroidManifest.xml │ └── test │ └── java │ └── com │ └── example │ └── core_ui │ └── ExampleUnitTest.kt ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | ## ✍️ 작업한 내용 2 | 3 | 4 | 5 | 6 | ## ✔️ PR point 7 | 8 | 9 | 10 | 11 | ## 📸 스크린샷 12 | 13 | 14 | 15 | ## 🍀 관련 이슈 16 | -------------------------------------------------------------------------------- /.github/workflows/android-ci.yml: -------------------------------------------------------------------------------- 1 | name: Puzzling PR Builder 2 | on: 3 | pull_request: 4 | branches: [ "develop" ] 5 | 6 | jobs: 7 | build: 8 | runs-on: ubuntu-latest 9 | 10 | steps: 11 | - uses: actions/checkout@v3 12 | 13 | - name: Gradle cache 14 | uses: actions/cache@v2 15 | with: 16 | path: | 17 | ~/.gradle/caches 18 | ~/.gradle/wrapper 19 | key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }} 20 | restore-keys: | 21 | ${{ runner.os }}-gradle- 22 | - name: set up JDK 11 23 | uses: actions/setup-java@v3 24 | with: 25 | java-version: '11' 26 | distribution: 'temurin' 27 | cache: gradle 28 | 29 | - name: Grant execute permission for gradlew 30 | run: chmod +x gradlew 31 | 32 | # - name: Lint Check 33 | # run: ./gradlew ktlintCheck 34 | 35 | # - name: Build with Gradle 36 | # run: ./gradlew buildeRelease 37 | 38 | # - name: Slack Notification on Failure 39 | # uses: rtCamp/action-slack-notify@master 40 | # if: failure() 41 | # env: 42 | # SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }} 43 | # SLACK_TITLE: 'Puzzling Android CI checks have failed 🚫' 44 | # SLACK_USERNAME: 짱즐링 45 | # SLACK_MESSAGE: 'WHAT THE BUG 🗯' 46 | # SLACK_COLOR: danger 47 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /app/src/androidTest/java/com/puzzling/puzzlingaos/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos 2 | 3 | import androidx.test.ext.junit.runners.AndroidJUnit4 4 | import androidx.test.platform.app.InstrumentationRegistry 5 | import junit.framework.TestCase.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.getInstrumentation().targetContext 20 | assertEquals("com.puzzling.puzzlingaos", appContext.packageName) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/ic_puzzling-playstore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/ic_puzzling-playstore.png -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/App.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos 2 | 3 | import android.app.Application 4 | import androidx.appcompat.app.AppCompatDelegate 5 | import com.kakao.sdk.common.KakaoSdk 6 | import com.puzzling.puzzlingaos.BuildConfig.NATIVE_APP_KEY 7 | import com.puzzling.puzzlingaos.data.datasource.local.LocalDataSource 8 | import dagger.hilt.android.HiltAndroidApp 9 | 10 | @HiltAndroidApp 11 | class App : Application() { 12 | override fun onCreate() { 13 | super.onCreate() 14 | KakaoSdk.init(this, NATIVE_APP_KEY) 15 | LocalDataSource.init(this) 16 | AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/TestFragment.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos 2 | 3 | // TODO: Rename parameter arguments, choose names that match 4 | // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER 5 | private const val ARG_PARAM1 = "param1" 6 | private const val ARG_PARAM2 = "param2" 7 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/base/BaseActivity.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.base 2 | 3 | import android.os.Bundle 4 | import androidx.annotation.LayoutRes 5 | import androidx.appcompat.app.AppCompatActivity 6 | import androidx.databinding.DataBindingUtil 7 | import androidx.databinding.ViewDataBinding 8 | 9 | abstract class BaseActivity( 10 | @LayoutRes private val layoutRes: Int, 11 | ) : AppCompatActivity() { 12 | lateinit var binding: T 13 | 14 | override fun onCreate(savedInstanceState: Bundle?) { 15 | super.onCreate(savedInstanceState) 16 | binding = DataBindingUtil.setContentView(this, layoutRes) 17 | binding.lifecycleOwner = this 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/base/BaseDialogFragment.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.base 2 | 3 | import android.os.Bundle 4 | import android.view.LayoutInflater 5 | import android.view.View 6 | import android.view.ViewGroup 7 | import android.view.WindowManager 8 | import androidx.annotation.LayoutRes 9 | import androidx.databinding.DataBindingUtil 10 | import androidx.databinding.ViewDataBinding 11 | import androidx.fragment.app.DialogFragment 12 | import com.puzzling.puzzlingaos.R 13 | 14 | abstract class BaseDialogFragment(@LayoutRes private val layoutRes: Int) : 15 | DialogFragment() { 16 | private var _binding: B? = null 17 | protected val binding get() = requireNotNull(_binding) { "${this::class.java.simpleName}에서 에러가 발생했습니다." } 18 | 19 | override fun onStart() { 20 | super.onStart() 21 | dialog?.window?.apply { 22 | setLayout( 23 | WindowManager.LayoutParams.MATCH_PARENT, 24 | WindowManager.LayoutParams.WRAP_CONTENT, 25 | ) 26 | setBackgroundDrawableResource(R.color.transparent) 27 | } 28 | } 29 | 30 | override fun onCreateView( 31 | inflater: LayoutInflater, 32 | container: ViewGroup?, 33 | savedInstanceState: Bundle?, 34 | ): View { 35 | _binding = DataBindingUtil.inflate(inflater, layoutRes, container, false) 36 | return binding.root 37 | } 38 | 39 | override fun onDestroyView() { 40 | super.onDestroyView() 41 | _binding = null 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/base/BaseFragment.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.base 2 | 3 | import android.os.Bundle 4 | import android.view.LayoutInflater 5 | import android.view.View 6 | import android.view.ViewGroup 7 | import androidx.annotation.LayoutRes 8 | import androidx.databinding.DataBindingUtil 9 | import androidx.databinding.ViewDataBinding 10 | import androidx.fragment.app.Fragment 11 | 12 | abstract class BaseFragment(@LayoutRes private val layoutResId: Int) : 13 | Fragment() { 14 | private var _binding: B? = null 15 | val binding 16 | get() = requireNotNull(_binding) { "${this::class.java.simpleName}에서 에러가 발생했습니다." } 17 | 18 | override fun onCreateView( 19 | inflater: LayoutInflater, 20 | container: ViewGroup?, 21 | savedInstanceState: Bundle?, 22 | ): View { 23 | _binding = DataBindingUtil.inflate(inflater, layoutResId, container, false) 24 | binding.lifecycleOwner = viewLifecycleOwner 25 | return binding.root 26 | } 27 | 28 | override fun onDestroyView() { 29 | _binding = null 30 | super.onDestroyView() 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/base/BottomSheetDialogFragment.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.base 2 | 3 | import android.os.Bundle 4 | import android.view.LayoutInflater 5 | import android.view.View 6 | import android.view.ViewGroup 7 | import androidx.annotation.LayoutRes 8 | import androidx.databinding.DataBindingUtil 9 | import androidx.databinding.ViewDataBinding 10 | import com.google.android.material.bottomsheet.BottomSheetDialogFragment 11 | 12 | abstract class BottomSheetDialogFragment(@LayoutRes private val layoutResId: Int) : 13 | BottomSheetDialogFragment() { 14 | private var _binding: B? = null 15 | val binding get() = requireNotNull(_binding) { "${this::class.java.simpleName}에서 에러가 발생했습니다." } 16 | 17 | override fun onCreateView( 18 | inflater: LayoutInflater, 19 | container: ViewGroup?, 20 | savedInstanceState: Bundle?, 21 | ): View { 22 | _binding = DataBindingUtil.inflate(inflater, layoutResId, container, false) 23 | return binding.root 24 | } 25 | 26 | override fun onDestroyView() { 27 | _binding = null 28 | super.onDestroyView() 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/datasource/local/ExampleLocalDataSource.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.datasource.local 2 | 3 | import com.puzzling.puzzlingaos.data.model.request.ExampleRequest 4 | import com.puzzling.puzzlingaos.data.model.response.ExampleResponse 5 | import com.puzzling.puzzlingaos.data.service.ExampleService 6 | 7 | class ExampleLocalDataSource( 8 | private val exampleService: ExampleService, 9 | ) { 10 | suspend fun postExample(exampleRequestDto: ExampleRequest): ExampleResponse = 11 | exampleService.postExample(exampleRequestDto) 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/datasource/local/LocalDataSource.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.datasource.local 2 | 3 | import android.content.Context 4 | import android.content.SharedPreferences 5 | import androidx.security.crypto.EncryptedSharedPreferences 6 | import androidx.security.crypto.MasterKey 7 | 8 | object LocalDataSource { 9 | private lateinit var preferences: SharedPreferences 10 | 11 | fun init(context: Context) { 12 | val masterKeyAlias = MasterKey 13 | .Builder(context, MasterKey.DEFAULT_MASTER_KEY_ALIAS) 14 | .setKeyScheme(MasterKey.KeyScheme.AES256_GCM) 15 | .build() 16 | 17 | preferences = EncryptedSharedPreferences.create( 18 | context, 19 | "encrypted_settings", 20 | masterKeyAlias, 21 | EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV, 22 | EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM, 23 | ) 24 | } 25 | 26 | fun setAccessToken(input: String) { 27 | val editor: SharedPreferences.Editor = preferences.edit() 28 | editor.putString("ACCESS_TOKEN", input) 29 | editor.commit() 30 | } 31 | 32 | fun getAccessToken(): String { 33 | return preferences.getString("ACCESS_TOKEN", "").toString() 34 | } 35 | 36 | fun clear() { 37 | val editor: SharedPreferences.Editor = preferences.edit() 38 | editor.clear() 39 | editor.commit() 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/datasource/local/TokenDataSource.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.datasource.local 2 | 3 | import android.os.Build 4 | import androidx.annotation.RequiresApi 5 | import androidx.datastore.core.Serializer 6 | import com.puzzling.puzzlingaos.data.entity.Token 7 | import com.puzzling.puzzlingaos.data.service.CryptoService 8 | import kotlinx.serialization.json.Json 9 | import org.apache.commons.lang3.SerializationException 10 | import java.io.InputStream 11 | import java.io.OutputStream 12 | import javax.inject.Inject 13 | 14 | @RequiresApi(Build.VERSION_CODES.M) 15 | class TokenDataSource @Inject constructor(private val cryptoService: CryptoService) : Serializer { 16 | override val defaultValue: Token 17 | get() = Token() 18 | 19 | override suspend fun readFrom(input: InputStream): Token { 20 | val decryptedBytes = cryptoService.decrypt(input) 21 | return try { 22 | Json.decodeFromString( 23 | deserializer = Token.serializer(), 24 | string = decryptedBytes.decodeToString(), 25 | ) 26 | } catch (e: SerializationException) { 27 | e.printStackTrace() 28 | defaultValue 29 | } 30 | } 31 | 32 | override suspend fun writeTo(t: Token, output: OutputStream) { 33 | cryptoService.encrypt( 34 | bytes = Json.encodeToString( 35 | serializer = Token.serializer(), 36 | value = t, 37 | ).encodeToByteArray(), 38 | outputStream = output, 39 | ) 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/datasource/local/UserDataSource.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.datasource.local 2 | 3 | import androidx.datastore.core.Serializer 4 | import com.puzzling.puzzlingaos.data.entity.User 5 | import kotlinx.coroutines.Dispatchers 6 | import kotlinx.coroutines.withContext 7 | import kotlinx.serialization.json.Json 8 | import org.apache.commons.lang3.SerializationException 9 | import java.io.InputStream 10 | import java.io.OutputStream 11 | import javax.inject.Inject 12 | 13 | class UserDataSource @Inject constructor() : Serializer { 14 | override val defaultValue: User 15 | get() = User() 16 | 17 | override suspend fun readFrom(input: InputStream): User { 18 | return try { 19 | Json.decodeFromString( 20 | deserializer = User.serializer(), 21 | string = input.readBytes().decodeToString(), 22 | ) 23 | } catch (e: SerializationException) { 24 | e.printStackTrace() 25 | defaultValue 26 | } 27 | } 28 | 29 | override suspend fun writeTo(t: User, output: OutputStream) { 30 | withContext(Dispatchers.IO) { 31 | output.write( 32 | Json.encodeToString( 33 | serializer = User.serializer(), 34 | value = t, 35 | ).encodeToByteArray(), 36 | ) 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/datasource/remote/AuthDataSource.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.datasource.remote 2 | 3 | import com.puzzling.puzzlingaos.data.model.response.ResponseLoginDto 4 | import com.puzzling.puzzlingaos.data.model.response.ResponseTokenDto 5 | 6 | interface AuthDataSource { 7 | suspend fun login(socialPlatform: String): ResponseLoginDto 8 | 9 | suspend fun getToken(): ResponseTokenDto 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/datasource/remote/ExampleRemoteDataSource.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.datasource.remote 2 | 3 | import com.puzzling.puzzlingaos.data.model.request.ExampleRequest 4 | import com.puzzling.puzzlingaos.data.model.response.ExampleResponse 5 | import com.puzzling.puzzlingaos.data.service.ExampleService 6 | 7 | class ExampleRemoteDataSource( 8 | private val exampleService: ExampleService, 9 | ) { 10 | suspend fun postExample(exampleRequestDto: ExampleRequest): ExampleResponse = 11 | exampleService.postExample(exampleRequestDto) 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/datasource/remote/MyDashBoardDataSource.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.datasource.remote 2 | 3 | import com.puzzling.puzzlingaos.data.model.response.ResponseActionPlanDto 4 | import com.puzzling.puzzlingaos.data.model.response.ResponseMyPuzzleBoardDto 5 | import com.puzzling.puzzlingaos.data.model.response.ResponseProceedingProjectDto 6 | 7 | interface MyDashBoardDataSource { 8 | suspend fun getUserPuzzle( 9 | memberId: Int, 10 | projectId: Int, 11 | today: String, 12 | ): ResponseMyPuzzleBoardDto 13 | 14 | suspend fun getActionPlan( 15 | memberId: Int, 16 | projectId: Int, 17 | ): ResponseActionPlanDto 18 | 19 | suspend fun getProceedingProject( 20 | memberId: Int, 21 | ): ResponseProceedingProjectDto 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/datasource/remote/MyPageDataSource.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.datasource.remote 2 | 3 | import com.puzzling.puzzlingaos.data.model.response.ResponseDetailRetroDto 4 | import com.puzzling.puzzlingaos.data.model.response.ResponseMyRetroListDto 5 | 6 | interface MyPageDataSource { 7 | suspend fun getMyProjectReview( 8 | memberId: Int, 9 | projectId: Int, 10 | ): ResponseMyRetroListDto 11 | 12 | suspend fun getMyDetailReview( 13 | memberId: Int, 14 | projectId: Int, 15 | startDate: String, 16 | endDate: String, 17 | ): ResponseDetailRetroDto 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/datasource/remote/ProjectDataSource.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.datasource.remote 2 | 3 | import com.puzzling.puzzlingaos.data.model.request.RequestJoinProject 4 | import com.puzzling.puzzlingaos.data.model.request.RequestProjectRegisterDto 5 | import com.puzzling.puzzlingaos.data.model.response.ResponseInvitationCodeDto 6 | import com.puzzling.puzzlingaos.data.model.response.ResponseJoinProjectDto 7 | import com.puzzling.puzzlingaos.data.model.response.ResponseProjectRegisterDto 8 | import com.puzzling.puzzlingaos.data.model.response.ResponseProjectRetroWeekDto 9 | 10 | interface ProjectDataSource { 11 | suspend fun projectRegister( 12 | memberId: Int, 13 | request: RequestProjectRegisterDto, 14 | ): ResponseProjectRegisterDto 15 | 16 | suspend fun joinProject( 17 | memberId: Int, 18 | request: RequestJoinProject, 19 | ): ResponseJoinProjectDto 20 | 21 | suspend fun isValidInvitationCode( 22 | invitationCode: String, 23 | ): ResponseInvitationCodeDto 24 | 25 | suspend fun getProjectWeekCycle( 26 | projectId: Int, 27 | ): ResponseProjectRetroWeekDto 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/datasource/remote/TeamDashBoardDataSource.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.datasource.remote 2 | 3 | import com.puzzling.puzzlingaos.data.model.response.ResponseTeamPuzzleBoardDto 4 | import com.puzzling.puzzlingaos.data.model.response.ResponseTeamRankingDto 5 | import com.puzzling.puzzlingaos.data.model.response.ResponseTeamReviewListDto 6 | 7 | interface TeamDashBoardDataSource { 8 | 9 | suspend fun getTeamRetroList( 10 | projectId: Int, 11 | startDate: String, 12 | endDate: String, 13 | ): ResponseTeamReviewListDto 14 | 15 | suspend fun getTeamPuzzle( 16 | projectId: Int, 17 | today: String, 18 | ): ResponseTeamPuzzleBoardDto 19 | 20 | suspend fun getTeamRanking( 21 | projectId: Int, 22 | ): ResponseTeamRankingDto 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/datasource/remote/WriteReviewDataSource.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.datasource.remote 2 | 3 | import com.puzzling.puzzlingaos.data.model.request.RequestReview5FDto 4 | import com.puzzling.puzzlingaos.data.model.request.RequestReviewAARDto 5 | import com.puzzling.puzzlingaos.data.model.request.RequestReviewTILDto 6 | import com.puzzling.puzzlingaos.data.model.response.ResponsePreviousTemplateDto 7 | import com.puzzling.puzzlingaos.data.model.response.ResponseReviewTypeDto 8 | import com.puzzling.puzzlingaos.data.model.response.ResponseSaveReviewDto 9 | 10 | interface WriteReviewDataSource { 11 | suspend fun getReviewTemplate(): ResponseReviewTypeDto 12 | 13 | suspend fun uploadReviewTIL( 14 | memberId: Int, 15 | projectId: Int, 16 | requestReviewTIL: RequestReviewTILDto, 17 | // requestTIL: TIL, 18 | 19 | ): ResponseSaveReviewDto 20 | 21 | suspend fun uploadReview5F( 22 | memberId: Int, 23 | projectId: Int, 24 | requestReview5F: RequestReview5FDto, 25 | ): ResponseSaveReviewDto 26 | 27 | suspend fun uploadReviewAAR( 28 | memberId: Int, 29 | projectId: Int, 30 | requestReviewAAR: RequestReviewAARDto, 31 | ): ResponseSaveReviewDto 32 | 33 | suspend fun getPreviousTemplate( 34 | memberId: Int, 35 | projectId: Int, 36 | ): ResponsePreviousTemplateDto 37 | } 38 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/datasource/remote/impl/AuthDataSourceImpl.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.datasource.remote.impl 2 | 3 | import com.puzzling.puzzlingaos.data.datasource.remote.AuthDataSource 4 | import com.puzzling.puzzlingaos.data.model.request.RequestLoginDto 5 | import com.puzzling.puzzlingaos.data.model.response.ResponseLoginDto 6 | import com.puzzling.puzzlingaos.data.model.response.ResponseTokenDto 7 | import com.puzzling.puzzlingaos.data.service.AuthService 8 | import com.puzzling.puzzlingaos.data.service.ReIssueTokenService 9 | import javax.inject.Inject 10 | 11 | class AuthDataSourceImpl @Inject constructor( 12 | private val authService: AuthService, 13 | private val reIssueTokenService: ReIssueTokenService, 14 | ) : AuthDataSource { 15 | 16 | override suspend fun login(socialPlatform: String): ResponseLoginDto = 17 | authService.login(RequestLoginDto(socialPlatform)) 18 | 19 | override suspend fun getToken(): ResponseTokenDto = 20 | reIssueTokenService.getToken() 21 | } 22 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/datasource/remote/impl/MyDashBoardDataSourceImpl.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.datasource.remote.impl 2 | 3 | import com.puzzling.puzzlingaos.data.datasource.remote.MyDashBoardDataSource 4 | import com.puzzling.puzzlingaos.data.model.response.ResponseActionPlanDto 5 | import com.puzzling.puzzlingaos.data.model.response.ResponseMyPuzzleBoardDto 6 | import com.puzzling.puzzlingaos.data.model.response.ResponseProceedingProjectDto 7 | import com.puzzling.puzzlingaos.data.service.PersonalReviewService 8 | import javax.inject.Inject 9 | 10 | class MyDashBoardDataSourceImpl @Inject constructor( 11 | private val apiService: PersonalReviewService, 12 | ) : MyDashBoardDataSource { 13 | override suspend fun getUserPuzzle( 14 | memberId: Int, 15 | projectId: Int, 16 | today: String, 17 | ): ResponseMyPuzzleBoardDto = 18 | apiService.getMyPuzzleBoard(memberId, projectId, today) 19 | 20 | override suspend fun getActionPlan( 21 | memberId: Int, 22 | projectId: Int, 23 | ): ResponseActionPlanDto = apiService.getMyActionPlan(memberId, projectId) 24 | 25 | override suspend fun getProceedingProject(memberId: Int): ResponseProceedingProjectDto = 26 | apiService.getProceedingProjects(memberId) 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/datasource/remote/impl/MyPageDataSourceImpl.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.datasource.remote.impl 2 | 3 | import com.puzzling.puzzlingaos.data.datasource.remote.MyPageDataSource 4 | import com.puzzling.puzzlingaos.data.model.response.ResponseDetailRetroDto 5 | import com.puzzling.puzzlingaos.data.model.response.ResponseMyRetroListDto 6 | import com.puzzling.puzzlingaos.data.service.MyPageService 7 | import javax.inject.Inject 8 | 9 | class MyPageDataSourceImpl @Inject constructor(private val apiService: MyPageService) : 10 | MyPageDataSource { 11 | override suspend fun getMyProjectReview( 12 | memberId: Int, 13 | projectId: Int, 14 | ): ResponseMyRetroListDto = apiService.getMyProjectReview(memberId, projectId) 15 | 16 | override suspend fun getMyDetailReview( 17 | memberId: Int, 18 | projectId: Int, 19 | startDate: String, 20 | endDate: String, 21 | ): ResponseDetailRetroDto = 22 | apiService.getMyDetailReview(memberId, projectId, startDate, endDate) 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/datasource/remote/impl/TeamReviewDataSourceImpl.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.datasource.remote.impl 2 | 3 | import com.puzzling.puzzlingaos.data.datasource.remote.TeamDashBoardDataSource 4 | import com.puzzling.puzzlingaos.data.model.response.ResponseTeamPuzzleBoardDto 5 | import com.puzzling.puzzlingaos.data.model.response.ResponseTeamRankingDto 6 | import com.puzzling.puzzlingaos.data.model.response.ResponseTeamReviewListDto 7 | import com.puzzling.puzzlingaos.data.service.TeamReviewService 8 | import javax.inject.Inject 9 | 10 | class TeamReviewDataSourceImpl @Inject constructor( 11 | private val apiService: TeamReviewService, 12 | ) : TeamDashBoardDataSource { 13 | override suspend fun getTeamRetroList( 14 | projectId: Int, 15 | startDate: String, 16 | endDate: String, 17 | ): ResponseTeamReviewListDto = 18 | apiService.getTeamRetroList(projectId, startDate, endDate) 19 | 20 | override suspend fun getTeamPuzzle(projectId: Int, today: String): ResponseTeamPuzzleBoardDto = 21 | apiService.getTeamPuzzleBoard(projectId, today) 22 | 23 | override suspend fun getTeamRanking(projectId: Int): ResponseTeamRankingDto = 24 | apiService.getTeamRanking(projectId) 25 | } 26 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/entity/CurrentProject.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.entity 2 | 3 | import kotlinx.serialization.Serializable 4 | 5 | @Serializable 6 | data class CurrentProject( 7 | val projectId: Int, 8 | val projectName: String, 9 | ) 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/entity/Token.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.entity 2 | 3 | import kotlinx.serialization.Serializable 4 | 5 | @Serializable 6 | data class Token( 7 | val accessToken: String? = null, 8 | val refreshToken: String? = null, 9 | ) 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/entity/User.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.entity 2 | 3 | import kotlinx.serialization.Serializable 4 | 5 | @Serializable 6 | data class User( 7 | val memberId: Int? = null, 8 | val name: String? = null, 9 | ) 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/interceptor/ExampleInterceptor.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.interceptor 2 | 3 | // class ExampleInterceptor : Interceptor { 4 | // override fun intercept(chain: Interceptor.Chain): Response { 5 | // TODO("Not yet implemented") 6 | // } 7 | // } 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/model/request/ExampleRequest.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.model.request 2 | 3 | import kotlinx.serialization.Serializable 4 | 5 | @Serializable 6 | data class ExampleRequest( 7 | val id: Int, 8 | val title: String, 9 | val content: String, 10 | ) 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/model/request/RequestJoinProject.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.model.request 2 | 3 | import com.puzzling.puzzlingaos.domain.entity.JoinProjectInfo 4 | import kotlinx.serialization.SerialName 5 | import kotlinx.serialization.Serializable 6 | 7 | @Serializable 8 | data class RequestJoinProject( 9 | @SerialName("projectId") 10 | val projectId: Int, 11 | @SerialName("memberProjectNickname") 12 | val memberProjectNickname: String, 13 | @SerialName("memberProjectRole") 14 | val memberProjectRole: String, 15 | ) 16 | 17 | fun JoinProjectInfo.toRequestJoinProjectDto() = RequestJoinProject( 18 | projectId, 19 | memberProjectNickname, 20 | memberProjectRole, 21 | ) 22 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/model/request/RequestLoginDto.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.model.request 2 | 3 | import com.google.gson.annotations.SerializedName 4 | import kotlinx.serialization.Serializable 5 | 6 | @Serializable 7 | data class RequestLoginDto( 8 | @SerializedName("socialPlatform") 9 | val socialPlatform: String, 10 | ) 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/model/request/RequestProjectRegisterDto.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.model.request 2 | 3 | import kotlinx.serialization.SerialName 4 | import kotlinx.serialization.Serializable 5 | 6 | @Serializable 7 | data class RequestProjectRegisterDto( 8 | @SerialName("projectName") 9 | val projectName: String, 10 | @SerialName("projectIntro") 11 | val projectIntro: String, 12 | @SerialName("projectStartDate") 13 | val projectStartDate: String, 14 | @SerialName("memberProjectRole") 15 | val memberProjectRole: String, 16 | @SerialName("memberProjectNickname") 17 | val memberProjectNickname: String, 18 | @SerialName("reviewCycle") 19 | val reviewCycle: ArrayList, 20 | ) 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/model/request/RequestReview5FDto.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.model.request 2 | 3 | import kotlinx.serialization.SerialName 4 | import kotlinx.serialization.Serializable 5 | 6 | @Serializable 7 | data class RequestReview5FDto( 8 | @SerialName("reviewTemplateId") 9 | val reviewTemplateId: Int, 10 | @SerialName("fact") 11 | val fact: String, 12 | @SerialName("feeling") 13 | val feeling: String, 14 | @SerialName("finding") 15 | val finding: String, 16 | @SerialName("feedback") 17 | val feedback: String, 18 | @SerialName("actionPlan") 19 | val actionPlan: String, 20 | ) 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/model/request/RequestReviewAARDto.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.model.request 2 | 3 | import kotlinx.serialization.SerialName 4 | import kotlinx.serialization.Serializable 5 | 6 | @Serializable 7 | data class RequestReviewAARDto( 8 | @SerialName("reviewTemplateId") 9 | val reviewTemplateId: Int, 10 | @SerialName("initialGoal") 11 | val initialGoal: String, 12 | @SerialName("result") 13 | val result: String, 14 | @SerialName("difference") 15 | val difference: String, 16 | @SerialName("persistence") 17 | val persistence: String, 18 | @SerialName("actionPlan") 19 | val actionPlan: String, 20 | ) 21 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/model/request/RequestReviewTILDto.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.model.request 2 | 3 | import kotlinx.serialization.SerialName 4 | import kotlinx.serialization.Serializable 5 | 6 | @Serializable 7 | data class RequestReviewTILDto( 8 | @SerialName("reviewTemplateId") 9 | val reviewTemplateId: Int, 10 | @SerialName("liked") 11 | val liked: String, 12 | @SerialName("lacked") 13 | val lacked: String, 14 | @SerialName("actionPlan") 15 | val actionPlan: String, 16 | ) 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/model/response/BaseResponse.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.model.response 2 | 3 | import kotlinx.serialization.SerialName 4 | import kotlinx.serialization.Serializable 5 | 6 | @Serializable 7 | data class BaseResponse( 8 | @SerialName("status") 9 | val status: Int, 10 | @SerialName("success") 11 | val success: Boolean, 12 | @SerialName("message") 13 | val message: String, 14 | @SerialName("data") 15 | val data: T? = null, 16 | ) 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/model/response/ExampleResponse.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.model.response 2 | 3 | import kotlinx.serialization.Serializable 4 | 5 | @Serializable 6 | data class ExampleResponse( 7 | val id: Int, 8 | val title: String, 9 | val content: String, 10 | ) 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/model/response/ResponseActionPlanDto.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.model.response 2 | 3 | import com.puzzling.puzzlingaos.domain.entity.ActionPlan 4 | import kotlinx.serialization.SerialName 5 | import kotlinx.serialization.Serializable 6 | 7 | @Serializable 8 | data class ResponseActionPlanDto( 9 | @SerialName("status") 10 | val status: Int, 11 | @SerialName("success") 12 | val success: Boolean, 13 | @SerialName("message") 14 | val message: String, 15 | @SerialName("data") 16 | val data: List, 17 | ) { 18 | @Serializable 19 | data class ActionPlanData( 20 | @SerialName("actionPlanContent") 21 | val actionPlanContent: String, 22 | @SerialName("actionPlanDate") 23 | val actionPlanDate: String, 24 | ) 25 | 26 | fun toActionPlan() = data.map { plan -> 27 | ActionPlan( 28 | actionPlanContent = plan.actionPlanContent, 29 | actionPlanDate = plan.actionPlanDate, 30 | ) 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/model/response/ResponseInvitationCodeDto.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.model.response 2 | 3 | import com.puzzling.puzzlingaos.domain.entity.InvitationCode 4 | import kotlinx.serialization.SerialName 5 | import kotlinx.serialization.Serializable 6 | 7 | @Serializable 8 | data class ResponseInvitationCodeDto( 9 | @SerialName("status") 10 | val status: Int, 11 | @SerialName("success") 12 | val success: Boolean, 13 | @SerialName("message") 14 | val message: String, 15 | @SerialName("data") 16 | val data: InvitationCodeData, 17 | ) { 18 | @Serializable 19 | data class InvitationCodeData( 20 | @SerialName("projectId") 21 | val projectId: Int, 22 | @SerialName("projectName") 23 | val projectName: String, 24 | ) { 25 | fun toInvitationCode() = InvitationCode(projectId, projectName) 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/model/response/ResponseJoinProjectDto.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.model.response 2 | 3 | import kotlinx.serialization.SerialName 4 | import kotlinx.serialization.Serializable 5 | 6 | @Serializable 7 | data class ResponseJoinProjectDto( 8 | @SerialName("status") 9 | val status: Int, 10 | @SerialName("success") 11 | val success: Boolean, 12 | @SerialName("message") 13 | val message: String, 14 | ) 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/model/response/ResponseLoginDto.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.model.response 2 | 3 | import kotlinx.serialization.SerialName 4 | import kotlinx.serialization.Serializable 5 | 6 | @Serializable 7 | data class ResponseLoginDto( 8 | @SerialName("status") 9 | val status: Int, 10 | @SerialName("success") 11 | val success: Boolean, 12 | @SerialName("message") 13 | val message: String, 14 | @SerialName("data") 15 | val data: LoginData, 16 | 17 | ) { 18 | @Serializable 19 | data class LoginData( 20 | @SerialName("name") 21 | val name: String, 22 | @SerialName("memberId") 23 | val memberId: Int, 24 | @SerialName("projectId") 25 | val projectId: Int?, 26 | @SerialName("projectName") 27 | val projectName: String?, 28 | @SerialName("accessToken") 29 | val accessToken: String, 30 | @SerialName("refreshToken") 31 | val refreshToken: String, 32 | @SerialName("isNewUser") 33 | val isNewUser: Boolean, 34 | ) 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/model/response/ResponseMyPageProjectDto.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.model.response // ktlint-disable filename 2 | 3 | import kotlinx.serialization.SerialName 4 | import kotlinx.serialization.Serializable 5 | 6 | @Serializable 7 | data class ResponseMyPageProjectDto( 8 | @SerialName("projectName") 9 | val projectName: String, 10 | @SerialName("startDate") 11 | val startDate: String, 12 | @SerialName("projectId") 13 | val projectId: Int, 14 | ) 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/model/response/ResponseMyRetroListDto.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.model.response 2 | 3 | import com.puzzling.puzzlingaos.domain.entity.ProjectReview 4 | import kotlinx.serialization.SerialName 5 | import kotlinx.serialization.Serializable 6 | 7 | @Serializable 8 | data class ResponseMyRetroListDto( 9 | @SerialName("status") 10 | val status: Int, 11 | @SerialName("success") 12 | val success: Boolean, 13 | @SerialName("message") 14 | val message: String, 15 | @SerialName("data") 16 | val data: List, 17 | ) { 18 | @Serializable 19 | data class ReviewData( 20 | @SerialName("reviewId") 21 | val reviewId: Int, 22 | @SerialName("reviewDate") 23 | val reviewDate: String, 24 | @SerialName("contents") 25 | val contents: String, 26 | ) 27 | 28 | fun toProjectReview() = data.map { reviewData -> 29 | ProjectReview( 30 | reviewData.reviewId, 31 | reviewData.reviewDate, 32 | reviewData.contents, 33 | ) 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/model/response/ResponsePreviousTemplateDto.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.model.response 2 | 3 | import kotlinx.serialization.SerialName 4 | import kotlinx.serialization.Serializable 5 | 6 | @Serializable 7 | data class ResponsePreviousTemplateDto( 8 | @SerialName("status") 9 | val status: Int, 10 | @SerialName("success") 11 | val success: Boolean, 12 | @SerialName("message") 13 | val message: String, 14 | @SerialName("data") 15 | val data: PreviousTemplateIdData, 16 | ) { 17 | @Serializable 18 | data class PreviousTemplateIdData( 19 | @SerialName("previousTemplateId") 20 | val previousTemplateId: Int, 21 | ) 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/model/response/ResponseProceedingProjectDto.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.model.response 2 | 3 | import com.puzzling.puzzlingaos.domain.entity.Project 4 | import kotlinx.serialization.SerialName 5 | import kotlinx.serialization.Serializable 6 | 7 | @Serializable 8 | data class ResponseProceedingProjectDto( 9 | @SerialName("status") 10 | val status: Int, 11 | @SerialName("success") 12 | val success: Boolean, 13 | @SerialName("message") 14 | val message: String, 15 | @SerialName("data") 16 | val data: List, 17 | ) { 18 | @Serializable 19 | data class ProceedingProjectData( 20 | @SerialName("projectId") 21 | val projectId: Int, 22 | @SerialName("projectStartDate") 23 | val projectStartDate: String, 24 | @SerialName("projectName") 25 | val projectName: String, 26 | ) 27 | 28 | fun toProject() = data.map { project -> 29 | Project( 30 | projectId = project.projectId, 31 | projectStartDate = project.projectStartDate, 32 | projectName = project.projectName, 33 | 34 | ) 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/model/response/ResponseProjectRegisterDto.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.model.response 2 | 3 | import kotlinx.serialization.SerialName 4 | import kotlinx.serialization.Serializable 5 | 6 | @Serializable 7 | data class ResponseProjectRegisterDto( 8 | @SerialName("status") 9 | val status: Int, 10 | @SerialName("success") 11 | val success: Boolean, 12 | @SerialName("message") 13 | val message: String, 14 | @SerialName("data") 15 | val data: ProjectCode, 16 | ) { 17 | @Serializable 18 | data class ProjectCode( 19 | @SerialName("projectCode") 20 | val projectCode: String, 21 | @SerialName("projectId") 22 | val projectId: Int 23 | ) 24 | 25 | fun getProjectCode(): ProjectCode { 26 | return ProjectCode( 27 | projectCode = data.projectCode, 28 | projectId = data.projectId 29 | ) 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/model/response/ResponseProjectRetroWeekDto.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.model.response 2 | 3 | import com.puzzling.puzzlingaos.domain.entity.ReviewCycle 4 | import kotlinx.serialization.SerialName 5 | import kotlinx.serialization.Serializable 6 | 7 | @Serializable 8 | data class ResponseProjectRetroWeekDto( 9 | @SerialName("status") 10 | val status: Int, 11 | @SerialName("success") 12 | val success: Boolean, 13 | @SerialName("message") 14 | val message: String, 15 | @SerialName("data") 16 | val data: ProjectCycle, 17 | ) { 18 | @Serializable 19 | data class ProjectCycle( 20 | @SerialName("projectName") 21 | val projectName: String, 22 | @SerialName("projectReviewCycle") 23 | val projectReviewCycle: String, 24 | ) { 25 | fun toReviewCycle() = ReviewCycle(projectName, projectReviewCycle) 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/model/response/ResponseReviewTypeDto.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.model.response 2 | 3 | import com.puzzling.puzzlingaos.domain.entity.ReviewType 4 | import kotlinx.serialization.SerialName 5 | import kotlinx.serialization.Serializable 6 | 7 | @Serializable 8 | data class ResponseReviewTypeDto( 9 | @SerialName("status") 10 | val status: Int, 11 | @SerialName("success") 12 | val success: Boolean, 13 | @SerialName("message") 14 | val message: String, 15 | @SerialName("data") 16 | val data: List, 17 | ) { 18 | @Serializable 19 | data class ReviewTypeData( 20 | @SerialName("reviewTemplateId") 21 | val reviewTemplateId: Int, 22 | @SerialName("reviewTemplateName") 23 | val reviewTemplateName: String, 24 | @SerialName("reviewTemplateMeaning") 25 | val reviewTemplateMeaning: String, 26 | ) 27 | 28 | fun toReviewType() = data.map { type -> 29 | ReviewType( 30 | reviewTemplateId = type.reviewTemplateId, 31 | reviewTemplateName = type.reviewTemplateName, 32 | reviewTemplateMeaning = type.reviewTemplateMeaning, 33 | ) 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/model/response/ResponseSaveReviewDto.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.model.response 2 | 3 | import kotlinx.serialization.SerialName 4 | import kotlinx.serialization.Serializable 5 | 6 | @Serializable 7 | data class ResponseSaveReviewDto( 8 | @SerialName("status") 9 | val status: Int, 10 | @SerialName("success") 11 | val success: Boolean, 12 | @SerialName("message") 13 | val message: String, 14 | @SerialName("data") 15 | val data: ProjectData, 16 | ) { 17 | @Serializable 18 | data class ProjectData( 19 | @SerialName("projectName") 20 | val projectName: String, 21 | ) 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/model/response/ResponseTeamRankingDto.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.model.response 2 | 3 | import com.puzzling.puzzlingaos.domain.entity.TeamRanking 4 | import kotlinx.serialization.SerialName 5 | import kotlinx.serialization.Serializable 6 | 7 | @Serializable 8 | data class ResponseTeamRankingDto( 9 | @SerialName("status") 10 | val status: Int, 11 | @SerialName("success") 12 | val success: Boolean, 13 | @SerialName("message") 14 | val message: String, 15 | @SerialName("data") 16 | val data: List, 17 | ) { 18 | @Serializable 19 | data class TeamRankingData( 20 | @SerialName("memberRank") 21 | val memberRank: Int, 22 | @SerialName("memberNickname") 23 | val memberNickname: String, 24 | @SerialName("memberRole") 25 | val memberRole: String, 26 | @SerialName("memberPuzzleCount") 27 | val memberPuzzleCount: Int, 28 | ) 29 | 30 | fun toTeamRanking() = data.map { ranking -> 31 | TeamRanking( 32 | memberRank = ranking.memberRank, 33 | memberNickname = ranking.memberNickname, 34 | memberRole = ranking.memberRole, 35 | memberPuzzleCount = ranking.memberPuzzleCount, 36 | 37 | ) 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/model/response/ResponseTeamRetrospectListDto.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.model.response 2 | 3 | import com.puzzling.puzzlingaos.domain.entity.TeamReviewList 4 | import kotlinx.serialization.SerialName 5 | import kotlinx.serialization.Serializable 6 | 7 | @Serializable 8 | data class ResponseTeamRetrospectListDto( 9 | @SerialName("status") 10 | val status: Int, 11 | @SerialName("success") 12 | val success: Boolean, 13 | @SerialName("message") 14 | val message: String, 15 | @SerialName("date") 16 | val data: List? 17 | ) 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/model/response/ResponseTokenDto.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.model.response 2 | 3 | import com.puzzling.puzzlingaos.data.entity.Token 4 | import kotlinx.serialization.SerialName 5 | import kotlinx.serialization.Serializable 6 | 7 | @Serializable 8 | data class ResponseTokenDto( 9 | @SerialName("status") 10 | val status: Int, 11 | @SerialName("success") 12 | val success: Boolean, 13 | @SerialName("message") 14 | val message: String, 15 | @SerialName("date") 16 | val data: NewToken?, 17 | ) { 18 | @Serializable 19 | data class NewToken( 20 | @SerialName("accessToken") 21 | val accessToken: String, 22 | 23 | ) 24 | 25 | fun getToken() = Token(data?.accessToken) 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/repository/ExampleRepositoryImpl.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.repository 2 | 3 | import com.puzzling.puzzlingaos.data.datasource.remote.ExampleRemoteDataSource 4 | import com.puzzling.puzzlingaos.data.model.request.ExampleRequest 5 | import com.puzzling.puzzlingaos.data.model.response.ExampleResponse 6 | import com.puzzling.puzzlingaos.domain.repository.ExampleRepository 7 | 8 | class ExampleRepositoryImpl( 9 | private val exampleDataSource: ExampleRemoteDataSource, 10 | ) : ExampleRepository { 11 | override suspend fun postExample(exampleRequest: ExampleRequest): Result = 12 | kotlin.runCatching { exampleDataSource.postExample(exampleRequest) } 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/repository/MyBoardRepositoryImpl.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.repository 2 | 3 | import com.puzzling.puzzlingaos.data.datasource.remote.MyDashBoardDataSource 4 | import com.puzzling.puzzlingaos.data.model.response.ResponseMyPuzzleBoardDto 5 | import com.puzzling.puzzlingaos.domain.entity.ActionPlan 6 | import com.puzzling.puzzlingaos.domain.entity.Project 7 | import com.puzzling.puzzlingaos.domain.repository.MyBoardRepository 8 | import javax.inject.Inject 9 | 10 | class MyBoardRepositoryImpl @Inject constructor( 11 | private val myDashBoardDataSource: MyDashBoardDataSource, 12 | ) : MyBoardRepository { 13 | override suspend fun getUserPuzzle( 14 | memberId: Int, 15 | projectId: Int, 16 | today: String, 17 | ): Result = runCatching { 18 | myDashBoardDataSource.getUserPuzzle(memberId, projectId, today) 19 | } 20 | 21 | override suspend fun getActionPlan( 22 | memberId: Int, 23 | projectId: Int, 24 | ): Result> = runCatching { 25 | myDashBoardDataSource.getActionPlan(memberId, projectId).toActionPlan() 26 | } 27 | 28 | override suspend fun getProceedingProject(memberId: Int): Result> = 29 | runCatching { 30 | myDashBoardDataSource.getProceedingProject(memberId).toProject() 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/repository/MyPageRepositoryImpl.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.repository 2 | 3 | import com.puzzling.puzzlingaos.data.datasource.remote.MyPageDataSource 4 | import com.puzzling.puzzlingaos.domain.entity.DetailRetro 5 | import com.puzzling.puzzlingaos.domain.entity.ProjectReview 6 | import com.puzzling.puzzlingaos.domain.repository.MyPageRepository 7 | import javax.inject.Inject 8 | 9 | class MyPageRepositoryImpl @Inject constructor(private val myPageDataSource: MyPageDataSource) : 10 | MyPageRepository { 11 | override suspend fun getMyProjectReview( 12 | memberId: Int, 13 | projectId: Int, 14 | ): Result> = 15 | runCatching { 16 | myPageDataSource.getMyProjectReview(memberId, projectId).toProjectReview() 17 | } 18 | 19 | override suspend fun getMyDetailReview( 20 | memberId: Int, 21 | projectId: Int, 22 | startDate: String, 23 | endDate: String, 24 | ): Result> = runCatching { 25 | myPageDataSource.getMyDetailReview( 26 | memberId, 27 | projectId, 28 | startDate, 29 | endDate, 30 | ).data.toDetailRetro() 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/repository/TokenRepositoryImpl.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.repository 2 | 3 | import androidx.datastore.core.DataStore 4 | import com.puzzling.puzzlingaos.data.entity.Token 5 | import com.puzzling.puzzlingaos.domain.repository.TokenRepository 6 | import kotlinx.coroutines.flow.first 7 | import javax.inject.Inject 8 | 9 | class TokenRepositoryImpl @Inject constructor(private val dataStore: DataStore) : 10 | TokenRepository { 11 | override suspend fun setToken(accessToken: String) { 12 | dataStore.updateData { Token(accessToken) } 13 | } 14 | 15 | override suspend fun getToken(): Token = dataStore.data.first() 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/repository/UserRepositoryImpl.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.repository 2 | 3 | import androidx.datastore.core.DataStore 4 | import com.puzzling.puzzlingaos.data.entity.User 5 | import com.puzzling.puzzlingaos.domain.repository.UserRepository 6 | import kotlinx.coroutines.flow.first 7 | import javax.inject.Inject 8 | 9 | class UserRepositoryImpl @Inject constructor(private val dataStore: DataStore) : 10 | UserRepository { 11 | override suspend fun setUserInfo(userInfo: User) { 12 | dataStore.updateData { User(userInfo.memberId, userInfo.name) } 13 | } 14 | 15 | override suspend fun getUserInfo(): User = dataStore.data.first() 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/service/AuthService.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.service 2 | 3 | import com.puzzling.puzzlingaos.data.model.request.RequestLoginDto 4 | import com.puzzling.puzzlingaos.data.model.response.ResponseLoginDto 5 | import retrofit2.http.Body 6 | import retrofit2.http.POST 7 | 8 | interface AuthService { 9 | @POST("api/v1/auth") 10 | suspend fun login( 11 | @Body socialPlatform: RequestLoginDto, 12 | ): ResponseLoginDto 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/service/ExampleService.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.service 2 | 3 | import com.puzzling.puzzlingaos.data.model.request.ExampleRequest 4 | import com.puzzling.puzzlingaos.data.model.response.ExampleResponse 5 | import retrofit2.http.Body 6 | import retrofit2.http.POST 7 | 8 | interface ExampleService { 9 | // 예시 API 10 | @POST("api/example") 11 | suspend fun postExample( 12 | @Body request: ExampleRequest, 13 | ): ExampleResponse 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/service/MyPageService.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.service 2 | 3 | import com.puzzling.puzzlingaos.data.model.response.ResponseDetailRetroDto 4 | import com.puzzling.puzzlingaos.data.model.response.ResponseMyRetroListDto 5 | import retrofit2.http.GET 6 | import retrofit2.http.Path 7 | import retrofit2.http.Query 8 | 9 | interface MyPageService { 10 | @GET("api/v1/member/{memberId}/project/{projectId}/reviews") 11 | suspend fun getMyProjectReview( 12 | @Path("memberId") memberId: Int, 13 | @Path("projectId") projectId: Int, 14 | ): ResponseMyRetroListDto 15 | 16 | @GET("api/v1/member/{memberId}/project/{projectId}/review?") 17 | suspend fun getMyDetailReview( 18 | @Path("memberId") memberId: Int, 19 | @Path("projectId") projectId: Int, 20 | @Query("startDate") startDate: String, 21 | @Query("endDate") endDate: String, 22 | ): ResponseDetailRetroDto 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/service/PersonalReviewService.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.service 2 | 3 | import com.puzzling.puzzlingaos.data.model.response.ResponseActionPlanDto 4 | import com.puzzling.puzzlingaos.data.model.response.ResponseMyPuzzleBoardDto 5 | import com.puzzling.puzzlingaos.data.model.response.ResponseProceedingProjectDto 6 | import retrofit2.http.GET 7 | import retrofit2.http.Path 8 | import retrofit2.http.Query 9 | 10 | /* 11 | 개인 회고 12 | */ 13 | interface PersonalReviewService { 14 | /* 15 | [개인 대시보드 퍼즐 조회 API] 16 | ~/api/v1/member/1/project/3/puzzle?today=2023-07-05 17 | */ 18 | @GET("api/v1/member/{memberId}/project/{projectId}/puzzle?") 19 | suspend fun getMyPuzzleBoard( 20 | @Path("memberId") memberId: Int, 21 | @Path("projectId") projectId: Int, 22 | @Query("today") today: String, 23 | ): ResponseMyPuzzleBoardDto 24 | 25 | /* 26 | [ACTIONPLAN 내용 조회 API] 27 | ~/api/v1/member/{memberId}/project/{projectId}/actionplan 28 | */ 29 | @GET("api/v1/member/{memberId}/project/{projectId}/actionplan") 30 | suspend fun getMyActionPlan( 31 | @Path("memberId") memberId: Int, 32 | @Path("projectId") projectId: Int, 33 | ): ResponseActionPlanDto 34 | 35 | /* 36 | [진행 중인 프로젝트 리스트 조회 API] 37 | ~/api/v1/member/{memberId}/project/all 38 | */ 39 | @GET("api/v1/member/{memberId}/project/all") 40 | suspend fun getProceedingProjects( 41 | @Path("memberId") memberId: Int, 42 | ): ResponseProceedingProjectDto 43 | } 44 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/service/ReIssueTokenService.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.service 2 | 3 | import com.puzzling.puzzlingaos.data.model.response.ResponseTokenDto 4 | import retrofit2.http.GET 5 | 6 | interface ReIssueTokenService { 7 | @GET("api/v1/auth/token") 8 | suspend fun getToken(): ResponseTokenDto 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/data/service/TeamReviewService.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.data.service 2 | 3 | import com.puzzling.puzzlingaos.data.model.response.ResponseTeamPuzzleBoardDto 4 | import com.puzzling.puzzlingaos.data.model.response.ResponseTeamRankingDto 5 | import com.puzzling.puzzlingaos.data.model.response.ResponseTeamReviewListDto 6 | import retrofit2.http.GET 7 | import retrofit2.http.Path 8 | import retrofit2.http.Query 9 | 10 | interface TeamReviewService { 11 | 12 | // api/v1/project/{projectId}/team/review?startDate={}&endDate={} 13 | @GET("api/v1/project/{projectId}/team/review?") 14 | suspend fun getTeamRetroList( 15 | @Path("projectId") memberId: Int, 16 | @Query("startDate") startDate: String, 17 | @Query("endDate") endDate: String, 18 | ): ResponseTeamReviewListDto 19 | 20 | /* 21 | [팀 대시보드 퍼즐 조회 API] 22 | ~/api/v1/project/{projectId}/team/puzzle?today={} 23 | */ 24 | @GET("api/v1/project/{projectId}/team/puzzle?") 25 | suspend fun getTeamPuzzleBoard( 26 | @Path("projectId") projectId: Int, 27 | @Query("today") today: String, 28 | ): ResponseTeamPuzzleBoardDto 29 | 30 | /* 31 | [팀원 회고 랭킹 조회 API] 32 | ~/api/v1/project/{projectId}/rank 33 | */ 34 | 35 | @GET("api/v1/project/{projectId}/rank") 36 | suspend fun getTeamRanking( 37 | @Path("projectId") projectId: Int, 38 | ): ResponseTeamRankingDto 39 | } 40 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/di/Qualifier.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.di 2 | 3 | import javax.inject.Qualifier 4 | 5 | @Qualifier 6 | @Retention(AnnotationRetention.BINARY) 7 | annotation class PuzzlingRetrofit 8 | 9 | @Qualifier 10 | @Retention(AnnotationRetention.BINARY) 11 | annotation class ReIssueRetrofit -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/di/RepositoryModule.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.di 2 | 3 | import com.puzzling.puzzlingaos.data.repository.* 4 | import com.puzzling.puzzlingaos.domain.repository.* 5 | import dagger.Binds 6 | import dagger.Module 7 | import dagger.hilt.InstallIn 8 | import dagger.hilt.components.SingletonComponent 9 | import javax.inject.Singleton 10 | 11 | @Module 12 | @InstallIn(SingletonComponent::class) 13 | abstract class RepositoryModule { 14 | @Singleton 15 | @Binds 16 | abstract fun providesMyBoardRepository(repoImpl: MyBoardRepositoryImpl): MyBoardRepository 17 | 18 | @Singleton 19 | @Binds 20 | abstract fun providesMyPageRepository(repoImpl: MyPageRepositoryImpl): MyPageRepository 21 | 22 | @Singleton 23 | @Binds 24 | abstract fun providesProjectRepository(repoImpl: ProjectRepositoryImpl): ProjectRepository 25 | 26 | @Singleton 27 | @Binds 28 | abstract fun provideTeamRetroRepository(repoImpl: TeamDashBoardRepositoryImpl): TeamDashBoardRepository 29 | 30 | @Singleton 31 | @Binds 32 | abstract fun providesWriteReviewRepository(repoImpl: WriteReviewRepositoryImpl): WriteReviewRepository 33 | 34 | @Singleton 35 | @Binds 36 | abstract fun providesTokenRepository(repoImpl: TokenRepositoryImpl): TokenRepository 37 | 38 | @Singleton 39 | @Binds 40 | abstract fun providesAuthRepository(repoImpl: AuthRepositoryImpl): AuthRepository 41 | 42 | @Singleton 43 | @Binds 44 | abstract fun providesUserRepository(repoImpl: UserRepositoryImpl): UserRepository 45 | } 46 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/entity/AAR.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.entity 2 | 3 | data class AAR( 4 | val reviewTemplateId: Int, 5 | val initialGoal: String, 6 | val result: String, 7 | val difference: String, 8 | val persistence: String, 9 | val actionPlan: String, 10 | ) 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/entity/ActionPlan.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.entity 2 | 3 | data class ActionPlan( 4 | val actionPlanContent: String?, 5 | var actionPlanDate: String?, 6 | ) 7 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/entity/DetailRetro.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.entity 2 | 3 | data class DetailRetro( 4 | val reviewId: Int?, 5 | val reviewDay: String, 6 | val reviewDate: String, 7 | val reviewTemplateId: Int?, 8 | val content: List?, 9 | ) { 10 | data class Content( 11 | val title: String, 12 | val content: String, 13 | ) 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/entity/DummyData.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.entity 2 | 3 | data class DummyData( 4 | val email: String, 5 | val id: String, 6 | ) 7 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/entity/F5.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.entity 2 | 3 | data class F5( 4 | val reviewTemplateId: Int, 5 | val fact: String, 6 | val feeling: String, 7 | val finding: String, 8 | val feedback: String, 9 | val actionPlan: String, 10 | 11 | ) 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/entity/InvitationCode.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.entity 2 | 3 | data class InvitationCode( 4 | val projectId: Int, 5 | val projectName: String, 6 | ) 7 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/entity/JoinProjectInfo.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.entity 2 | 3 | data class JoinProjectInfo( 4 | val projectId: Int, 5 | val memberProjectNickname: String, 6 | val memberProjectRole: String, 7 | ) 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/entity/MyPuzzleBoard.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.entity 2 | 3 | data class MyPuzzleBoard( 4 | val reviewDate: String?, 5 | val reviewId: Int?, 6 | val puzzleAssetName: String, 7 | ) 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/entity/Project.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.entity 2 | 3 | data class Project( 4 | val projectId: Int, 5 | val projectStartDate: String, 6 | val projectName: String, 7 | ) 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/entity/ProjectReview.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.entity 2 | 3 | data class ProjectReview( 4 | val reviewId: Int, 5 | val reviewDate: String, 6 | val contents: String, 7 | ) 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/entity/Puzzle.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.entity 2 | 3 | data class Puzzle( 4 | val nickname: String, 5 | val puzzleCount: Int, 6 | ) 7 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/entity/PuzzleBoard.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.entity 2 | 3 | import androidx.annotation.DrawableRes 4 | 5 | data class PuzzleBoard( 6 | val date: String, 7 | @DrawableRes val boardImage: Int, 8 | ) 9 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/entity/RetrospectWeekCycle.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.entity 2 | 3 | data class RetrospectWeekCycle( 4 | var day: String 5 | ) 6 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/entity/ReviewCycle.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.entity 2 | 3 | data class ReviewCycle( 4 | val projectName: String, 5 | val projectReviewCycle: String, 6 | ) 7 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/entity/ReviewType.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.entity 2 | 3 | data class ReviewType( 4 | val reviewTemplateId: Int, 5 | val reviewTemplateName: String, 6 | val reviewTemplateMeaning: String, 7 | ) 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/entity/TIL.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.entity 2 | 3 | data class TIL( 4 | val reviewTemplateId: Int, 5 | val liked: String, 6 | val lacked: String, 7 | val actionPlan: String, 8 | ) 9 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/entity/TeamPuzzleBoard.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.entity 2 | 3 | data class TeamPuzzleBoard( 4 | val reviewDate: String?, 5 | val reviewMemberPercent: String, 6 | val puzzleAssetName: String, 7 | ) 8 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/entity/TeamRanking.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.entity 2 | 3 | data class TeamRanking( 4 | val memberRank: Int, 5 | val memberNickname: String, 6 | val memberRole: String, 7 | val memberPuzzleCount: Int, 8 | 9 | ) 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/entity/TeamReviewList.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.entity 2 | 3 | import kotlinx.serialization.SerialName 4 | import kotlinx.serialization.Serializable 5 | 6 | @Serializable 7 | data class TeamReviewList( 8 | @SerialName("reviewDay") 9 | val reviewDay: String, 10 | @SerialName("reviewDate") 11 | val reviewDate: String, 12 | @SerialName("reviewWriters") 13 | val reviewWriters: ArrayList?, 14 | @SerialName("nonReviewWriters") 15 | val nonReviewWriters: ArrayList?, 16 | 17 | ) { 18 | @Serializable 19 | data class ReviewWriterList( 20 | @SerialName("memberNickname") 21 | val memberNickname: String, 22 | @SerialName("memberRole") 23 | val memberRole: String, 24 | ) 25 | 26 | @Serializable 27 | data class NonReviewWriterList( 28 | @SerialName("memberNickname") 29 | val memberNickname: String, 30 | @SerialName("memberRole") 31 | val memberRole: String, 32 | ) 33 | } 34 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/entity/TeamReviewMultiList.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.entity 2 | 3 | data class TeamReviewMultiList( 4 | var type: Int, 5 | var reviewDay: String?, 6 | var reviewDate: String?, 7 | var memberNickname: String?, 8 | var memberRole: String? 9 | ) { 10 | 11 | companion object { 12 | const val DO_RETROSPECT_TEXT = 0 13 | const val DO_RETROSPECT_LIST = 1 14 | const val DONT_RETROSPECT_TEXT = 2 15 | const val DONT_RETROSPECT_LIST = 3 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/entity/ThisWeek.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.entity 2 | 3 | data class ThisWeek( 4 | var thisDay: String 5 | ) 6 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/repository/AuthRepository.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.repository 2 | 3 | import com.puzzling.puzzlingaos.data.entity.Token 4 | import com.puzzling.puzzlingaos.data.model.response.ResponseLoginDto 5 | 6 | interface AuthRepository { 7 | 8 | suspend fun login(socialPlatform: String): Result 9 | 10 | suspend fun getToken(): Result 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/repository/ExampleRepository.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.repository 2 | 3 | import com.puzzling.puzzlingaos.data.model.request.ExampleRequest 4 | import com.puzzling.puzzlingaos.data.model.response.ExampleResponse 5 | 6 | interface ExampleRepository { 7 | suspend fun postExample(exampleRequest: ExampleRequest): Result 8 | } 9 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/repository/MyBoardRepository.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.repository 2 | 3 | import com.puzzling.puzzlingaos.data.model.response.ResponseMyPuzzleBoardDto 4 | import com.puzzling.puzzlingaos.domain.entity.ActionPlan 5 | import com.puzzling.puzzlingaos.domain.entity.Project 6 | 7 | interface MyBoardRepository { 8 | suspend fun getUserPuzzle( 9 | memberId: Int, 10 | projectId: Int, 11 | today: String, 12 | ): Result 13 | 14 | suspend fun getActionPlan( 15 | memberId: Int, 16 | projectId: Int, 17 | ): Result> 18 | 19 | suspend fun getProceedingProject( 20 | memberId: Int, 21 | ): Result> 22 | } 23 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/repository/MyPageRepository.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.repository 2 | 3 | import com.puzzling.puzzlingaos.domain.entity.DetailRetro 4 | import com.puzzling.puzzlingaos.domain.entity.ProjectReview 5 | 6 | interface MyPageRepository { 7 | 8 | suspend fun getMyProjectReview( 9 | memberId: Int, 10 | projectId: Int, 11 | ): Result> 12 | 13 | suspend fun getMyDetailReview( 14 | memberId: Int, 15 | projectId: Int, 16 | startDate: String, 17 | endDate: String, 18 | ): Result> 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/repository/ProjectRepository.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.repository 2 | 3 | import com.puzzling.puzzlingaos.data.model.request.RequestProjectRegisterDto 4 | import com.puzzling.puzzlingaos.data.model.response.ResponseJoinProjectDto 5 | import com.puzzling.puzzlingaos.data.model.response.ResponseProjectRegisterDto 6 | import com.puzzling.puzzlingaos.domain.entity.InvitationCode 7 | import com.puzzling.puzzlingaos.domain.entity.JoinProjectInfo 8 | import com.puzzling.puzzlingaos.domain.entity.ReviewCycle 9 | 10 | interface ProjectRepository { 11 | 12 | // suspend fun register(): Result 13 | 14 | suspend fun projectRegister( 15 | memberId: Int, 16 | request: RequestProjectRegisterDto, 17 | ): Result 18 | 19 | suspend fun joinProject( 20 | memberId: Int, 21 | request: JoinProjectInfo, 22 | ): Result 23 | 24 | suspend fun isValidInvitationCode( 25 | invitationCode: String, 26 | ): Result 27 | 28 | suspend fun getProjectWeekCycle( 29 | projectId: Int, 30 | ): Result 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/repository/TeamDashBoardRepository.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.repository 2 | 3 | import com.puzzling.puzzlingaos.data.model.response.ResponseTeamPuzzleBoardDto 4 | import com.puzzling.puzzlingaos.data.model.response.ResponseTeamReviewListDto 5 | import com.puzzling.puzzlingaos.domain.entity.TeamPuzzleBoard 6 | import com.puzzling.puzzlingaos.domain.entity.TeamRanking 7 | 8 | interface TeamDashBoardRepository { 9 | 10 | suspend fun getTeamRetroList( 11 | projectId: Int, 12 | startDate: String, 13 | endDate: String, 14 | ): Result 15 | 16 | suspend fun getTeamPuzzle( 17 | projectId: Int, 18 | today: String, 19 | ): Result 20 | 21 | suspend fun getTeamPuzzleBoard( 22 | projectId: Int, 23 | today: String, 24 | ): Result> 25 | 26 | suspend fun getTeamRanking( 27 | projectId: Int, 28 | ): Result> 29 | } 30 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/repository/TokenRepository.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.repository 2 | 3 | import com.puzzling.puzzlingaos.data.entity.Token 4 | 5 | interface TokenRepository { 6 | suspend fun setToken(accessToken: String) 7 | 8 | suspend fun getToken(): Token 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/repository/UserRepository.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.repository 2 | 3 | import com.puzzling.puzzlingaos.data.entity.User 4 | 5 | interface UserRepository { 6 | 7 | suspend fun setUserInfo(userInfo: User) 8 | suspend fun getUserInfo(): User 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/repository/WriteReviewRepository.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.repository 2 | 3 | import com.puzzling.puzzlingaos.data.model.request.RequestReview5FDto 4 | import com.puzzling.puzzlingaos.data.model.request.RequestReviewAARDto 5 | import com.puzzling.puzzlingaos.data.model.request.RequestReviewTILDto 6 | import com.puzzling.puzzlingaos.data.model.response.ResponsePreviousTemplateDto 7 | import com.puzzling.puzzlingaos.data.model.response.ResponseSaveReviewDto 8 | import com.puzzling.puzzlingaos.domain.entity.ReviewType 9 | 10 | interface WriteReviewRepository { 11 | suspend fun getReviewType(): Result> 12 | 13 | suspend fun uploadTIL( 14 | memberId: Int, 15 | projectId: Int, 16 | requestReviewTIL: RequestReviewTILDto, 17 | ): Result 18 | 19 | suspend fun upload5F( 20 | memberId: Int, 21 | projectId: Int, 22 | requestReview5F: RequestReview5FDto, 23 | ): Result 24 | 25 | suspend fun uploadAAR( 26 | memberId: Int, 27 | projectId: Int, 28 | requestReviewAAR: RequestReviewAARDto, 29 | ): Result 30 | 31 | suspend fun getPreviousTemplate( 32 | memberId: Int, 33 | projectId: Int, 34 | ): Result 35 | } 36 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/usecase/onboarding/GetLocalTokenUseCase.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.usecase.onboarding 2 | 3 | import com.puzzling.puzzlingaos.domain.repository.TokenRepository 4 | import javax.inject.Inject 5 | import javax.inject.Singleton 6 | 7 | @Singleton 8 | class GetLocalTokenUseCase @Inject constructor( 9 | private val repository: TokenRepository, 10 | ) { 11 | 12 | suspend operator fun invoke() = repository.getToken() 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/usecase/onboarding/GetRemoteTokenUseCase.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.usecase.onboarding 2 | 3 | import com.puzzling.puzzlingaos.domain.repository.AuthRepository 4 | import javax.inject.Inject 5 | 6 | class GetRemoteTokenUseCase @Inject constructor(private val repository: AuthRepository) { 7 | 8 | suspend operator fun invoke() = repository.getToken() 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/usecase/onboarding/GetUserUseCase.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.usecase.onboarding 2 | 3 | import com.puzzling.puzzlingaos.domain.repository.UserRepository 4 | import javax.inject.Inject 5 | import javax.inject.Singleton 6 | 7 | @Singleton 8 | class GetUserUseCase @Inject constructor(private val repository: UserRepository) { 9 | 10 | suspend operator fun invoke() = repository.getUserInfo() 11 | } 12 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/usecase/onboarding/PostLocalTokenUseCase.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.usecase.onboarding 2 | 3 | import com.puzzling.puzzlingaos.domain.repository.TokenRepository 4 | import javax.inject.Inject 5 | import javax.inject.Singleton 6 | 7 | @Singleton 8 | class PostLocalTokenUseCase @Inject constructor(private val repository: TokenRepository) { 9 | suspend operator fun invoke(token: String) = repository.setToken(token) 10 | } 11 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/usecase/personaldashboard/GetActionPlanUseCase.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.usecase.personaldashboard 2 | 3 | import com.puzzling.puzzlingaos.domain.repository.MyBoardRepository 4 | import javax.inject.Inject 5 | 6 | class GetActionPlanUseCase @Inject constructor(private val repository: MyBoardRepository) { 7 | suspend operator fun invoke(memberId: Int, projectId: Int) = 8 | repository.getActionPlan(memberId, projectId) 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/usecase/personaldashboard/GetProceedingProjectUseCase.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.usecase.personaldashboard 2 | 3 | import com.puzzling.puzzlingaos.domain.repository.MyBoardRepository 4 | import javax.inject.Inject 5 | 6 | class GetProceedingProjectUseCase @Inject constructor(private val repository: MyBoardRepository) { 7 | suspend operator fun invoke(memberId: Int) = repository.getProceedingProject(memberId) 8 | } 9 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/usecase/personaldashboard/GetUserPuzzleUseCase.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.usecase.personaldashboard 2 | 3 | import com.puzzling.puzzlingaos.domain.repository.MyBoardRepository 4 | import javax.inject.Inject 5 | 6 | class GetUserPuzzleUseCase @Inject constructor(private val repository: MyBoardRepository) { 7 | suspend operator fun invoke(memberId: Int, projectId: Int, today: String) = 8 | repository.getUserPuzzle(memberId, projectId, today) 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/usecase/review/GetPreviosReviewUseCase.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.usecase.review 2 | 3 | import com.puzzling.puzzlingaos.domain.repository.WriteReviewRepository 4 | import javax.inject.Inject 5 | 6 | class GetPreviosReviewUseCase @Inject constructor(private val repository: WriteReviewRepository) { 7 | suspend operator fun invoke(memberId: Int, projectId: Int) = 8 | repository.getPreviousTemplate(memberId, projectId) 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/usecase/review/GetReviewTypeUseCase.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.usecase.review 2 | 3 | import com.puzzling.puzzlingaos.domain.repository.WriteReviewRepository 4 | import javax.inject.Inject 5 | 6 | class GetReviewTypeUseCase @Inject constructor(private val repository: WriteReviewRepository) { 7 | suspend operator fun invoke() = repository.getReviewType() 8 | } 9 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/usecase/review/Post5FReviewUseCase.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.usecase.review 2 | 3 | import com.puzzling.puzzlingaos.data.model.request.RequestReview5FDto 4 | import com.puzzling.puzzlingaos.domain.repository.WriteReviewRepository 5 | import javax.inject.Inject 6 | 7 | class Post5FReviewUseCase @Inject constructor(private val repository: WriteReviewRepository) { 8 | suspend operator fun invoke( 9 | memberId: Int, 10 | projectId: Int, 11 | requestReview5F: RequestReview5FDto, 12 | ) = repository.upload5F(memberId, projectId, requestReview5F) 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/usecase/review/PostAARReviewUseCase.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.usecase.review 2 | 3 | import com.puzzling.puzzlingaos.data.model.request.RequestReviewAARDto 4 | import com.puzzling.puzzlingaos.domain.repository.WriteReviewRepository 5 | import javax.inject.Inject 6 | 7 | class PostAARReviewUseCase @Inject constructor(private val repository: WriteReviewRepository) { 8 | suspend operator fun invoke( 9 | memberId: Int, 10 | projectId: Int, 11 | requestReviewAARDto: RequestReviewAARDto, 12 | ) = repository.uploadAAR(memberId, projectId, requestReviewAARDto) 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/usecase/review/PostTILReviewUseCase.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.usecase.review 2 | 3 | import com.puzzling.puzzlingaos.data.model.request.RequestReviewTILDto 4 | import com.puzzling.puzzlingaos.domain.repository.WriteReviewRepository 5 | import javax.inject.Inject 6 | 7 | class PostTILReviewUseCase @Inject constructor(private val repository: WriteReviewRepository) { 8 | suspend operator fun invoke( 9 | memberId: Int, 10 | projectId: Int, 11 | requestReviewTILDto: RequestReviewTILDto, 12 | ) = repository.uploadTIL(memberId, projectId, requestReviewTILDto) 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/usecase/teamdashboard/GetTeamPuzzleUseCase.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.usecase.teamdashboard 2 | 3 | import com.puzzling.puzzlingaos.domain.repository.TeamDashBoardRepository 4 | import javax.inject.Inject 5 | 6 | class GetTeamPuzzleUseCase @Inject constructor(private val repository: TeamDashBoardRepository) { 7 | suspend operator fun invoke(projectId: Int, today: String) = 8 | repository.getTeamPuzzle(projectId, today) 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/domain/usecase/teamdashboard/GetTeamRankingUseCase.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.domain.usecase.teamdashboard 2 | 3 | import com.puzzling.puzzlingaos.domain.repository.TeamDashBoardRepository 4 | import javax.inject.Inject 5 | 6 | class GetTeamRankingUseCase @Inject constructor(private val repository: TeamDashBoardRepository) { 7 | suspend operator fun invoke(projectId: Int) = 8 | repository.getTeamRanking(projectId) 9 | } 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/presentation/detailRetrospect/NoDetailRetroFragment.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.presentation.detailRetrospect 2 | 3 | import android.os.Bundle 4 | import android.view.View 5 | import com.puzzling.puzzlingaos.R 6 | import com.puzzling.puzzlingaos.base.BaseFragment 7 | import com.puzzling.puzzlingaos.databinding.FragmentNoDetailRetroBinding 8 | 9 | class NoDetailRetroFragment : 10 | BaseFragment(R.layout.fragment__no_detail_retro) { 11 | 12 | override fun onViewCreated(view: View, savedInstanceState: Bundle?) { 13 | super.onViewCreated(view, savedInstanceState) 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/presentation/detailRetrospect/WeekTapAdapter.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.presentation.detailRetrospect 2 | 3 | import androidx.fragment.app.Fragment 4 | import androidx.fragment.app.FragmentActivity 5 | import androidx.viewpager2.adapter.FragmentStateAdapter 6 | 7 | class WeekTapAdapter( 8 | fragmentActivity: FragmentActivity, 9 | private val num: MutableList, 10 | ) : FragmentStateAdapter(fragmentActivity) { 11 | override fun getItemCount(): Int { 12 | return 7 13 | } 14 | 15 | override fun createFragment(position: Int): Fragment { 16 | return when (num[position]) { 17 | 0 -> NoDetailRetroFragment() 18 | 1 -> NoDetailRetroFragment() 19 | 2 -> DetailRetroFragment(position) 20 | else -> DetailRetroFragment(position) 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/presentation/home/personal/puzzleboard/OnePuzzleBoardActivity.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.presentation.home.personal.puzzleboard 2 | 3 | import android.content.Intent 4 | import android.os.Bundle 5 | import androidx.activity.viewModels 6 | import com.puzzling.puzzlingaos.R 7 | import com.puzzling.puzzlingaos.base.BaseActivity 8 | import com.puzzling.puzzlingaos.databinding.ActivityOnePuzzleBoardBinding 9 | import com.puzzling.puzzlingaos.presentation.home.personal.PersonalDashboardViewModel 10 | import com.puzzling.puzzlingaos.presentation.main.MainActivity 11 | import dagger.hilt.android.AndroidEntryPoint 12 | 13 | @AndroidEntryPoint 14 | class OnePuzzleBoardActivity : 15 | BaseActivity(R.layout.activity_one_puzzle_board) { 16 | private val viewModel by viewModels() 17 | 18 | override fun onCreate(savedInstanceState: Bundle?) { 19 | super.onCreate(savedInstanceState) 20 | clickBackBtn() 21 | } 22 | 23 | private fun clickBackBtn() { 24 | binding.btnWriteBack.setOnClickListener { 25 | val intent = Intent(this, MainActivity::class.java) 26 | intent.putExtra("homeProjectId", viewModel.firstProjectId.value) 27 | startActivity(intent) 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/presentation/home/personal/puzzleboard/ThreePuzzleBoardActivity.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.presentation.home.personal.puzzleboard 2 | 3 | import android.content.Intent 4 | import android.os.Bundle 5 | import androidx.activity.viewModels 6 | import com.puzzling.puzzlingaos.R 7 | import com.puzzling.puzzlingaos.base.BaseActivity 8 | import com.puzzling.puzzlingaos.databinding.ActivityThreePuzzleBoardBinding 9 | import com.puzzling.puzzlingaos.presentation.home.personal.PersonalDashboardViewModel 10 | import com.puzzling.puzzlingaos.presentation.main.MainActivity 11 | import dagger.hilt.android.AndroidEntryPoint 12 | 13 | @AndroidEntryPoint 14 | class ThreePuzzleBoardActivity : 15 | BaseActivity(R.layout.activity_three_puzzle_board) { 16 | private val viewModel by viewModels() 17 | 18 | 19 | override fun onCreate(savedInstanceState: Bundle?) { 20 | super.onCreate(savedInstanceState) 21 | clickBackBtn() 22 | } 23 | 24 | private fun clickBackBtn() { 25 | binding.btnWriteBack.setOnClickListener { 26 | val intent = Intent(this, MainActivity::class.java) 27 | intent.putExtra("homeProjectId", viewModel.firstProjectId.value) 28 | startActivity(intent) 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/presentation/home/personal/puzzleboard/TwoPuzzleBoardActivity.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.presentation.home.personal.puzzleboard 2 | 3 | import android.content.Intent 4 | import android.os.Bundle 5 | import androidx.activity.viewModels 6 | import com.puzzling.puzzlingaos.R 7 | import com.puzzling.puzzlingaos.base.BaseActivity 8 | import com.puzzling.puzzlingaos.databinding.ActivityTwoPuzzleBoardBinding 9 | import com.puzzling.puzzlingaos.presentation.home.personal.PersonalDashboardViewModel 10 | import com.puzzling.puzzlingaos.presentation.main.MainActivity 11 | import dagger.hilt.android.AndroidEntryPoint 12 | 13 | @AndroidEntryPoint 14 | class TwoPuzzleBoardActivity : 15 | BaseActivity(R.layout.activity_two_puzzle_board) { 16 | private val viewModel by viewModels() 17 | 18 | override fun onCreate(savedInstanceState: Bundle?) { 19 | super.onCreate(savedInstanceState) 20 | clickBackBtn() 21 | } 22 | 23 | private fun clickBackBtn() { 24 | binding.btnWriteBack.setOnClickListener { 25 | val intent = Intent(this, MainActivity::class.java) 26 | intent.putExtra("homeProjectId", viewModel.firstProjectId.value) 27 | startActivity(intent) 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/presentation/home/team/puzzleboard/OneTeamBoardActivity.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.presentation.home.team.puzzleboard 2 | 3 | import android.content.Intent 4 | import android.os.Bundle 5 | import androidx.activity.viewModels 6 | import com.puzzling.puzzlingaos.R 7 | import com.puzzling.puzzlingaos.base.BaseActivity 8 | import com.puzzling.puzzlingaos.databinding.ActivityOneTeamBoardBinding 9 | import com.puzzling.puzzlingaos.presentation.home.team.TeamDashBoardViewModel 10 | import com.puzzling.puzzlingaos.presentation.main.MainActivity 11 | import dagger.hilt.android.AndroidEntryPoint 12 | 13 | @AndroidEntryPoint 14 | class OneTeamBoardActivity : 15 | BaseActivity(R.layout.activity_one_team_board) { 16 | private val viewModel by viewModels() 17 | 18 | override fun onCreate(savedInstanceState: Bundle?) { 19 | super.onCreate(savedInstanceState) 20 | clickBackBtn() 21 | } 22 | 23 | private fun clickBackBtn() { 24 | binding.btnWriteBack.setOnClickListener { 25 | val intent = Intent(this, MainActivity::class.java) 26 | intent.putExtra("homeProjectId", viewModel.firstProjectId.value) 27 | startActivity(intent) 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/presentation/home/team/puzzleboard/ThreeTeamBoardActivity.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.presentation.home.team.puzzleboard 2 | 3 | import android.content.Intent 4 | import android.os.Bundle 5 | import androidx.activity.viewModels 6 | import com.puzzling.puzzlingaos.R 7 | import com.puzzling.puzzlingaos.base.BaseActivity 8 | import com.puzzling.puzzlingaos.databinding.ActivityThreeTeamBoardBinding 9 | import com.puzzling.puzzlingaos.presentation.home.team.TeamDashBoardViewModel 10 | import com.puzzling.puzzlingaos.presentation.main.MainActivity 11 | import dagger.hilt.android.AndroidEntryPoint 12 | 13 | @AndroidEntryPoint 14 | class ThreeTeamBoardActivity : 15 | BaseActivity(R.layout.activity_three_team_board) { 16 | private val viewModel by viewModels() 17 | 18 | override fun onCreate(savedInstanceState: Bundle?) { 19 | super.onCreate(savedInstanceState) 20 | clickBackBtn() 21 | } 22 | 23 | private fun clickBackBtn() { 24 | binding.btnWriteBack.setOnClickListener { 25 | val intent = Intent(this, MainActivity::class.java) 26 | intent.putExtra("homeProjectId", viewModel.firstProjectId.value) 27 | startActivity(intent) 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/presentation/home/team/puzzleboard/TwoTeamBoardActivity.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.presentation.home.team.puzzleboard 2 | 3 | import android.content.Intent 4 | import android.os.Bundle 5 | import androidx.activity.viewModels 6 | import com.puzzling.puzzlingaos.R 7 | import com.puzzling.puzzlingaos.base.BaseActivity 8 | import com.puzzling.puzzlingaos.databinding.ActivityTwoTeamBoardBinding 9 | import com.puzzling.puzzlingaos.presentation.home.team.TeamDashBoardViewModel 10 | import com.puzzling.puzzlingaos.presentation.main.MainActivity 11 | import dagger.hilt.android.AndroidEntryPoint 12 | 13 | @AndroidEntryPoint 14 | class TwoTeamBoardActivity : 15 | BaseActivity(R.layout.activity_two_team_board) { 16 | private val viewModel by viewModels() 17 | 18 | override fun onCreate(savedInstanceState: Bundle?) { 19 | super.onCreate(savedInstanceState) 20 | clickBackBtn() 21 | } 22 | 23 | private fun clickBackBtn() { 24 | binding.btnWriteBack.setOnClickListener { 25 | val intent = Intent(this, MainActivity::class.java) 26 | intent.putExtra("homeProjectId", viewModel.firstProjectId.value) 27 | startActivity(intent) 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/presentation/mypage/adapter/MyProjectBottomAdapter.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.presentation.mypage.adapter 2 | 3 | import android.view.LayoutInflater 4 | import android.view.ViewGroup 5 | import androidx.recyclerview.widget.RecyclerView 6 | import com.puzzling.puzzlingaos.databinding.ItemBottomLogoutBinding 7 | 8 | class MyProjectBottomAdapter() : 9 | RecyclerView.Adapter() { 10 | 11 | override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyProjectBottomViewHolder { 12 | val binding: ItemBottomLogoutBinding = 13 | ItemBottomLogoutBinding.inflate(LayoutInflater.from(parent.context), parent, false) 14 | return MyProjectBottomViewHolder(binding) 15 | } 16 | 17 | override fun getItemCount(): Int { 18 | return 1 19 | } 20 | 21 | override fun onBindViewHolder(holder: MyProjectBottomViewHolder, position: Int) { 22 | } 23 | 24 | class MyProjectBottomViewHolder(private val binding: ItemBottomLogoutBinding) : 25 | RecyclerView.ViewHolder(binding.root) 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/presentation/team/currentSituation/NoItemTeamRetrospectListFragment.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.presentation.team.currentSituation 2 | 3 | import android.os.Bundle 4 | import android.view.View 5 | import com.puzzling.puzzlingaos.R 6 | import com.puzzling.puzzlingaos.base.BaseFragment 7 | import com.puzzling.puzzlingaos.databinding.FragmentNoItemTeamRetrospectListBinding 8 | import dagger.hilt.android.AndroidEntryPoint 9 | 10 | @AndroidEntryPoint 11 | class NoItemTeamRetrospectListFragment : BaseFragment(R.layout.fragment_no_item_team_retrospect_list){ 12 | override fun onViewCreated(view: View, savedInstanceState: Bundle?) { 13 | super.onViewCreated(view, savedInstanceState) 14 | } 15 | } -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/presentation/team/currentSituation/RetrospectThisWeekAdapter.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.presentation.team.currentSituation 2 | 3 | import androidx.fragment.app.Fragment 4 | import androidx.fragment.app.FragmentActivity 5 | import androidx.viewpager2.adapter.FragmentStateAdapter 6 | 7 | class RetrospectThisWeekAdapter( 8 | fragment: FragmentActivity, 9 | private val num: MutableList, 10 | ) : FragmentStateAdapter(fragment) { 11 | override fun getItemCount(): Int { 12 | return 7 13 | } 14 | 15 | override fun createFragment(position: Int): Fragment { 16 | return when (num[position]) { 17 | 0 -> NoItemTeamRetrospectListFragment() 18 | 1 -> ItemTeamRetrospectListFragment(position) 19 | 2 -> ItemTeamRetrospectListFragment(position) 20 | else -> ItemTeamRetrospectListFragment(position) 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/presentation/writeRetrospective/ChooseReviewFragment.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.presentation.writeRetrospective 2 | 3 | import android.os.Bundle 4 | import android.view.View 5 | import androidx.fragment.app.activityViewModels 6 | import com.puzzling.puzzlingaos.R 7 | import com.puzzling.puzzlingaos.base.BottomSheetDialogFragment 8 | import com.puzzling.puzzlingaos.databinding.FragmentChooseReviewBinding 9 | import dagger.hilt.android.AndroidEntryPoint 10 | 11 | @AndroidEntryPoint 12 | class ChooseReviewFragment : 13 | BottomSheetDialogFragment(R.layout.fragment_choose_review) { 14 | private val viewModel by activityViewModels() 15 | 16 | override fun onViewCreated(view: View, savedInstanceState: Bundle?) { 17 | super.onViewCreated(view, savedInstanceState) 18 | binding.vm = viewModel 19 | clickItemButton() 20 | } 21 | 22 | private fun clickItemButton() { 23 | with(binding) { 24 | clChooseReviewFirst.setOnClickListener { 25 | clickReviewItem("TIL") 26 | } 27 | clChooseReviewSecond.setOnClickListener { 28 | clickReviewItem("5F") 29 | } 30 | clChooseReviewThird.setOnClickListener { 31 | clickReviewItem("AAR") 32 | } 33 | } 34 | } 35 | 36 | private fun clickReviewItem(reviewType: String) { 37 | viewModel.setSelectedReviewTypeText(reviewType) 38 | dismiss() 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/util/Constants.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.util // ktlint-disable filename 2 | 3 | object UserInfo { 4 | const val GET_MEMBER_ID = 1 5 | // const val GET_PROJECT_ID = 1 6 | 7 | const val POST_MEMBER_ID = 1 8 | // const val POST_PROJECT_ID = 2 9 | 10 | const val MEMBER_ID = 1 11 | const val PROJECT_ID = 1 12 | const val TODAY = "2023-07-22" 13 | } 14 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/util/CustomSnackbar.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.util 2 | 3 | import android.content.res.Resources 4 | import android.view.LayoutInflater 5 | import android.view.View 6 | import androidx.core.content.ContextCompat 7 | import com.google.android.material.snackbar.Snackbar 8 | import com.google.android.material.snackbar.Snackbar.SnackbarLayout 9 | import com.puzzling.puzzlingaos.databinding.SnackbarCustomBinding 10 | 11 | object CustomSnackbar { 12 | private var currentSnackbar: Snackbar? = null 13 | fun makeSnackbar(view: View, message: String) { 14 | val inflater = LayoutInflater.from(view.context) 15 | val binding = SnackbarCustomBinding.inflate(inflater, null, false) 16 | 17 | binding.tvSnackbar.text = message 18 | 19 | val snackbar = Snackbar.make(view, message, Snackbar.LENGTH_SHORT) 20 | val snackbarLayout = snackbar.view as SnackbarLayout 21 | 22 | with(snackbarLayout) { 23 | removeAllViews() 24 | setPadding(10, 0, 10, -1000) 25 | setBackgroundColor(ContextCompat.getColor(context, android.R.color.transparent)) 26 | addView(binding.root) 27 | } 28 | currentSnackbar = snackbar 29 | 30 | snackbar.show() 31 | } 32 | 33 | fun dismissSnackbar() { 34 | currentSnackbar?.dismiss() 35 | currentSnackbar = null 36 | } 37 | 38 | private fun Int.toPx(): Int = (this * Resources.getSystem().displayMetrics.density).toInt() 39 | } 40 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/util/DividerItemDecoration.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.util 2 | 3 | import android.graphics.Canvas 4 | import android.graphics.Paint 5 | import androidx.core.content.ContextCompat 6 | import androidx.recyclerview.widget.RecyclerView 7 | 8 | class DividerItemDecoration(private val colorIndex: Int, private val margin: Int) : 9 | RecyclerView.ItemDecoration() { 10 | override fun onDraw(c: Canvas, parent: RecyclerView, state: RecyclerView.State) { 11 | super.onDraw(c, parent, state) 12 | 13 | val paint = Paint().apply { 14 | color = ContextCompat.getColor(parent.context, colorIndex) 15 | } 16 | val height = 1.dp 17 | 18 | for (i in 0 until parent.childCount) { 19 | val child = parent.getChildAt(i) 20 | if (i != parent.childCount - 1) { 21 | c.drawRect( 22 | child.left.toFloat() + margin, 23 | child.bottom.toFloat(), 24 | child.right.toFloat() - margin, 25 | child.bottom.toFloat() + height, 26 | paint, 27 | ) 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/util/GetClipBoardManger.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.util 2 | 3 | import android.content.ClipboardManager 4 | import android.content.Context 5 | 6 | fun Context.getClipboardManager(): ClipboardManager { 7 | return getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager 8 | } 9 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/util/IntentExt.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.util 2 | 3 | import android.content.Intent 4 | import android.os.Build.VERSION.SDK_INT 5 | import android.os.Build.VERSION_CODES.TIRAMISU 6 | import android.os.Parcelable 7 | 8 | /** Retrieve extended data from the intent and support app compatibility */ 9 | inline fun Intent.getCompatibleParcelableExtra(key: String): T? = when { 10 | SDK_INT >= TIRAMISU -> getParcelableExtra(key, T::class.java) 11 | else -> getParcelableExtra(key) as? T 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/util/ItemDiffCallback.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.util 2 | 3 | import androidx.recyclerview.widget.DiffUtil 4 | 5 | class ItemDiffCallback( 6 | val onItemsTheSame: (T, T) -> Boolean, 7 | val onContentsTheSame: (T, T) -> Boolean, 8 | ) : DiffUtil.ItemCallback() { 9 | override fun areItemsTheSame(oldItem: T, newItem: T): Boolean = onItemsTheSame(oldItem, newItem) 10 | override fun areContentsTheSame(oldItem: T, newItem: T): Boolean = 11 | onContentsTheSame(oldItem, newItem) 12 | } 13 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/util/JsonObject.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.util 2 | 3 | fun String?.isJsonObject(): Boolean = this?.startsWith("{") == true && this.endsWith("}") 4 | fun String?.isJsonArray(): Boolean = this?.startsWith("[") == true && this.endsWith("]") 5 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/util/Pixel.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.util 2 | 3 | import android.content.res.Resources 4 | 5 | val Int.dp 6 | get() = this * Resources.getSystem().displayMetrics.density.toInt() 7 | 8 | val Int.px 9 | get() = (this * Resources.getSystem().displayMetrics.density).toInt() 10 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/util/ViewExt.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.util 2 | 3 | import android.content.Context 4 | import android.graphics.drawable.Drawable 5 | import android.view.View 6 | import android.view.ViewGroup 7 | import android.widget.ImageView 8 | import android.widget.Toast 9 | import coil.load 10 | import coil.transform.RoundedCornersTransformation 11 | import com.google.android.material.snackbar.Snackbar 12 | import com.puzzling.puzzlingaos.R 13 | import com.puzzling.puzzlingaos.databinding.SnackbarCustomBinding 14 | 15 | fun ImageView.loadImage(image: Drawable?) { 16 | load(image) { 17 | placeholder(R.drawable.ic_puzzling_logo) 18 | .transformations(RoundedCornersTransformation(20f, 20f, 20f, 20f)) 19 | .error(R.drawable.ic_launcher_background) 20 | } 21 | } 22 | 23 | fun Context.showCustomSnackBar(message: String, container: View?) { 24 | val binding = container?.let { SnackbarCustomBinding.bind(it) } 25 | val snackBar = container?.let { Snackbar.make(it, "", Snackbar.LENGTH_LONG) } 26 | snackBar?.apply { 27 | (view as ViewGroup).addView(binding?.root) 28 | binding?.tvSnackbar!!.text = message 29 | show() 30 | } 31 | } 32 | 33 | fun View.showToast(message: String) { 34 | Toast.makeText(this.context, message, Toast.LENGTH_SHORT) 35 | .show() 36 | } 37 | -------------------------------------------------------------------------------- /app/src/main/java/com/puzzling/puzzlingaos/util/ViewModelFactory.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos.util 2 | 3 | import android.content.Context 4 | import androidx.lifecycle.ViewModel 5 | import androidx.lifecycle.ViewModelProvider 6 | 7 | class ViewModelFactory(private val context: Context) : ViewModelProvider.Factory { 8 | override fun create(modelClass: Class): T { 9 | return when { 10 | // modelClass.isAssignableFrom(InvitationCodeViewModel::class.java) -> { 11 | // InvitationCodeViewModel(context) as T 12 | // } 13 | 14 | // modelClass.isAssignableFrom(LoginViewModel::class.java) -> { 15 | // val repository = KakaoAuthService(context) 16 | // LoginViewModel(repository) as T 17 | // } 18 | 19 | else -> { 20 | throw java.lang.IllegalArgumentException("Unknown ViewModel") 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_button_selected_ripple.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_register_date_background.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_register_daycycle.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_register_edit_background.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_register_registerbutton_deselect.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/bg_register_registerbutton_select.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/circle_blue100_fill_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/circle_blue400_fill.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 12 | 13 | 14 | 15 | 16 | 17 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/circle_blue400_fill_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/circle_gray300_line.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 8 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_back.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_cancel.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_check.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_down.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_home.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_join_puzzle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/ic_join_puzzle.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_login_kakao.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/ic_login_kakao.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_monday.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_my_toolbar_alarm.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_my_toolbar_back.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_mypage.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_new_puzzle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/ic_new_puzzle.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_next.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_next_blue.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_no_detail_retro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/ic_no_detail_retro.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_notification.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_plus.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 16 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_puzzling_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/ic_puzzling_logo.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_register_day_dropdown.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_register_toolbar_close.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_right.xml: -------------------------------------------------------------------------------- 1 | 6 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_selected_project.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_thuesday.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_wednesday.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/img_dialog_puzzle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/img_dialog_puzzle.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/img_dialog_puzzle1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/img_dialog_puzzle1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/img_home_puzzle_btn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/img_home_puzzle_btn.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/img_puzzle1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/img_puzzle1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/img_puzzle10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/img_puzzle10.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/img_puzzle12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/img_puzzle12.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/img_puzzle13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/img_puzzle13.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/img_puzzle14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/img_puzzle14.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/img_puzzle15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/img_puzzle15.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/img_puzzle2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/img_puzzle2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/img_puzzle3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/img_puzzle3.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/img_puzzle4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/img_puzzle4.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/img_puzzle5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/img_puzzle5.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/img_puzzle6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/img_puzzle6.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/img_puzzle7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/img_puzzle7.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/img_puzzle8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/img_puzzle8.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/img_puzzle9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/img_puzzle9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlea1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlea1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlea10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlea10.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlea11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlea11.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlea12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlea12.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlea13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlea13.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlea14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlea14.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlea15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlea15.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlea2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlea2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlea3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlea3.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlea4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlea4.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlea5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlea5.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlea6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlea6.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlea7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlea7.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlea8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlea8.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlea9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlea9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzleb1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzleb1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzleb10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzleb10.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzleb11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzleb11.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzleb12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzleb12.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzleb13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzleb13.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzleb14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzleb14.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzleb15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzleb15.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzleb2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzleb2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzleb3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzleb3.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzleb4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzleb4.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzleb5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzleb5.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzleb6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzleb6.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzleb7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzleb7.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzleb8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzleb8.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzleb9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzleb9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlec1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlec1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlec10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlec10.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlec11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlec11.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlec12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlec12.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlec13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlec13.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlec14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlec14.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlec15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlec15.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlec2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlec2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlec3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlec3.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlec4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlec4.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlec5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlec5.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlec6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlec6.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlec7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlec7.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlec8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlec8.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlec9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlec9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzled1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzled1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzled10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzled10.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzled11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzled11.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzled12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzled12.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzled13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzled13.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzled14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzled14.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzled15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzled15.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzled2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzled2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzled3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzled3.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzled4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzled4.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzled5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzled5.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzled6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzled6.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzled7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzled7.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzled8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzled8.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzled9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzled9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlee1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlee1.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlee10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlee10.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlee11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlee11.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlee12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlee12.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlee13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlee13.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlee14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlee14.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlee15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlee15.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlee2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlee2.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlee3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlee3.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlee4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlee4.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlee5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlee5.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlee6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlee6.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlee7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlee7.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlee8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlee8.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/puzzlee9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/drawable/puzzlee9.png -------------------------------------------------------------------------------- /app/src/main/res/drawable/rect_bg50_fill_radius_16.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rect_blue100_fill_16.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rect_blue200_line_16.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rect_blue400_fill_16.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rect_blue400_fill_radius_16.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rect_blue50_fill_bottom16.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rect_blue_fill_16.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rect_blue_fill_radius_16_gradient.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rect_gray050_fill_16.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rect_gray200_line_0.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rect_gray300_fill.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rect_gray400_fill_16.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rect_lightblue_fill_radius_14_gradient.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rect_red200_line_16.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rect_red_line_16.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rect_white_fill_16.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rect_white_fill_radius_16.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/rect_white_fill_top16.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/round_blue100_fill.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/round_blue400_fill.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/round_white_fill.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/sel_detailretro_tablayer_retorweek_textcolor.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/sel_detailretro_tablayer_retroweek_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/sel_detailretro_tablayer_textcolor.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/sel_invitation_background_edittext.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/sel_register_drawable_custom_edittext.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/sel_register_drawable_enabled_btn.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_bottom_navigation.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/selector_custom_edittext.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 26 | 27 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_bottomnavi_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/shape_tablayout_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 10 | 11 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/tab_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/tab_background_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/tab_unselected_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/font/notosans_black.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/font/notosans_black.otf -------------------------------------------------------------------------------- /app/src/main/res/font/notosans_bold.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/font/notosans_bold.otf -------------------------------------------------------------------------------- /app/src/main/res/font/notosans_regular.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/font/notosans_regular.otf -------------------------------------------------------------------------------- /app/src/main/res/font/roboto_black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/font/roboto_black.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/roboto_bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/font/roboto_bold.ttf -------------------------------------------------------------------------------- /app/src/main/res/font/roboto_regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/font/roboto_regular.ttf -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment__no_detail_retro.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 12 | 13 | 23 | 24 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_detail_retro.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 13 | 14 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/layout/fragment_item_team_retrospect_list.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 10 | 11 | 12 | 16 | 17 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_bottom_logout.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 12 | 13 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_mypage_nickname.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 12 | 13 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_myretro_all_projects.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 14 | 15 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_register_retrospect_week_cycle.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 22 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_team_do_retrospect_text.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_team_dont_retrospect_text.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 19 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/layout/item_team_this_week.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/layout/tab_text_color_blue100.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/layout/tab_title.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/layout/tab_title_text_black.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 20 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/menu/main_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_puzzling.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_puzzling_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v33/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/mipmap-hdpi/ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_puzzling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/mipmap-hdpi/ic_puzzling.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_puzzling_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/mipmap-hdpi/ic_puzzling_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_puzzling_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/mipmap-hdpi/ic_puzzling_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/mipmap-mdpi/ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_puzzling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/mipmap-mdpi/ic_puzzling.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_puzzling_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/mipmap-mdpi/ic_puzzling_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_puzzling_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/mipmap-mdpi/ic_puzzling_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/mipmap-xhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_puzzling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/mipmap-xhdpi/ic_puzzling.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_puzzling_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/mipmap-xhdpi/ic_puzzling_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_puzzling_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/mipmap-xhdpi/ic_puzzling_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_puzzling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/mipmap-xxhdpi/ic_puzzling.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_puzzling_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/mipmap-xxhdpi/ic_puzzling_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_puzzling_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/mipmap-xxhdpi/ic_puzzling_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_puzzling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/mipmap-xxxhdpi/ic_puzzling.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_puzzling_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/mipmap-xxxhdpi/ic_puzzling_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_puzzling_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/app/src/main/res/mipmap-xxxhdpi/ic_puzzling_round.png -------------------------------------------------------------------------------- /app/src/main/res/values-night/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | 13 | 14 | 19 | 20 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/xml/backup_rules.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/xml/data_extraction_rules.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 12 | 13 | 19 | -------------------------------------------------------------------------------- /app/src/test/java/com/puzzling/puzzlingaos/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.puzzling.puzzlingaos 2 | 3 | import junit.framework.TestCase.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 | -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | plugins { 3 | id 'com.android.application' version '7.4.2' apply false 4 | id 'com.android.library' version '7.4.2' apply false 5 | id 'org.jetbrains.kotlin.android' version '1.8.0' apply false 6 | id 'com.google.dagger.hilt.android' version '2.44' apply false 7 | id 'org.jlleitschuh.gradle.ktlint' version '11.0.0' apply false 8 | } 9 | ext { 10 | coroutineVersion = '1.6.4' 11 | lifecycleVersion = '2.6.1' 12 | coilVersion = "2.2.2" 13 | } -------------------------------------------------------------------------------- /core-ui/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /core-ui/build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'com.android.library' 3 | id 'org.jetbrains.kotlin.android' 4 | } 5 | 6 | android { 7 | namespace 'com.example.core_ui' 8 | compileSdk 33 9 | 10 | defaultConfig { 11 | minSdk 24 12 | targetSdk 33 13 | 14 | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" 15 | consumerProguardFiles "consumer-rules.pro" 16 | } 17 | 18 | buildTypes { 19 | release { 20 | minifyEnabled false 21 | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' 22 | } 23 | } 24 | compileOptions { 25 | sourceCompatibility JavaVersion.VERSION_1_8 26 | targetCompatibility JavaVersion.VERSION_1_8 27 | } 28 | kotlinOptions { 29 | jvmTarget = '1.8' 30 | } 31 | } 32 | 33 | dependencies { 34 | 35 | implementation 'androidx.core:core-ktx:1.7.0' 36 | implementation 'androidx.appcompat:appcompat:1.6.1' 37 | implementation 'com.google.android.material:material:1.9.0' 38 | testImplementation 'junit:junit:4.13.2' 39 | androidTestImplementation 'androidx.test.ext:junit:1.1.5' 40 | androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' 41 | } -------------------------------------------------------------------------------- /core-ui/consumer-rules.pro: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/core-ui/consumer-rules.pro -------------------------------------------------------------------------------- /core-ui/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /core-ui/src/androidTest/java/com/example/core_ui/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package com.example.core_ui 2 | 3 | import androidx.test.platform.app.InstrumentationRegistry 4 | import androidx.test.ext.junit.runners.AndroidJUnit4 5 | 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | import org.junit.Assert.* 10 | 11 | /** 12 | * Instrumented test, which will execute on an Android device. 13 | * 14 | * See [testing documentation](http://d.android.com/tools/testing). 15 | */ 16 | @RunWith(AndroidJUnit4::class) 17 | class ExampleInstrumentedTest { 18 | @Test 19 | fun useAppContext() { 20 | // Context of the app under test. 21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext 22 | assertEquals("com.example.core_ui.test", appContext.packageName) 23 | } 24 | } -------------------------------------------------------------------------------- /core-ui/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /core-ui/src/test/java/com/example/core_ui/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package com.example.core_ui 2 | 3 | import org.junit.Test 4 | 5 | import org.junit.Assert.* 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * See [testing documentation](http://d.android.com/tools/testing). 11 | */ 12 | class ExampleUnitTest { 13 | @Test 14 | fun addition_isCorrect() { 15 | assertEquals(4, 2 + 2) 16 | } 17 | } -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | ## For more details on how to configure your build environment visit 2 | # http://www.gradle.org/docs/current/userguide/build_environment.html 3 | # 4 | # Specifies the JVM arguments used for the daemon process. 5 | # The setting is particularly useful for tweaking memory settings. 6 | # Default value: -Xmx1024m -XX:MaxPermSize=256m 7 | # org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 8 | # 9 | # When configured, Gradle will run in incubating parallel mode. 10 | # This option should only be used with decoupled projects. More details, visit 11 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 12 | # org.gradle.parallel=true 13 | #Mon Jun 26 21:50:58 KST 2023 14 | android.nonTransitiveRClass=true 15 | kotlin.code.style=official 16 | org.gradle.jvmargs=-Xmx2048m -Dfile.encoding\=UTF-8 17 | android.useAndroidX=true 18 | android.enableJetifier=true 19 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Team-Puzzling/Puzzling_Android/ace0f9e73f6d26fbd6052b6d65b51edd331182a6/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sun Jun 25 18:22:09 KST 2023 2 | distributionBase=GRADLE_USER_HOME 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip 4 | distributionPath=wrapper/dists 5 | zipStorePath=wrapper/dists 6 | zipStoreBase=GRADLE_USER_HOME 7 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | google() 4 | mavenCentral() 5 | gradlePluginPortal() 6 | } 7 | } 8 | dependencyResolutionManagement { 9 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) 10 | repositories { 11 | google() 12 | mavenCentral() 13 | maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/'} 14 | } 15 | } 16 | rootProject.name = "Puzzling AOS" 17 | include ':app' 18 | include ':core-ui' 19 | --------------------------------------------------------------------------------