From 411378f86d78992e2efb6f2ef488cfa5f19fdefc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Sch=C3=BCller?= Date: Fri, 4 Feb 2022 14:06:07 +0100 Subject: [PATCH] feat: Merge from temp repo --- .../peertube/ExampleInstrumentedTest.java | 26 - app/src/main/ic_launcher-web.png | Bin 13107 -> 0 bytes .../peertube/activity/AccountActivity.java | 349 ---------- .../peertube/activity/CommonActivity.java | 82 --- .../peertube/activity/MeActivity.java | 180 ------ .../peertube/activity/PlaylistActivity.kt | 103 --- .../activity/SearchServerActivity.java | 200 ------ .../activity/ServerAddressBookActivity.kt | 168 ----- .../peertube/activity/SettingsActivity.java | 137 ---- .../peertube/activity/VideoListActivity.kt | 590 ----------------- .../peertube/activity/VideoPlayActivity.kt | 461 ------------- .../peertube/adapter/ChannelAdapter.java | 175 ----- .../adapter/MultiViewRecycleViewAdapter.kt | 134 ---- .../adapter/MultiViewRecyclerViewHolder.kt | 562 ---------------- .../peertube/adapter/PlaylistAdapter.kt | 63 -- .../peertube/adapter/ServerListAdapter.kt | 67 -- .../peertube/adapter/ServerSearchAdapter.java | 175 ----- .../peertube/application/AppApplication.java | 34 - .../peertube/database/AppDatabase.java | 27 - .../net/schueller/peertube/database/Server.kt | 44 -- .../schueller/peertube/database/ServerDao.kt | 39 -- .../peertube/database/ServerRepository.kt | 47 -- .../peertube/database/ServerRoomDatabase.java | 56 -- .../peertube/database/ServerViewModel.kt | 47 -- .../net/schueller/peertube/database/Video.kt | 25 - .../schueller/peertube/database/VideoDao.kt | 39 -- .../peertube/database/VideoRepository.kt | 47 -- .../peertube/database/VideoRoomDatabase.java | 54 -- .../peertube/database/VideoViewModel.kt | 47 -- .../domain/use_case/AddServerAddress.kt | 19 - .../domain/use_case/DeleteServerAddress.kt | 13 - .../domain/use_case/GetServerAddress.kt | 13 - .../domain/use_case/GetServerAddresses.kt | 34 - .../domain/use_case/SelectServerAddress.kt | 38 -- .../video_list/VideoExploreViewModel.kt | 46 -- .../presentation/video_list/VideoListEvent.kt | 13 - .../video_list/VideoListScreen.kt | 234 ------- .../presentation/video_list/VideoListState.kt | 11 - .../video_list/VideoListViewModel.kt | 123 ---- .../components/BottomBarComponent.kt | 87 --- .../video_list/components/BottomBarItems.kt | 46 -- .../components/TopAppBarComponent.kt | 56 -- .../video_list/components/VideoCategory.kt | 14 - .../video_list/components/VideoChannel.kt | 13 - .../video_list/components/VideoListItem.kt | 129 ---- .../video_list/components/VideoTag.kt | 11 - .../video_list/components/VideoTime.kt | 93 --- .../video_play/VideoDescriptionState.kt | 9 - .../presentation/video_play/VideoPlayEvent.kt | 16 - .../video_play/VideoPlayScreen.kt | 216 ------- .../presentation/video_play/VideoPlayState.kt | 12 - .../video_play/VideoPlayViewModel.kt | 217 ------- .../video_play/components/VideoActions.kt | 132 ---- .../components/VideoDescriptionScreen.kt | 49 -- .../video_play/components/VideoItem.kt | 117 ---- .../video_play/components/VideoMeta.kt | 168 ----- .../video_play/components/VideoScreen.kt | 66 -- .../video_play/player/CacheHolder.kt | 27 - .../video_play/player/DataSourceHolder.kt | 42 -- .../video_play/player/ExoPlayerHolder.kt | 65 -- .../video_play/player/PlayerViewPool.kt | 25 - .../peertube/fragment/AddServerFragment.kt | 163 ----- .../fragment/VideoDescriptionFragment.kt | 120 ---- .../fragment/VideoMenuQualityFragment.java | 127 ---- .../fragment/VideoMenuSpeedFragment.java | 133 ---- .../fragment/VideoMetaDataFragment.kt | 230 ------- .../fragment/VideoOptionsFragment.java | 130 ---- .../peertube/fragment/VideoPlayerFragment.kt | 496 -------------- .../peertube/helper/APIUrlHelper.java | 74 --- .../peertube/helper/ErrorHelper.java | 42 -- .../peertube/helper/MetaDataHelper.kt | 111 ---- .../peertube/helper/VideoHelper.java | 56 -- .../net/schueller/peertube/intents/Intents.kt | 146 ----- .../net/schueller/peertube/model/Account.kt | 34 - .../net/schueller/peertube/model/Avatar.kt | 25 - .../net/schueller/peertube/model/Category.kt | 25 - .../schueller/peertube/model/CategoryVideo.kt | 25 - .../net/schueller/peertube/model/Channel.kt | 37 -- .../schueller/peertube/model/ChannelList.java | 32 - .../peertube/model/ChannelVideo.java | 41 -- .../net/schueller/peertube/model/Comment.kt | 38 -- .../schueller/peertube/model/CommentThread.kt | 29 - .../net/schueller/peertube/model/Config.java | 32 - .../schueller/peertube/model/Description.java | 30 - .../net/schueller/peertube/model/File.java | 110 ---- .../schueller/peertube/model/Language.java | 39 -- .../net/schueller/peertube/model/Licence.java | 39 -- .../java/net/schueller/peertube/model/Me.java | 160 ----- .../schueller/peertube/model/OauthClient.java | 44 -- .../net/schueller/peertube/model/Overview.kt | 26 - .../net/schueller/peertube/model/Privacy.java | 39 -- .../net/schueller/peertube/model/Rating.java | 44 -- .../schueller/peertube/model/Redundancy.java | 30 - .../schueller/peertube/model/Resolution.java | 39 -- .../net/schueller/peertube/model/Server.java | 213 ------ .../schueller/peertube/model/ServerList.java | 32 - .../net/schueller/peertube/model/State.java | 45 -- .../peertube/model/StreamingPlaylist.java | 77 --- .../net/schueller/peertube/model/TagVideo.kt | 26 - .../net/schueller/peertube/model/Token.java | 66 -- .../net/schueller/peertube/model/Video.kt | 90 --- .../net/schueller/peertube/model/VideoList.kt | 25 - .../model/ui/OverviewRecycleViewItem.kt | 5 - .../peertube/model/ui/VideoMetaViewItem.kt | 7 - .../network/AccessTokenAuthenticator.java | 84 --- .../network/AuthenticationService.java | 54 -- .../network/AuthorizationInterceptor.java | 67 -- .../network/GetConfigDataService.java | 28 - .../network/GetServerListDataService.java | 33 - .../peertube/network/GetUserService.java | 77 --- .../peertube/network/GetVideoDataService.java | 103 --- .../peertube/network/RetrofitInstance.java | 56 -- .../schueller/peertube/network/Session.java | 118 ---- .../peertube/network/UnsafeOkHttpClient.java | 67 -- .../provider/SearchSuggestionsProvider.java | 33 - .../peertube/service/LoginService.java | 188 ------ .../peertube/service/VideoPlayerService.kt | 312 --------- .../schueller/peertube/utils/Extensions.kt | 58 -- app/src/main/res/anim/slide_in_bottom.xml | 6 - app/src/main/res/anim/slide_out_bottom.xml | 6 - .../res/drawable-hdpi/ic_action_refresh.png | Bin 740 -> 0 bytes .../res/drawable-hdpi/ic_action_share.png | Bin 750 -> 0 bytes .../res/drawable-mdpi/ic_action_refresh.png | Bin 407 -> 0 bytes .../res/drawable-mdpi/ic_action_share.png | Bin 405 -> 0 bytes .../res/drawable-xhdpi/ic_action_refresh.png | Bin 833 -> 0 bytes .../res/drawable-xhdpi/ic_action_share.png | Bin 853 -> 0 bytes .../res/drawable-xxhdpi/ic_action_refresh.png | Bin 1554 -> 0 bytes .../res/drawable-xxhdpi/ic_action_share.png | Bin 1599 -> 0 bytes .../drawable-xxxhdpi/ic_action_refresh.png | Bin 1791 -> 0 bytes .../res/drawable-xxxhdpi/ic_action_share.png | Bin 1899 -> 0 bytes .../ic_baseline_account_circle_24.xml | 10 - .../main/res/drawable/ic_baseline_add_24.xml | 10 - .../res/drawable/ic_baseline_close_24.xml | 10 - .../main/res/drawable/ic_baseline_help_24.xml | 10 - .../drawable/ic_baseline_person_pin_24.xml | 10 - .../ic_baseline_remove_red_eye_24.xml | 10 - .../res/drawable/ic_baseline_settings_24.xml | 10 - .../drawable/ic_baseline_video_library_24.xml | 10 - app/src/main/res/drawable/ic_close.xml | 20 - .../res/drawable/ic_dashboard_black_24dp.xml | 9 - app/src/main/res/drawable/ic_edit_24.xml | 10 - .../main/res/drawable/ic_home_black_24dp.xml | 9 - .../main/res/drawable/ic_info_black_24dp.xml | 9 - app/src/main/res/drawable/ic_logo.xml | 42 -- app/src/main/res/drawable/ic_logo_bw.xml | 49 -- .../drawable/ic_notifications_black_24dp.xml | 9 - app/src/main/res/drawable/ic_peertube.xml | 16 - app/src/main/res/drawable/ic_peertube_bw.xml | 16 - .../main/res/drawable/ic_sync_black_24dp.xml | 9 - app/src/main/res/drawable/ic_trending.xml | 20 - app/src/main/res/layout/activity_account.xml | 218 ------- app/src/main/res/layout/activity_me.xml | 188 ------ app/src/main/res/layout/activity_playlist.xml | 44 -- .../res/layout/activity_search_server.xml | 62 -- .../layout/activity_server_address_book.xml | 55 -- app/src/main/res/layout/activity_settings.xml | 24 - .../main/res/layout/activity_video_list.xml | 68 -- .../main/res/layout/activity_video_play.xml | 36 -- .../main/res/layout/fragment_add_server.xml | 74 --- .../res/layout/fragment_video_description.xml | 225 ------- .../main/res/layout/fragment_video_meta.xml | 15 - .../fragment_video_options_popup_menu.xml | 10 - ...gment_video_options_quality_popup_menu.xml | 11 - ...ragment_video_options_speed_popup_menu.xml | 184 ------ .../main/res/layout/fragment_video_player.xml | 20 - .../main/res/layout/item_category_title.xml | 24 - .../main/res/layout/item_channel_title.xml | 37 -- app/src/main/res/layout/item_tag_title.xml | 24 - .../layout/item_video_comments_overview.xml | 94 --- app/src/main/res/layout/item_video_meta.xml | 412 ------------ app/src/main/res/layout/row_account_about.xml | 105 --- .../main/res/layout/row_account_channels.xml | 105 --- app/src/main/res/layout/row_account_video.xml | 105 --- app/src/main/res/layout/row_playlist.xml | 43 -- app/src/main/res/layout/row_popup_menu.xml | 31 - app/src/main/res/layout/row_search_server.xml | 90 --- .../res/layout/row_server_address_book.xml | 62 -- app/src/main/res/layout/row_video_list.xml | 112 ---- app/src/main/res/menu/menu_bottom_account.xml | 21 - .../main/res/menu/menu_bottom_video_list.xml | 35 - app/src/main/res/menu/menu_top_account.xml | 7 - app/src/main/res/menu/menu_top_videolist.xml | 38 -- app/src/main/res/menu/menu_video_more.xml | 9 - .../main/res/menu/menu_video_play_options.xml | 7 - app/src/main/res/menu/menu_video_row_mode.xml | 7 - app/src/main/res/values/attrs.xml | 7 - app/src/main/res/values/constants.xml | 604 ------------------ app/src/main/res/values/dimens.xml | 6 - .../res/values/ic_launcher_background.xml | 4 - app/src/main/res/values/styles.xml | 189 ------ app/src/main/res/xml/backup_descriptor.xml | 4 - app/src/main/res/xml/root_preferences.xml | 127 ---- app/src/main/res/xml/searchable.xml | 7 - .../schueller/peertube/ExampleUnitTest.java | 17 - build.gradle | 34 +- gradle.properties | 3 + gradle/wrapper/gradle-wrapper.properties | 2 +- settings.gradle | 10 + 198 files changed, 22 insertions(+), 14646 deletions(-) delete mode 100644 app/src/androidTest/java/net/schueller/peertube/ExampleInstrumentedTest.java delete mode 100644 app/src/main/ic_launcher-web.png delete mode 100644 app/src/main/java/net/schueller/peertube/activity/AccountActivity.java delete mode 100644 app/src/main/java/net/schueller/peertube/activity/CommonActivity.java delete mode 100644 app/src/main/java/net/schueller/peertube/activity/MeActivity.java delete mode 100644 app/src/main/java/net/schueller/peertube/activity/PlaylistActivity.kt delete mode 100644 app/src/main/java/net/schueller/peertube/activity/SearchServerActivity.java delete mode 100644 app/src/main/java/net/schueller/peertube/activity/ServerAddressBookActivity.kt delete mode 100644 app/src/main/java/net/schueller/peertube/activity/SettingsActivity.java delete mode 100644 app/src/main/java/net/schueller/peertube/activity/VideoListActivity.kt delete mode 100644 app/src/main/java/net/schueller/peertube/activity/VideoPlayActivity.kt delete mode 100644 app/src/main/java/net/schueller/peertube/adapter/ChannelAdapter.java delete mode 100644 app/src/main/java/net/schueller/peertube/adapter/MultiViewRecycleViewAdapter.kt delete mode 100644 app/src/main/java/net/schueller/peertube/adapter/MultiViewRecyclerViewHolder.kt delete mode 100644 app/src/main/java/net/schueller/peertube/adapter/PlaylistAdapter.kt delete mode 100644 app/src/main/java/net/schueller/peertube/adapter/ServerListAdapter.kt delete mode 100644 app/src/main/java/net/schueller/peertube/adapter/ServerSearchAdapter.java delete mode 100644 app/src/main/java/net/schueller/peertube/application/AppApplication.java delete mode 100644 app/src/main/java/net/schueller/peertube/database/AppDatabase.java delete mode 100644 app/src/main/java/net/schueller/peertube/database/Server.kt delete mode 100644 app/src/main/java/net/schueller/peertube/database/ServerDao.kt delete mode 100644 app/src/main/java/net/schueller/peertube/database/ServerRepository.kt delete mode 100644 app/src/main/java/net/schueller/peertube/database/ServerRoomDatabase.java delete mode 100644 app/src/main/java/net/schueller/peertube/database/ServerViewModel.kt delete mode 100644 app/src/main/java/net/schueller/peertube/database/Video.kt delete mode 100644 app/src/main/java/net/schueller/peertube/database/VideoDao.kt delete mode 100644 app/src/main/java/net/schueller/peertube/database/VideoRepository.kt delete mode 100644 app/src/main/java/net/schueller/peertube/database/VideoRoomDatabase.java delete mode 100644 app/src/main/java/net/schueller/peertube/database/VideoViewModel.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_server_address/domain/use_case/AddServerAddress.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_server_address/domain/use_case/DeleteServerAddress.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_server_address/domain/use_case/GetServerAddress.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_server_address/domain/use_case/GetServerAddresses.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_server_address/domain/use_case/SelectServerAddress.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_video/presentation/video_list/VideoExploreViewModel.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_video/presentation/video_list/VideoListEvent.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_video/presentation/video_list/VideoListScreen.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_video/presentation/video_list/VideoListState.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_video/presentation/video_list/VideoListViewModel.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_video/presentation/video_list/components/BottomBarComponent.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_video/presentation/video_list/components/BottomBarItems.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_video/presentation/video_list/components/TopAppBarComponent.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_video/presentation/video_list/components/VideoCategory.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_video/presentation/video_list/components/VideoChannel.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_video/presentation/video_list/components/VideoListItem.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_video/presentation/video_list/components/VideoTag.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_video/presentation/video_list/components/VideoTime.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_video/presentation/video_play/VideoDescriptionState.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_video/presentation/video_play/VideoPlayEvent.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_video/presentation/video_play/VideoPlayScreen.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_video/presentation/video_play/VideoPlayState.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_video/presentation/video_play/VideoPlayViewModel.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_video/presentation/video_play/components/VideoActions.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_video/presentation/video_play/components/VideoDescriptionScreen.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_video/presentation/video_play/components/VideoItem.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_video/presentation/video_play/components/VideoMeta.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_video/presentation/video_play/components/VideoScreen.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_video/presentation/video_play/player/CacheHolder.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_video/presentation/video_play/player/DataSourceHolder.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_video/presentation/video_play/player/ExoPlayerHolder.kt delete mode 100644 app/src/main/java/net/schueller/peertube/feature_video/presentation/video_play/player/PlayerViewPool.kt delete mode 100644 app/src/main/java/net/schueller/peertube/fragment/AddServerFragment.kt delete mode 100644 app/src/main/java/net/schueller/peertube/fragment/VideoDescriptionFragment.kt delete mode 100644 app/src/main/java/net/schueller/peertube/fragment/VideoMenuQualityFragment.java delete mode 100644 app/src/main/java/net/schueller/peertube/fragment/VideoMenuSpeedFragment.java delete mode 100644 app/src/main/java/net/schueller/peertube/fragment/VideoMetaDataFragment.kt delete mode 100644 app/src/main/java/net/schueller/peertube/fragment/VideoOptionsFragment.java delete mode 100644 app/src/main/java/net/schueller/peertube/fragment/VideoPlayerFragment.kt delete mode 100644 app/src/main/java/net/schueller/peertube/helper/APIUrlHelper.java delete mode 100644 app/src/main/java/net/schueller/peertube/helper/ErrorHelper.java delete mode 100644 app/src/main/java/net/schueller/peertube/helper/MetaDataHelper.kt delete mode 100644 app/src/main/java/net/schueller/peertube/helper/VideoHelper.java delete mode 100644 app/src/main/java/net/schueller/peertube/intents/Intents.kt delete mode 100644 app/src/main/java/net/schueller/peertube/model/Account.kt delete mode 100644 app/src/main/java/net/schueller/peertube/model/Avatar.kt delete mode 100644 app/src/main/java/net/schueller/peertube/model/Category.kt delete mode 100644 app/src/main/java/net/schueller/peertube/model/CategoryVideo.kt delete mode 100644 app/src/main/java/net/schueller/peertube/model/Channel.kt delete mode 100644 app/src/main/java/net/schueller/peertube/model/ChannelList.java delete mode 100644 app/src/main/java/net/schueller/peertube/model/ChannelVideo.java delete mode 100644 app/src/main/java/net/schueller/peertube/model/Comment.kt delete mode 100644 app/src/main/java/net/schueller/peertube/model/CommentThread.kt delete mode 100644 app/src/main/java/net/schueller/peertube/model/Config.java delete mode 100644 app/src/main/java/net/schueller/peertube/model/Description.java delete mode 100644 app/src/main/java/net/schueller/peertube/model/File.java delete mode 100644 app/src/main/java/net/schueller/peertube/model/Language.java delete mode 100644 app/src/main/java/net/schueller/peertube/model/Licence.java delete mode 100644 app/src/main/java/net/schueller/peertube/model/Me.java delete mode 100644 app/src/main/java/net/schueller/peertube/model/OauthClient.java delete mode 100644 app/src/main/java/net/schueller/peertube/model/Overview.kt delete mode 100644 app/src/main/java/net/schueller/peertube/model/Privacy.java delete mode 100644 app/src/main/java/net/schueller/peertube/model/Rating.java delete mode 100644 app/src/main/java/net/schueller/peertube/model/Redundancy.java delete mode 100644 app/src/main/java/net/schueller/peertube/model/Resolution.java delete mode 100644 app/src/main/java/net/schueller/peertube/model/Server.java delete mode 100644 app/src/main/java/net/schueller/peertube/model/ServerList.java delete mode 100644 app/src/main/java/net/schueller/peertube/model/State.java delete mode 100644 app/src/main/java/net/schueller/peertube/model/StreamingPlaylist.java delete mode 100644 app/src/main/java/net/schueller/peertube/model/TagVideo.kt delete mode 100644 app/src/main/java/net/schueller/peertube/model/Token.java delete mode 100644 app/src/main/java/net/schueller/peertube/model/Video.kt delete mode 100644 app/src/main/java/net/schueller/peertube/model/VideoList.kt delete mode 100644 app/src/main/java/net/schueller/peertube/model/ui/OverviewRecycleViewItem.kt delete mode 100644 app/src/main/java/net/schueller/peertube/model/ui/VideoMetaViewItem.kt delete mode 100644 app/src/main/java/net/schueller/peertube/network/AccessTokenAuthenticator.java delete mode 100644 app/src/main/java/net/schueller/peertube/network/AuthenticationService.java delete mode 100644 app/src/main/java/net/schueller/peertube/network/AuthorizationInterceptor.java delete mode 100644 app/src/main/java/net/schueller/peertube/network/GetConfigDataService.java delete mode 100644 app/src/main/java/net/schueller/peertube/network/GetServerListDataService.java delete mode 100644 app/src/main/java/net/schueller/peertube/network/GetUserService.java delete mode 100644 app/src/main/java/net/schueller/peertube/network/GetVideoDataService.java delete mode 100644 app/src/main/java/net/schueller/peertube/network/RetrofitInstance.java delete mode 100644 app/src/main/java/net/schueller/peertube/network/Session.java delete mode 100644 app/src/main/java/net/schueller/peertube/network/UnsafeOkHttpClient.java delete mode 100644 app/src/main/java/net/schueller/peertube/provider/SearchSuggestionsProvider.java delete mode 100644 app/src/main/java/net/schueller/peertube/service/LoginService.java delete mode 100644 app/src/main/java/net/schueller/peertube/service/VideoPlayerService.kt delete mode 100644 app/src/main/java/net/schueller/peertube/utils/Extensions.kt delete mode 100644 app/src/main/res/anim/slide_in_bottom.xml delete mode 100644 app/src/main/res/anim/slide_out_bottom.xml delete mode 100644 app/src/main/res/drawable-hdpi/ic_action_refresh.png delete mode 100644 app/src/main/res/drawable-hdpi/ic_action_share.png delete mode 100644 app/src/main/res/drawable-mdpi/ic_action_refresh.png delete mode 100644 app/src/main/res/drawable-mdpi/ic_action_share.png delete mode 100644 app/src/main/res/drawable-xhdpi/ic_action_refresh.png delete mode 100644 app/src/main/res/drawable-xhdpi/ic_action_share.png delete mode 100644 app/src/main/res/drawable-xxhdpi/ic_action_refresh.png delete mode 100644 app/src/main/res/drawable-xxhdpi/ic_action_share.png delete mode 100644 app/src/main/res/drawable-xxxhdpi/ic_action_refresh.png delete mode 100644 app/src/main/res/drawable-xxxhdpi/ic_action_share.png delete mode 100644 app/src/main/res/drawable/ic_baseline_account_circle_24.xml delete mode 100644 app/src/main/res/drawable/ic_baseline_add_24.xml delete mode 100644 app/src/main/res/drawable/ic_baseline_close_24.xml delete mode 100644 app/src/main/res/drawable/ic_baseline_help_24.xml delete mode 100644 app/src/main/res/drawable/ic_baseline_person_pin_24.xml delete mode 100644 app/src/main/res/drawable/ic_baseline_remove_red_eye_24.xml delete mode 100644 app/src/main/res/drawable/ic_baseline_settings_24.xml delete mode 100644 app/src/main/res/drawable/ic_baseline_video_library_24.xml delete mode 100644 app/src/main/res/drawable/ic_close.xml delete mode 100644 app/src/main/res/drawable/ic_dashboard_black_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_edit_24.xml delete mode 100644 app/src/main/res/drawable/ic_home_black_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_info_black_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_logo.xml delete mode 100644 app/src/main/res/drawable/ic_logo_bw.xml delete mode 100644 app/src/main/res/drawable/ic_notifications_black_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_peertube.xml delete mode 100644 app/src/main/res/drawable/ic_peertube_bw.xml delete mode 100644 app/src/main/res/drawable/ic_sync_black_24dp.xml delete mode 100644 app/src/main/res/drawable/ic_trending.xml delete mode 100644 app/src/main/res/layout/activity_account.xml delete mode 100644 app/src/main/res/layout/activity_me.xml delete mode 100644 app/src/main/res/layout/activity_playlist.xml delete mode 100644 app/src/main/res/layout/activity_search_server.xml delete mode 100644 app/src/main/res/layout/activity_server_address_book.xml delete mode 100644 app/src/main/res/layout/activity_settings.xml delete mode 100644 app/src/main/res/layout/activity_video_list.xml delete mode 100644 app/src/main/res/layout/activity_video_play.xml delete mode 100644 app/src/main/res/layout/fragment_add_server.xml delete mode 100644 app/src/main/res/layout/fragment_video_description.xml delete mode 100644 app/src/main/res/layout/fragment_video_meta.xml delete mode 100644 app/src/main/res/layout/fragment_video_options_popup_menu.xml delete mode 100644 app/src/main/res/layout/fragment_video_options_quality_popup_menu.xml delete mode 100644 app/src/main/res/layout/fragment_video_options_speed_popup_menu.xml delete mode 100644 app/src/main/res/layout/fragment_video_player.xml delete mode 100644 app/src/main/res/layout/item_category_title.xml delete mode 100644 app/src/main/res/layout/item_channel_title.xml delete mode 100644 app/src/main/res/layout/item_tag_title.xml delete mode 100644 app/src/main/res/layout/item_video_comments_overview.xml delete mode 100644 app/src/main/res/layout/item_video_meta.xml delete mode 100644 app/src/main/res/layout/row_account_about.xml delete mode 100644 app/src/main/res/layout/row_account_channels.xml delete mode 100644 app/src/main/res/layout/row_account_video.xml delete mode 100644 app/src/main/res/layout/row_playlist.xml delete mode 100644 app/src/main/res/layout/row_popup_menu.xml delete mode 100644 app/src/main/res/layout/row_search_server.xml delete mode 100644 app/src/main/res/layout/row_server_address_book.xml delete mode 100644 app/src/main/res/layout/row_video_list.xml delete mode 100644 app/src/main/res/menu/menu_bottom_account.xml delete mode 100644 app/src/main/res/menu/menu_bottom_video_list.xml delete mode 100644 app/src/main/res/menu/menu_top_account.xml delete mode 100644 app/src/main/res/menu/menu_top_videolist.xml delete mode 100644 app/src/main/res/menu/menu_video_more.xml delete mode 100644 app/src/main/res/menu/menu_video_play_options.xml delete mode 100644 app/src/main/res/menu/menu_video_row_mode.xml delete mode 100644 app/src/main/res/values/attrs.xml delete mode 100644 app/src/main/res/values/constants.xml delete mode 100644 app/src/main/res/values/dimens.xml delete mode 100644 app/src/main/res/values/ic_launcher_background.xml delete mode 100644 app/src/main/res/values/styles.xml delete mode 100644 app/src/main/res/xml/backup_descriptor.xml delete mode 100644 app/src/main/res/xml/root_preferences.xml delete mode 100644 app/src/main/res/xml/searchable.xml delete mode 100644 app/src/test/java/net/schueller/peertube/ExampleUnitTest.java diff --git a/app/src/androidTest/java/net/schueller/peertube/ExampleInstrumentedTest.java b/app/src/androidTest/java/net/schueller/peertube/ExampleInstrumentedTest.java deleted file mode 100644 index 0c0fe04..0000000 --- a/app/src/androidTest/java/net/schueller/peertube/ExampleInstrumentedTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.schueller.peertube; - -import android.content.Context; -import androidx.test.InstrumentationRegistry; -import androidx.test.runner.AndroidJUnit4; - -import org.junit.Test; -import org.junit.runner.RunWith; - -import static org.junit.Assert.*; - -/** - * Instrumented test, which will execute on an Android device. - * - * @see Testing documentation - */ -@RunWith(AndroidJUnit4.class) -public class ExampleInstrumentedTest { - @Test - public void useAppContext() throws Exception { - // Context of the app under test. - Context appContext = InstrumentationRegistry.getTargetContext(); - - assertEquals("net.schueller.peertube", appContext.getPackageName()); - } -} diff --git a/app/src/main/ic_launcher-web.png b/app/src/main/ic_launcher-web.png deleted file mode 100644 index 8433983a175424a6f4f3c77bfdd01e971acc0b76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13107 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 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package net.schueller.peertube.activity; - -import android.content.Intent; -import android.os.Bundle; -import android.util.Log; -import android.view.Menu; -import android.view.View; -import android.widget.ImageView; -import android.widget.TextView; - -import com.google.android.material.bottomnavigation.BottomNavigationView; -import com.google.android.material.bottomnavigation.LabelVisibilityMode; -import com.google.android.material.navigation.NavigationBarView; -import com.mikepenz.iconics.IconicsDrawable; -import com.mikepenz.iconics.typeface.library.fontawesome.FontAwesome; -import com.squareup.picasso.Picasso; - -import net.schueller.peertube.R; -import net.schueller.peertube.adapter.ChannelAdapter; -import net.schueller.peertube.adapter.MultiViewRecycleViewAdapter; -import net.schueller.peertube.helper.APIUrlHelper; -import net.schueller.peertube.helper.ErrorHelper; -import net.schueller.peertube.helper.MetaDataHelper; -import net.schueller.peertube.model.Account; -import net.schueller.peertube.model.Avatar; -import net.schueller.peertube.model.ChannelList; -import net.schueller.peertube.model.VideoList; -import net.schueller.peertube.network.GetUserService; -import net.schueller.peertube.network.GetVideoDataService; -import net.schueller.peertube.network.RetrofitInstance; - - -import java.util.ArrayList; -import java.util.Objects; -import java.util.Set; - -import androidx.annotation.NonNull; -import androidx.appcompat.widget.Toolbar; -import androidx.coordinatorlayout.widget.CoordinatorLayout; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; -import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; -import retrofit2.Call; -import retrofit2.Callback; -import retrofit2.Response; - - -public class AccountActivity extends CommonActivity { - - private String TAG = "AccountActivity"; - private String apiBaseURL; - - private Integer videosStart, videosCount, videosCurrentStart; - private String videosFilter, videosSort, videosNsfw; - private Set videosLanguages; - - private ChannelAdapter channelAdapter; - private MultiViewRecycleViewAdapter mMultiViewRecycleViewAdapter; - - private RecyclerView recyclerViewVideos; - private RecyclerView recyclerViewChannels; - - private SwipeRefreshLayout swipeRefreshLayoutVideos; - private SwipeRefreshLayout swipeRefreshLayoutChannels; - private CoordinatorLayout aboutView; - //private TextView emptyView; - - private Boolean isLoadingVideos; - - private GetUserService userService; - - private String displayNameAndHost; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - setContentView(R.layout.activity_account); - - apiBaseURL = APIUrlHelper.getUrlWithVersion(this); - - userService = RetrofitInstance.getRetrofitInstance(apiBaseURL, APIUrlHelper.useInsecureConnection(this)).create(GetUserService.class); - - recyclerViewVideos = findViewById(R.id.account_video_recyclerView); - recyclerViewChannels = findViewById(R.id.account_channel_recyclerView); - - swipeRefreshLayoutVideos = findViewById(R.id.account_swipeRefreshLayout_videos); - swipeRefreshLayoutChannels = findViewById(R.id.account_swipeRefreshLayout_channels); - aboutView = findViewById(R.id.account_about); - - RecyclerView.LayoutManager layoutManagerVideos = new LinearLayoutManager(AccountActivity.this); - recyclerViewVideos.setLayoutManager(layoutManagerVideos); - - RecyclerView.LayoutManager layoutManagerVideosChannels = new LinearLayoutManager(AccountActivity.this); - recyclerViewChannels.setLayoutManager(layoutManagerVideosChannels); - - mMultiViewRecycleViewAdapter = new MultiViewRecycleViewAdapter(); - recyclerViewVideos.setAdapter(mMultiViewRecycleViewAdapter); - - channelAdapter = new ChannelAdapter(new ArrayList<>(), AccountActivity.this); - recyclerViewChannels.setAdapter(channelAdapter); - - - swipeRefreshLayoutVideos.setOnRefreshListener(() -> { - // Refresh items - if (!isLoadingVideos) { - videosCurrentStart = 0; - loadAccountVideos(displayNameAndHost); - } - }); - - // get video ID - Intent intent = getIntent(); - displayNameAndHost = intent.getStringExtra(VideoListActivity.EXTRA_ACCOUNTDISPLAYNAME); - Log.v(TAG, "click: " + displayNameAndHost); - - - createBottomBarNavigation(); - - videosStart = 0; - videosCount = 25; - videosCurrentStart = 0; - videosFilter = ""; - videosSort = "-publishedAt"; - videosNsfw = ""; - - - // Attaching the layout to the toolbar object - Toolbar toolbar = findViewById(R.id.tool_bar_account); - // Setting toolbar as the ActionBar with setSupportActionBar() call - setSupportActionBar(toolbar); - - Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true); - getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_baseline_close_24); - getSupportActionBar().setTitle(displayNameAndHost); - - loadAccountVideos(displayNameAndHost); - - } - - @Override - public boolean onSupportNavigateUp() { - finish(); // close this activity as oppose to navigating up - - return false; - } - - private void loadAccount(String ownerString) { - - // get video details from api - Call call = userService.getAccount(ownerString); - - call.enqueue(new Callback() { - @Override - public void onResponse(@NonNull Call call, @NonNull Response response) { - - - if (response.isSuccessful()) { - Account account = response.body(); - - String owner = MetaDataHelper.getOwnerString(account, - AccountActivity.this, true - ); - - - // set view data - TextView ownerStringView = findViewById(R.id.account_owner_string); - ownerStringView.setText(owner); - - TextView followers = findViewById(R.id.account_followers); - followers.setText(String.valueOf(account.getFollowersCount())); - - TextView description = findViewById(R.id.account_description); - description.setText(account.getDescription()); - - TextView joined = findViewById(R.id.account_joined); - joined.setText(account.getCreatedAt().toString()); - - - ImageView accountAvatar = findViewById(R.id.account_avatar); - - // set Avatar - Avatar avatar = account.getAvatar(); - if (avatar != null) { - String avatarPath = avatar.getPath(); - Picasso.get() - .load(APIUrlHelper.getUrl(AccountActivity.this) + avatarPath) - .into(accountAvatar); - } - - } else { - ErrorHelper.showToastFromCommunicationError( AccountActivity.this, null ); - } - - - } - - @Override - public void onFailure(@NonNull Call call, @NonNull Throwable t) { - Log.wtf(TAG, t.fillInStackTrace()); - ErrorHelper.showToastFromCommunicationError( AccountActivity.this, t ); - } - }); - - } - - - private void loadAccountVideos(String displayNameAndHost) { - - isLoadingVideos = false; - - GetVideoDataService service = RetrofitInstance.getRetrofitInstance(apiBaseURL, APIUrlHelper.useInsecureConnection(this)).create(GetVideoDataService.class); - Call call; - - call = service.getAccountVideosData(displayNameAndHost, videosStart, videosCount, videosSort); - - call.enqueue(new Callback() { - @Override - public void onResponse(@NonNull Call call, @NonNull Response response) { - - Log.v(TAG, response.toString()); - - if (response.isSuccessful()) { - if (videosCurrentStart == 0) { - mMultiViewRecycleViewAdapter.clearData(); - } - - if (response.body() != null) { - mMultiViewRecycleViewAdapter.setVideoData(response.body().getVideos()); - } - - } else{ - ErrorHelper.showToastFromCommunicationError( AccountActivity.this, null ); - } - - isLoadingVideos = false; - swipeRefreshLayoutVideos.setRefreshing(false); - } - - @Override - public void onFailure(@NonNull Call call, @NonNull Throwable t) { - Log.wtf("err", t.fillInStackTrace()); - ErrorHelper.showToastFromCommunicationError( AccountActivity.this, t ); - isLoadingVideos = false; - swipeRefreshLayoutVideos.setRefreshing(false); - } - }); - } - - private void loadAccountChannels(String displayNameAndHost) { - - // get video details from api - Call call = userService.getAccountChannels(displayNameAndHost); - - call.enqueue(new Callback() { - @Override - public void onResponse(@NonNull Call call, @NonNull Response response) { - - - if (response.isSuccessful()) { - ChannelList channelList = response.body(); - - - - } else { - ErrorHelper.showToastFromCommunicationError( AccountActivity.this, null ); - } - - - } - - @Override - public void onFailure(@NonNull Call call, @NonNull Throwable t) { - Log.wtf(TAG, t.fillInStackTrace()); - ErrorHelper.showToastFromCommunicationError( AccountActivity.this, t ); - } - }); - } - - - - private void createBottomBarNavigation() { - - // Get Bottom Navigation - BottomNavigationView navigation = findViewById(R.id.account_navigation); - - // Always show text label - navigation.setLabelVisibilityMode(NavigationBarView.LABEL_VISIBILITY_LABELED); - - // Add Icon font - Menu navMenu = navigation.getMenu(); - navMenu.findItem(R.id.account_navigation_about).setIcon( - new IconicsDrawable(this, FontAwesome.Icon.faw_user)); - navMenu.findItem(R.id.account_navigation_channels).setIcon( - new IconicsDrawable(this, FontAwesome.Icon.faw_list)); - navMenu.findItem(R.id.account_navigation_videos).setIcon( - new IconicsDrawable(this, FontAwesome.Icon.faw_video)); - - // Click Listener - navigation.setOnNavigationItemSelectedListener(menuItem -> { - switch (menuItem.getItemId()) { - case R.id.account_navigation_about: - - swipeRefreshLayoutVideos.setVisibility(View.GONE); - swipeRefreshLayoutChannels.setVisibility(View.GONE); - aboutView.setVisibility(View.VISIBLE); - loadAccount(displayNameAndHost); - - return true; - case R.id.account_navigation_channels: - - swipeRefreshLayoutVideos.setVisibility(View.GONE); - swipeRefreshLayoutChannels.setVisibility(View.VISIBLE); - aboutView.setVisibility(View.GONE); - loadAccountChannels(displayNameAndHost); - - return true; - case R.id.account_navigation_videos: - - swipeRefreshLayoutVideos.setVisibility(View.VISIBLE); - swipeRefreshLayoutChannels.setVisibility(View.GONE); - aboutView.setVisibility(View.GONE); - loadAccountVideos(displayNameAndHost); - - return true; - - } - return false; - }); - - } -} diff --git a/app/src/main/java/net/schueller/peertube/activity/CommonActivity.java b/app/src/main/java/net/schueller/peertube/activity/CommonActivity.java deleted file mode 100644 index d68ffe4..0000000 --- a/app/src/main/java/net/schueller/peertube/activity/CommonActivity.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright (C) 2020 Stefan Schüller - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package net.schueller.peertube.activity; - -import android.content.SharedPreferences; -import android.content.res.Configuration; -import android.content.res.Resources; -import android.os.Bundle; -import android.preference.PreferenceManager; - -import net.schueller.peertube.R; - -import java.util.Locale; - -import androidx.appcompat.app.AppCompatActivity; -import androidx.appcompat.app.AppCompatDelegate; - -public class CommonActivity extends AppCompatActivity { - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - // Set Night Mode - SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); - AppCompatDelegate.setDefaultNightMode(sharedPref.getBoolean(getString(R.string.pref_dark_mode_key), false) ? - AppCompatDelegate.MODE_NIGHT_YES : AppCompatDelegate.MODE_NIGHT_NO); - - // Set theme - setTheme(getResources().getIdentifier( - sharedPref.getString( - getString(R.string.pref_theme_key), - getString(R.string.app_default_theme) - ), - "style", - getPackageName()) - ); - - // Set language - String countryCode = sharedPref.getString(getString(R.string.pref_language_app_key), null); - - if (countryCode == null) { - return; - } - - setLocale(countryCode); - } - - - public void setLocale(String languageCode) { - - Locale locale = new Locale(languageCode); - - //Neither Chinese language choice was working, found this fix on stack overflow - if (languageCode.equals("zh-rCN")) - locale = Locale.SIMPLIFIED_CHINESE; - if (languageCode.equals("zh-rTW")) - locale = Locale.TRADITIONAL_CHINESE; - - Locale.setDefault(locale); - - Resources resources = getResources(); - Configuration config = resources.getConfiguration(); - config.setLocale(locale); - resources.updateConfiguration(config, resources.getDisplayMetrics()); - } -} diff --git a/app/src/main/java/net/schueller/peertube/activity/MeActivity.java b/app/src/main/java/net/schueller/peertube/activity/MeActivity.java deleted file mode 100644 index 57bc0b4..0000000 --- a/app/src/main/java/net/schueller/peertube/activity/MeActivity.java +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Copyright (C) 2020 Stefan Schüller - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package net.schueller.peertube.activity; - -import android.content.Intent; -import android.net.Uri; -import android.os.Bundle; -import android.util.Log; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.View; -import android.widget.ImageView; -import android.widget.LinearLayout; -import android.widget.TextView; -import androidx.annotation.NonNull; -import androidx.appcompat.widget.Toolbar; -import com.squareup.picasso.Picasso; -import net.schueller.peertube.R; -import net.schueller.peertube.helper.APIUrlHelper; -import net.schueller.peertube.helper.ErrorHelper; -import net.schueller.peertube.model.Avatar; -import net.schueller.peertube.model.Me; -import net.schueller.peertube.network.GetUserService; -import net.schueller.peertube.network.RetrofitInstance; -import net.schueller.peertube.network.Session; -import retrofit2.Call; -import retrofit2.Callback; -import retrofit2.Response; - -import java.util.Objects; - -import static net.schueller.peertube.application.AppApplication.getContext; - -public class MeActivity extends CommonActivity { - - - private static final String TAG = "MeActivity"; - - @Override - public boolean onCreateOptionsMenu(Menu menu) { - MenuInflater inflater = getMenuInflater(); - inflater.inflate(R.menu.menu_top_account, menu); - - return true; - } - - - @Override - public boolean onSupportNavigateUp() { - finish(); // close this activity as oppose to navigating up - - return false; - } - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - setContentView(R.layout.activity_me); - - // Attaching the layout to the toolbar object - Toolbar toolbar = findViewById(R.id.tool_bar_me); - // Setting toolbar as the ActionBar with setSupportActionBar() call - setSupportActionBar(toolbar); - Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true); - getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_baseline_close_24); - - LinearLayout account = findViewById(R.id.a_me_account_line); - LinearLayout playlist = findViewById(R.id.a_me_playlist); - LinearLayout settings = findViewById(R.id.a_me_settings); - LinearLayout help = findViewById(R.id.a_me_helpnfeedback); - - TextView logout = findViewById(R.id.a_me_logout); - - playlist.setOnClickListener(view -> { - Intent playlistActivity = new Intent(getContext(), PlaylistActivity.class); - startActivity(playlistActivity); - }); - - settings.setOnClickListener(view -> { - Intent settingsActivity = new Intent(getContext(), SettingsActivity.class); - //overridePendingTransition(R.anim.slide_in_bottom, 0); - startActivity(settingsActivity); - }); - - help.setOnClickListener(view -> { - String url = "https://github.com/sschueller/peertube-android/issues"; - Intent i = new Intent(Intent.ACTION_VIEW); - i.setData(Uri.parse(url)); - startActivity(i); - }); - - logout.setOnClickListener(view -> { - Session.getInstance().invalidate(); - account.setVisibility(View.GONE); - }); - - getUserData(); - } - - private void getUserData() { - - - String apiBaseURL = APIUrlHelper.getUrlWithVersion(this); - String baseURL = APIUrlHelper.getUrl(this); - - GetUserService service = RetrofitInstance.getRetrofitInstance(apiBaseURL, APIUrlHelper.useInsecureConnection(this)).create(GetUserService.class); - - Call call = service.getMe(); - - call.enqueue(new Callback() { - - final LinearLayout account = findViewById(R.id.a_me_account_line); - - @Override - public void onResponse(@NonNull Call call, @NonNull Response response) { - - - if (response.isSuccessful()) { - - Me me = response.body(); - - Log.d(TAG, response.body().toString()); - - TextView username = findViewById(R.id.a_me_username); - TextView email = findViewById(R.id.a_me_email); - ImageView avatarView = findViewById(R.id.a_me_avatar); - - - username.setText(me.getUsername()); - email.setText(me.getEmail()); - - Avatar avatar = me.getAccount().getAvatar(); - if (avatar != null) { - String avatarPath = avatar.getPath(); - Picasso.get() - .load(baseURL + avatarPath) - .into(avatarView); - } - - account.setVisibility(View.VISIBLE); - - } else { - account.setVisibility(View.GONE); - } - - } - - @Override - public void onFailure(@NonNull Call call, @NonNull Throwable t) { - ErrorHelper.showToastFromCommunicationError(MeActivity.this, t); - account.setVisibility(View.GONE); - } - }); - - } - - @Override - protected void onResume() { - super.onResume(); - - getUserData(); - - } -} diff --git a/app/src/main/java/net/schueller/peertube/activity/PlaylistActivity.kt b/app/src/main/java/net/schueller/peertube/activity/PlaylistActivity.kt deleted file mode 100644 index 30b364a..0000000 --- a/app/src/main/java/net/schueller/peertube/activity/PlaylistActivity.kt +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright (C) 2020 Stefan Schüller - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ -package net.schueller.peertube.activity - -import android.app.AlertDialog -import android.content.DialogInterface -import android.content.Intent -import android.os.Bundle -import androidx.activity.viewModels -import androidx.recyclerview.widget.ItemTouchHelper -import androidx.recyclerview.widget.RecyclerView -import net.schueller.peertube.R -import net.schueller.peertube.adapter.MultiViewRecyclerViewHolder -import net.schueller.peertube.adapter.PlaylistAdapter -import net.schueller.peertube.database.Video -import net.schueller.peertube.database.VideoViewModel -import net.schueller.peertube.databinding.ActivityPlaylistBinding - -class PlaylistActivity : CommonActivity() { - - private val TAG = "PlaylistAct" - - private val mVideoViewModel: VideoViewModel by viewModels() - - private lateinit var mBinding: ActivityPlaylistBinding - - override fun onSupportNavigateUp(): Boolean { - finish() // close this activity as oppose to navigating up - return false - } - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - mBinding = ActivityPlaylistBinding.inflate(layoutInflater) - setContentView(mBinding.root) - - // Setting toolbar as the ActionBar with setSupportActionBar() call - setSupportActionBar(mBinding.toolBarServerAddressBook) - supportActionBar?.apply { - setDisplayHomeAsUpEnabled(true) - setHomeAsUpIndicator(R.drawable.ic_baseline_close_24) - } - - showServers() - } - - private fun onVideoClick(video: Video) { - val intent = Intent(this, VideoPlayActivity::class.java) - intent.putExtra(MultiViewRecyclerViewHolder.EXTRA_VIDEOID, video.videoUUID) - startActivity(intent) - } - - private fun showServers() { - val adapter = PlaylistAdapter(mutableListOf(), { onVideoClick(it) }).also { - mBinding.serverListRecyclerview.adapter = it - } - - // Delete items on swipe - val helper = ItemTouchHelper( - object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT) { - override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean { - return false - } - - override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) { - AlertDialog.Builder(this@PlaylistActivity) - .setTitle(getString(R.string.remove_video)) - .setMessage(getString(R.string.remove_video_warning_message)) - .setPositiveButton(android.R.string.ok) { _: DialogInterface?, _: Int -> - val position = viewHolder.bindingAdapterPosition - val video = adapter.getVideoAtPosition(position) - // Delete the video - mVideoViewModel.delete(video) - } - .setNegativeButton(android.R.string.cancel) { _: DialogInterface?, _: Int -> adapter.notifyItemChanged(viewHolder.bindingAdapterPosition) } - .setIcon(android.R.drawable.ic_dialog_alert) - .show() - } - }) - helper.attachToRecyclerView(mBinding.serverListRecyclerview) - - // Update the cached copy of the words in the adapter. - mVideoViewModel.allVideos.observe(this, { videos: List