├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── config.yml │ ├── report_issue.yml │ └── request_feature.yml └── workflows │ ├── bug_greetings.yml │ ├── build.yml │ ├── feature_greetings.yml │ ├── pr_greetings.yml │ └── publish_alpha.yml ├── .gitignore ├── .old-androidApp ├── .gitignore ├── build.gradle.kts ├── proguard-rules.pro └── src │ ├── alpha │ └── res │ │ ├── mipmap-anydpi-v26 │ │ └── ic_banner.xml │ │ ├── mipmap-xhdpi │ │ ├── ic_banner.png │ │ └── ic_banner_foreground.png │ │ ├── mipmap │ │ ├── ic_background.png │ │ ├── ic_launcher.png │ │ └── ic_launcher_foreground.png │ │ ├── values-night │ │ └── themes.xml │ │ └── values │ │ └── ic_banner_background.xml │ ├── beta │ └── res │ │ ├── mipmap-xhdpi │ │ ├── ic_banner.png │ │ └── ic_banner_foreground.png │ │ ├── mipmap │ │ ├── ic_background.png │ │ ├── ic_launcher.png │ │ └── ic_launcher_foreground.png │ │ └── values-night │ │ └── themes.xml │ ├── debug │ ├── kotlin │ │ └── com │ │ │ └── mrboomdev │ │ │ └── awery │ │ │ └── AweryDebug.kt │ └── res │ │ └── drawable │ │ ├── sample_banner.png │ │ └── sample_poster.jpg │ ├── main │ ├── AndroidManifest.xml │ ├── assets │ │ ├── filters.json │ │ ├── icons.json │ │ ├── repos.json │ │ └── tabs_templates.json │ ├── java │ │ ├── com │ │ │ └── mrboomdev │ │ │ │ └── awery │ │ │ │ ├── MainActivity.kt │ │ │ │ ├── app │ │ │ │ ├── App.kt │ │ │ │ ├── AweryLifecycle.kt │ │ │ │ ├── AweryNotifications.java │ │ │ │ ├── CrashHandler.kt │ │ │ │ └── update │ │ │ │ │ ├── UpdatesChannel.java │ │ │ │ │ └── UpdatesManager.kt │ │ │ │ ├── data │ │ │ │ └── Constants.java │ │ │ │ ├── extensions │ │ │ │ ├── ExtensionSettings.java │ │ │ │ └── support │ │ │ │ │ ├── internal │ │ │ │ │ ├── InternalManager.java │ │ │ │ │ └── InternalProviders.java │ │ │ │ │ └── yomi │ │ │ │ │ ├── YomiManager.kt │ │ │ │ │ ├── YomiProvider.java │ │ │ │ │ └── YomiRepoItem.java │ │ │ │ ├── ui │ │ │ │ ├── mobile │ │ │ │ │ ├── components │ │ │ │ │ │ ├── EmptyStateView.kt │ │ │ │ │ │ ├── ExpandableTextView.kt │ │ │ │ │ │ └── GesturePreviewView.java │ │ │ │ │ ├── dialogs │ │ │ │ │ │ ├── BasePanelDialog.kt │ │ │ │ │ │ ├── FiltersDialog.kt │ │ │ │ │ │ ├── MediaActionsDialog.kt │ │ │ │ │ │ ├── MediaBookmarkDialog.kt │ │ │ │ │ │ └── TrackingDialog.kt │ │ │ │ │ └── screens │ │ │ │ │ │ ├── BrowserActivity.kt │ │ │ │ │ │ ├── GalleryActivity.kt │ │ │ │ │ │ ├── IntentHandlerActivity.kt │ │ │ │ │ │ ├── LoginActivity.java │ │ │ │ │ │ ├── SplashActivity.kt │ │ │ │ │ │ ├── catalog │ │ │ │ │ │ ├── MediaCatalogAdapter.java │ │ │ │ │ │ ├── MediaCategoriesAdapter.kt │ │ │ │ │ │ └── feeds │ │ │ │ │ │ │ ├── FailedFeedViewHolder.kt │ │ │ │ │ │ │ ├── FeedViewHolder.java │ │ │ │ │ │ │ ├── FeedsFragment.java │ │ │ │ │ │ │ ├── ListFeedViewHolder.kt │ │ │ │ │ │ │ └── PagesFeedViewHolder.kt │ │ │ │ │ │ ├── media │ │ │ │ │ │ ├── MediaActivity.kt │ │ │ │ │ │ ├── MediaCommentsFragment.java │ │ │ │ │ │ ├── MediaInfoFragment.kt │ │ │ │ │ │ ├── MediaPlayEpisodesAdapter.java │ │ │ │ │ │ ├── MediaPlayFragment.kt │ │ │ │ │ │ └── MediaRelationsFragment.kt │ │ │ │ │ │ ├── player │ │ │ │ │ │ ├── PlayerActivity.kt │ │ │ │ │ │ ├── PlayerController.java │ │ │ │ │ │ ├── PlayerGestures.java │ │ │ │ │ │ └── PlayerPip.kt │ │ │ │ │ │ ├── search │ │ │ │ │ │ ├── MultiSearchActivity.java │ │ │ │ │ │ └── SearchActivity.kt │ │ │ │ │ │ ├── settings │ │ │ │ │ │ ├── AboutActivity.kt │ │ │ │ │ │ ├── SettingsActions.kt │ │ │ │ │ │ ├── SettingsActivity.java │ │ │ │ │ │ ├── SettingsAdapter.java │ │ │ │ │ │ ├── SettingsDataHandler.java │ │ │ │ │ │ └── TabsSettings.java │ │ │ │ │ │ └── setup │ │ │ │ │ │ ├── SetupActivity.kt │ │ │ │ │ │ ├── SetupTabsAdapter.kt │ │ │ │ │ │ └── SetupThemeAdapter.kt │ │ │ │ └── tv │ │ │ │ │ ├── TvMainActivity.kt │ │ │ │ │ ├── components │ │ │ │ │ ├── FeaturedMediaCarousel.kt │ │ │ │ │ ├── FeedsGroup.kt │ │ │ │ │ ├── MediaCard.kt │ │ │ │ │ ├── MediaRow.kt │ │ │ │ │ └── TvSetting.kt │ │ │ │ │ └── screens │ │ │ │ │ ├── PlayerScreen.kt │ │ │ │ │ ├── SearchScreen.kt │ │ │ │ │ ├── home │ │ │ │ │ ├── HomeScreen.kt │ │ │ │ │ └── HomeViewModel.kt │ │ │ │ │ └── media │ │ │ │ │ ├── MediaCommentsScreen.kt │ │ │ │ │ ├── MediaEpisodesScreen.kt │ │ │ │ │ ├── MediaInfoScreen.kt │ │ │ │ │ ├── MediaRelationsScreen.kt │ │ │ │ │ └── MediaScreen.kt │ │ │ │ └── util │ │ │ │ ├── IconStateful.kt │ │ │ │ ├── MediaUtils.java │ │ │ │ ├── NavUtils.kt │ │ │ │ ├── NiceUtils.java │ │ │ │ ├── Selection.java │ │ │ │ ├── TabsTemplate.java │ │ │ │ ├── WeakLazy.kt │ │ │ │ ├── exceptions │ │ │ │ ├── ExtensionNotInstalledException.java │ │ │ │ ├── MaybeNotBadException.java │ │ │ │ ├── OkiThrowableMessage.kt │ │ │ │ └── TimeoutException.java │ │ │ │ ├── extensions │ │ │ │ ├── ActivityExtensions.kt │ │ │ │ ├── AnyExtensions.kt │ │ │ │ ├── ContextExtensions.kt │ │ │ │ ├── DateExtensions.kt │ │ │ │ ├── DialogExtensions.kt │ │ │ │ ├── FragmentExtensions.kt │ │ │ │ ├── IntentExtensions.kt │ │ │ │ ├── MapExtensions.kt │ │ │ │ ├── NumberExtensions.kt │ │ │ │ ├── RxExtensions.kt │ │ │ │ ├── StringExtensions.kt │ │ │ │ └── ViewExtensions.kt │ │ │ │ ├── io │ │ │ │ ├── HttpClient.kt │ │ │ │ └── ZipFile.kt │ │ │ │ └── ui │ │ │ │ ├── FadeTransformer.java │ │ │ │ ├── RecyclerItemDecoration.java │ │ │ │ ├── ViewUtil.java │ │ │ │ ├── adapter │ │ │ │ ├── DropdownAdapter.java │ │ │ │ ├── DropdownBindingAdapter.java │ │ │ │ ├── SimpleAdapter.java │ │ │ │ └── SingleViewAdapter.java │ │ │ │ ├── dialog │ │ │ │ ├── BaseDialogBuilder.java │ │ │ │ ├── DialogBuilder.java │ │ │ │ ├── IconPickerDialog.java │ │ │ │ └── SelectionDialog.java │ │ │ │ ├── fields │ │ │ │ ├── EditTextField.java │ │ │ │ └── FancyField.java │ │ │ │ └── markdown │ │ │ │ ├── LinkifyPlugin.java │ │ │ │ └── SpoilerPlugin.java │ │ └── eu │ │ │ └── kanade │ │ │ └── tachiyomi │ │ │ └── util │ │ │ └── lang │ │ │ └── CloseableExtensions.kt │ ├── kotlin │ │ └── com │ │ │ └── mrboomdev │ │ │ └── awery │ │ │ ├── AweryCompatibility.kt │ │ │ ├── app │ │ │ ├── AweryLocales.kt │ │ │ ├── services │ │ │ │ └── BackupService.kt │ │ │ └── theme │ │ │ │ ├── MobileTheme.kt │ │ │ │ ├── ThemeManager.kt │ │ │ │ └── TvTheme.kt │ │ │ └── platform │ │ │ └── PlatformSettingHandler.kt │ └── res │ │ ├── anim │ │ └── over_shoot.xml │ │ ├── drawable │ │ ├── anim_pause_to_play.xml │ │ ├── anim_play_to_pause.xml │ │ ├── gradient_linear_bg.xml │ │ ├── gradient_linear_black.xml │ │ ├── gradient_linear_horizontal_black.xml │ │ ├── gradient_linear_nav.xml │ │ ├── ic_add.xml │ │ ├── ic_amp_stories_filled.xml │ │ ├── ic_back.xml │ │ ├── ic_block_outlined.xml │ │ ├── ic_book.xml │ │ ├── ic_book_filled.xml │ │ ├── ic_book_outlined.xml │ │ ├── ic_bookmark_filled.xml │ │ ├── ic_bookmark_outlined.xml │ │ ├── ic_brightness_medium_outlined.xml │ │ ├── ic_chat_outlined.xml │ │ ├── ic_check.xml │ │ ├── ic_circle_cancel.xml │ │ ├── ic_circle_check.xml │ │ ├── ic_close.xml │ │ ├── ic_collections_bookmark.xml │ │ ├── ic_collections_bookmark_filled.xml │ │ ├── ic_collections_bookmark_outlined.xml │ │ ├── ic_contrast.xml │ │ ├── ic_dark_mode_filled.xml │ │ ├── ic_dark_mode_outlined.xml │ │ ├── ic_delete_outlined.xml │ │ ├── ic_discord.xml │ │ ├── ic_dislike_filled.xml │ │ ├── ic_dislike_outlined.xml │ │ ├── ic_done.xml │ │ ├── ic_download.xml │ │ ├── ic_edit_outlined.xml │ │ ├── ic_experiment_outlined.xml │ │ ├── ic_extension_filled.xml │ │ ├── ic_fast_forward_outlined.xml │ │ ├── ic_favorite_outlined.xml │ │ ├── ic_filter_list.xml │ │ ├── ic_forum.xml │ │ ├── ic_forum_filled.xml │ │ ├── ic_forum_outlined.xml │ │ ├── ic_fullscreen.xml │ │ ├── ic_github.xml │ │ ├── ic_home_filled.xml │ │ ├── ic_home_outlined.xml │ │ ├── ic_info.xml │ │ ├── ic_info_filled.xml │ │ ├── ic_info_outlined.xml │ │ ├── ic_language.xml │ │ ├── ic_like_filled.xml │ │ ├── ic_like_outlined.xml │ │ ├── ic_list.xml │ │ ├── ic_lock_filled.xml │ │ ├── ic_logout.xml │ │ ├── ic_menu.xml │ │ ├── ic_menu_book_filled.xml │ │ ├── ic_minus.xml │ │ ├── ic_more.xml │ │ ├── ic_movie_filled.xml │ │ ├── ic_movie_outlined.xml │ │ ├── ic_notifications_outlined.xml │ │ ├── ic_paint_filled.xml │ │ ├── ic_paint_outlined.xml │ │ ├── ic_palette_filled.xml │ │ ├── ic_palette_outlined.xml │ │ ├── ic_pinch_filled.xml │ │ ├── ic_pip_outlined.xml │ │ ├── ic_play.xml │ │ ├── ic_play_filled.xml │ │ ├── ic_play_outlined.xml │ │ ├── ic_refresh.xml │ │ ├── ic_round_alpha_t_box_24.xml │ │ ├── ic_round_amp_stories_24.xml │ │ ├── ic_round_audiotrack_24.xml │ │ ├── ic_round_auto_awesome_24.xml │ │ ├── ic_round_block_24.xml │ │ ├── ic_round_brightness_high_24.xml │ │ ├── ic_round_color_picker_24.xml │ │ ├── ic_round_dots_vertical_24.xml │ │ ├── ic_round_error_24.xml │ │ ├── ic_round_fast_forward_24.xml │ │ ├── ic_round_fast_rewind_24.xml │ │ ├── ic_round_font_size_24.xml │ │ ├── ic_round_grid_view_24.xml │ │ ├── ic_round_help_24.xml │ │ ├── ic_round_high_quality_24.xml │ │ ├── ic_round_import_contacts_24.xml │ │ ├── ic_round_menu_book_24.xml │ │ ├── ic_round_movie_filter_24.xml │ │ ├── ic_round_nsfw_24.xml │ │ ├── ic_round_pause_24.xml │ │ ├── ic_round_play_arrow_24.xml │ │ ├── ic_round_play_disabled_24.xml │ │ ├── ic_round_reader_settings.xml │ │ ├── ic_round_remove_red_eye_24.xml │ │ ├── ic_round_report.xml │ │ ├── ic_round_screen_rotation_alt_24.xml │ │ ├── ic_round_signal_no_internet_24.xml │ │ ├── ic_round_skip_next_24.xml │ │ ├── ic_round_skip_previous_24.xml │ │ ├── ic_round_slow_motion_video_24.xml │ │ ├── ic_round_star_24.xml │ │ ├── ic_round_sync_24.xml │ │ ├── ic_round_touch_app_24.xml │ │ ├── ic_round_video_library_24.xml │ │ ├── ic_round_video_settings_24.xml │ │ ├── ic_round_view_array_24.xml │ │ ├── ic_round_view_column_24.xml │ │ ├── ic_round_volume_up_24.xml │ │ ├── ic_schedule_filled.xml │ │ ├── ic_search.xml │ │ ├── ic_send_outlined.xml │ │ ├── ic_settings_filled.xml │ │ ├── ic_settings_outlined.xml │ │ ├── ic_share_filled.xml │ │ ├── ic_share_outlined.xml │ │ ├── ic_sharp_dark_mode.xml │ │ ├── ic_shuffle_24.xml │ │ ├── ic_sort.xml │ │ ├── ic_storage.xml │ │ ├── ic_subtitles_filled.xml │ │ ├── ic_subtitles_outlined.xml │ │ ├── ic_swipe_right_filled.xml │ │ ├── ic_swipe_up_filled.xml │ │ ├── ic_sync.xml │ │ ├── ic_telegram.xml │ │ ├── ic_video_settings.xml │ │ ├── ic_view_cozy.xml │ │ ├── ic_volume_up_outlined.xml │ │ ├── ic_zero.xml │ │ ├── item_ongoing.xml │ │ ├── item_score.xml │ │ ├── item_type.xml │ │ ├── item_user_score.xml │ │ ├── logo_aniyomi.png │ │ ├── logo_dantotsu.png │ │ ├── logo_tachiyomi.jpg │ │ ├── ripple_circle_white.xml │ │ ├── ripple_rect_you.xml │ │ ├── ripple_round_you.xml │ │ ├── ui_bubble_navbar_background.xml │ │ ├── ui_button_popup_background.xml │ │ ├── ui_button_popup_foreground.xml │ │ ├── ui_comment_send_background.xml │ │ ├── ui_dialog_background.xml │ │ ├── ui_gesture_background.xml │ │ ├── ui_gesture_foreground.xml │ │ └── ui_tv_tab_background.xml │ │ ├── font │ │ ├── century_gothic_bold.TTF │ │ ├── century_gothic_regular.TTF │ │ ├── poppins.ttf │ │ ├── poppins_bold.ttf │ │ ├── poppins_family.xml │ │ ├── poppins_semi_bold.ttf │ │ └── poppins_thin.ttf │ │ ├── layout-land │ │ ├── feed_featured_item.xml │ │ ├── feed_featured_wrapper.xml │ │ ├── layout_header_home.xml │ │ ├── layout_media_details.xml │ │ ├── media_details_overview_layout.xml │ │ ├── screen_about.xml │ │ ├── screen_main.xml │ │ ├── screen_media_details.xml │ │ └── screen_setup.xml │ │ ├── layout │ │ ├── feed_failed.xml │ │ ├── feed_featured_item.xml │ │ ├── feed_featured_wrapper.xml │ │ ├── feed_list.xml │ │ ├── grid_media_catalog.xml │ │ ├── grid_simple_card.xml │ │ ├── item_list_dropdown.xml │ │ ├── item_list_episode.xml │ │ ├── item_list_setting.xml │ │ ├── layout_comments_header.xml │ │ ├── layout_header_home.xml │ │ ├── layout_header_search.xml │ │ ├── layout_loading.xml │ │ ├── layout_media_details.xml │ │ ├── layout_tracking_options.xml │ │ ├── layout_watch_variants.xml │ │ ├── media_catalog_fragment.xml │ │ ├── media_details_overview_layout.xml │ │ ├── popup_media_actions.xml │ │ ├── popup_media_bookmark.xml │ │ ├── popup_simple_header.xml │ │ ├── popup_simple_item.xml │ │ ├── screen_about.xml │ │ ├── screen_about_info.xml │ │ ├── screen_browser.xml │ │ ├── screen_feed.xml │ │ ├── screen_main.xml │ │ ├── screen_media_details.xml │ │ ├── screen_player.xml │ │ ├── screen_search.xml │ │ ├── screen_settings.xml │ │ ├── screen_setup.xml │ │ ├── screen_splash.xml │ │ ├── widget_circle_button.xml │ │ ├── widget_comment.xml │ │ ├── widget_comment_send.xml │ │ ├── widget_dropdown.xml │ │ ├── widget_edittext_outlined.xml │ │ └── widget_icon_edittext.xml │ │ ├── menu │ │ ├── manga_menu_detail.xml │ │ └── media_details_menu.xml │ │ ├── mipmap-v26 │ │ ├── ic_banner.xml │ │ └── ic_launcher.xml │ │ ├── values-night │ │ ├── colors.xml │ │ └── themes.xml │ │ ├── values │ │ ├── attr.xml │ │ ├── colors.xml │ │ ├── dimen.xml │ │ ├── font_certs.xml │ │ ├── preloaded_fonts.xml │ │ ├── style.xml │ │ └── themes.xml │ │ └── xml │ │ ├── network_security_config.xml │ │ └── provider_paths.xml │ ├── release │ ├── kotlin │ │ └── com │ │ │ └── mrboomdev │ │ │ └── awery │ │ │ └── AweryDebug.kt │ └── res │ │ └── drawable │ │ └── debug_stub.xml │ └── stable │ └── res │ ├── mipmap-xhdpi │ ├── ic_banner.png │ └── ic_banner_foreground.png │ └── mipmap │ ├── ic_background.png │ ├── ic_launcher.png │ └── ic_launcher_foreground.png ├── .old-app ├── build.gradle.kts └── src │ ├── androidAlpha │ └── res │ │ ├── mipmap-anydpi-v26 │ │ └── ic_banner.xml │ │ ├── mipmap-xhdpi │ │ ├── ic_banner.png │ │ └── ic_banner_foreground.png │ │ ├── mipmap │ │ ├── ic_background.png │ │ ├── ic_launcher.png │ │ └── ic_launcher_foreground.png │ │ ├── values-night │ │ └── themes.xml │ │ └── values │ │ └── ic_banner_background.xml │ ├── androidBeta │ └── res │ │ ├── mipmap-xhdpi │ │ ├── ic_banner.png │ │ └── ic_banner_foreground.png │ │ ├── mipmap │ │ ├── ic_background.png │ │ ├── ic_launcher.png │ │ └── ic_launcher_foreground.png │ │ └── values-night │ │ └── themes.xml │ ├── androidMain │ ├── AndroidManifest.xml │ ├── kotlin │ │ └── com │ │ │ └── mrboomdev │ │ │ └── awery │ │ │ ├── App.kt │ │ │ └── MainActivity.kt │ └── res │ │ ├── mipmap-v26 │ │ ├── ic_banner.xml │ │ └── ic_launcher.xml │ │ ├── values │ │ └── themes.xml │ │ └── xml │ │ └── provider_paths.xml │ ├── androidStable │ └── res │ │ ├── mipmap-xhdpi │ │ ├── ic_banner.png │ │ └── ic_banner_foreground.png │ │ └── mipmap │ │ ├── ic_background.png │ │ ├── ic_launcher.png │ │ └── ic_launcher_foreground.png │ └── desktopMain │ └── kotlin │ └── com │ └── mrboomdev │ └── awery │ └── Main.kt ├── .old-buildSrc ├── build.gradle.kts ├── settings.gradle.kts └── src │ └── main │ └── kotlin │ └── com │ └── mrboomdev │ └── awery │ └── gradle │ ├── GenerateConfigurationsTask.kt │ ├── settings │ ├── GenerateSettingsImpl.kt │ └── GenerateSettingsTask.kt │ └── util │ ├── Json.kt │ ├── PropertyUtils.kt │ └── Xml.kt ├── .old-compat ├── .gitignore ├── build.gradle.kts └── src │ └── main │ └── java │ ├── android │ ├── content │ │ ├── Context.java │ │ └── SharedPreferences.java │ ├── net │ │ └── Uri.java │ └── widget │ │ └── EditText.java │ └── androidx │ └── preference │ ├── CheckBoxPreference.java │ ├── DialogPreference.java │ ├── EditTextPreference.java │ ├── ListPreference.java │ ├── MultiSelectListPreference.java │ ├── Preference.java │ ├── PreferenceScreen.java │ ├── SwitchPreferenceCompat.java │ └── TwoStatePreference.java ├── .old-desktopApp ├── .gitignore ├── build.gradle.kts └── src │ └── jvmMain │ ├── kotlin │ └── com │ │ └── mrboomdev │ │ └── awery │ │ └── desktop │ │ ├── Main.kt │ │ └── ui │ │ └── components │ │ └── StatusBar.kt │ └── resources │ └── icon │ ├── close.xml │ ├── minimize.xml │ └── select_window_2.xml ├── .old-ext ├── .gitignore ├── README.md ├── build.gradle.kts ├── platform │ ├── .gitignore │ ├── build.gradle.kts │ └── src │ │ └── main │ │ └── kotlin │ │ └── com │ │ └── mrboomdev │ │ └── awery │ │ └── ext │ │ ├── AweryClient.kt │ │ └── ResourcesProvider.kt └── src │ └── main │ └── kotlin │ └── com │ └── mrboomdev │ └── awery │ └── ext │ ├── constants │ ├── AgeRating.kt │ └── AweryFilters.kt │ ├── data │ ├── CatalogComment.kt │ ├── CatalogFeed.kt │ ├── CatalogFile.kt │ ├── CatalogMedia.kt │ ├── CatalogSearchResults.kt │ ├── CatalogTag.kt │ ├── ExternalLink.kt │ └── Setting.kt │ ├── source │ ├── AbstractSource.kt │ ├── Context.kt │ ├── Preferences.kt │ ├── Source.kt │ ├── SourcesManager.kt │ └── module │ │ ├── CatalogModule.kt │ │ ├── CommentsModule.kt │ │ ├── Module.kt │ │ ├── NotificationsModule.kt │ │ ├── ProfileModule.kt │ │ ├── SettingsModule.kt │ │ ├── StatusModule.kt │ │ ├── SubtitlesModule.kt │ │ ├── TrackerModule.kt │ │ └── WatchModule.kt │ └── util │ ├── GlobalId.kt │ ├── Image.kt │ ├── LocaleAware.kt │ ├── PendingTask.kt │ ├── Progress.kt │ └── exceptions │ ├── ExtensionInstallException.kt │ ├── ExtensionLoadException.kt │ └── ZeroResultsException.kt ├── .old-shared ├── .gitignore ├── build.gradle.kts └── src │ ├── androidMain │ ├── AndroidManifest.xml │ └── kotlin │ │ ├── com │ │ └── mrboomdev │ │ │ └── awery │ │ │ ├── PlatformAliases.android.kt │ │ │ ├── data │ │ │ └── AweryDB.android.kt │ │ │ ├── platform │ │ │ ├── CrashHandler.android.kt │ │ │ ├── ExecutorActivity.kt │ │ │ ├── Platform.android.kt │ │ │ ├── PlatformImage.android.kt │ │ │ ├── PlatformPreferences.android.kt │ │ │ └── PlatformResources.android.kt │ │ │ ├── sources │ │ │ ├── ExtensionsManager.android.kt │ │ │ └── yomi │ │ │ │ ├── YomiManager.kt │ │ │ │ ├── YomiSource.kt │ │ │ │ ├── aniyomi │ │ │ │ ├── AniyomiManager.kt │ │ │ │ ├── AniyomiMedia.kt │ │ │ │ └── AniyomiSource.kt │ │ │ │ └── tachiyomi │ │ │ │ ├── TachiyomiManager.kt │ │ │ │ ├── TachiyomiMedia.kt │ │ │ │ └── TachiyomiSource.kt │ │ │ ├── ui │ │ │ ├── AweryRootAndroid.kt │ │ │ ├── components │ │ │ │ └── VideoPlayer.android.kt │ │ │ └── utils │ │ │ │ └── BackEffect.android.kt │ │ │ └── utils │ │ │ ├── ActivityUtils.kt │ │ │ ├── ContextUtils.kt │ │ │ ├── FileExtensions.kt │ │ │ ├── IntentUtils.kt │ │ │ ├── Logger.android.kt │ │ │ └── WebViewClientCompat.kt │ │ └── eu │ │ └── kanade │ │ └── tachiyomi │ │ └── network │ │ ├── JavaScriptEngine.android.kt │ │ ├── NetworkHelper.android.kt │ │ ├── PlatformCookieJar.kt │ │ └── interceptor │ │ ├── CloudflareInterceptor.kt │ │ └── WebViewInterceptor.kt │ ├── androidMobile │ └── kotlin │ │ └── com │ │ └── mrboomdev │ │ └── awery │ │ └── ui │ │ ├── AweryRoot.android.kt │ │ └── routes │ │ └── MainRoute.android.kt │ ├── androidTv │ └── kotlin │ │ └── com │ │ └── mrboomdev │ │ └── awery │ │ └── ui │ │ ├── AweryRoot.android.kt │ │ ├── routes │ │ └── MainRoute.android.kt │ │ └── screens │ │ └── TvMainScreen.kt │ ├── commonMain │ └── kotlin │ │ ├── com │ │ └── mrboomdev │ │ │ └── awery │ │ │ ├── PlatformAliases.kt │ │ │ ├── app │ │ │ └── theme │ │ │ │ └── AweryTheme.kt │ │ │ ├── data │ │ │ ├── AweryAppFilters.kt │ │ │ ├── AweryDB.kt │ │ │ ├── ContentType.kt │ │ │ ├── dao │ │ │ │ ├── ListDao.kt │ │ │ │ ├── MediaDao.kt │ │ │ │ ├── MediaProgressDao.kt │ │ │ │ └── RepositoryDao.kt │ │ │ ├── entity │ │ │ │ ├── DBList.kt │ │ │ │ ├── DBMedia.kt │ │ │ │ ├── DBMediaProgress.kt │ │ │ │ └── DBRepository.kt │ │ │ └── settings │ │ │ │ ├── ComposableSetting.kt │ │ │ │ ├── InMemorySetting.kt │ │ │ │ ├── PlatformSetting.kt │ │ │ │ └── SettingsExtensions.kt │ │ │ ├── generated │ │ │ └── GeneratedSetting.kt │ │ │ ├── platform │ │ │ ├── CrashHandler.kt │ │ │ ├── Platform.kt │ │ │ ├── PlatformImage.kt │ │ │ ├── PlatformPreferences.kt │ │ │ ├── PlatformResources.kt │ │ │ └── SettingHandler.kt │ │ │ ├── sources │ │ │ ├── ExtensionsManager.kt │ │ │ ├── FeedLoader.kt │ │ │ ├── SourcesSettingsFactory.kt │ │ │ └── jvm │ │ │ │ ├── JvmEntry.kt │ │ │ │ └── JvmManager.kt │ │ │ ├── ui │ │ │ ├── AweryRoot.kt │ │ │ ├── Themes.kt │ │ │ ├── components │ │ │ │ ├── Button.kt │ │ │ │ ├── ExpandableText.kt │ │ │ │ ├── Feed.kt │ │ │ │ ├── Fitter.kt │ │ │ │ ├── LargeCard.kt │ │ │ │ ├── MaterialDialog.kt │ │ │ │ ├── SettingsItem.kt │ │ │ │ ├── SmallCard.kt │ │ │ │ ├── StateBox.kt │ │ │ │ └── VideoPlayer.kt │ │ │ ├── navigation │ │ │ │ ├── JetpackNavigation.kt │ │ │ │ ├── NavigationExperience.kt │ │ │ │ ├── NavigationRoute.kt │ │ │ │ └── NavigationTemplates.kt │ │ │ ├── pane │ │ │ │ └── FeedsPane.kt │ │ │ ├── routes │ │ │ │ ├── MainRoute.kt │ │ │ │ ├── MediaRoute.kt │ │ │ │ ├── NotificationsRoute.kt │ │ │ │ ├── PlayerRoute.kt │ │ │ │ ├── ReaderRoute.kt │ │ │ │ ├── Routes.kt │ │ │ │ ├── SearchRoute.kt │ │ │ │ ├── SettingsRoute.kt │ │ │ │ ├── ThemeRoute.kt │ │ │ │ └── WelcomeRoute.kt │ │ │ ├── screens │ │ │ │ ├── SplashScreen.kt │ │ │ │ ├── player │ │ │ │ │ ├── PlayerScreen.kt │ │ │ │ │ └── PlayerViewModel.kt │ │ │ │ └── settings │ │ │ │ │ ├── SettingScreen.kt │ │ │ │ │ └── SettingsScreen.kt │ │ │ └── utils │ │ │ │ ├── BackEffect.kt │ │ │ │ ├── ComposeExtensions.kt │ │ │ │ ├── InsetsController.kt │ │ │ │ ├── NavType.kt │ │ │ │ ├── ResultReceiver.kt │ │ │ │ ├── ScrollFixer.kt │ │ │ │ ├── Toast.kt │ │ │ │ └── ViewModel.kt │ │ │ └── utils │ │ │ ├── CollectionUtils.kt │ │ │ ├── ExtExtensions.kt │ │ │ ├── ExtensionSdk.kt │ │ │ ├── FileExtensions.kt │ │ │ ├── Logger.kt │ │ │ ├── NumberExtensions.kt │ │ │ ├── SerializationUtils.kt │ │ │ ├── StringExtensions.kt │ │ │ ├── UniqueIdGenerator.kt │ │ │ ├── Utils.kt │ │ │ ├── Weak.kt │ │ │ ├── annotations │ │ │ ├── AweryExperimentalApi.kt │ │ │ └── AweryInternalApi.kt │ │ │ └── exceptions │ │ │ ├── BotSecurityBypassException.kt │ │ │ └── OkiThrowableMessage.kt │ │ ├── eu │ │ └── kanade │ │ │ └── tachiyomi │ │ │ ├── AppInfo.kt │ │ │ ├── animesource │ │ │ ├── AnimeCatalogueSource.kt │ │ │ ├── AnimeSource.kt │ │ │ ├── AnimeSourceFactory.kt │ │ │ ├── ConfigurableAnimeSource.kt │ │ │ ├── UnmeteredSource.kt │ │ │ ├── model │ │ │ │ ├── AnimeFilter.kt │ │ │ │ ├── AnimeFilterList.kt │ │ │ │ ├── AnimeUpdateStrategy.kt │ │ │ │ ├── AnimesPage.kt │ │ │ │ ├── SAnime.kt │ │ │ │ ├── SEpisode.kt │ │ │ │ └── Video.kt │ │ │ └── online │ │ │ │ ├── AnimeHttpSource.kt │ │ │ │ └── ParsedAnimeHttpSource.kt │ │ │ ├── network │ │ │ ├── JavaScriptEngine.kt │ │ │ ├── NetworkHelper.kt │ │ │ ├── OkHttpExtensions.kt │ │ │ ├── PlatformCookieJar.kt │ │ │ ├── Progress.kt │ │ │ ├── Requests.kt │ │ │ └── interceptor │ │ │ │ ├── RateLimitInterceptor.kt │ │ │ │ ├── SpecificHostRateLimitInterceptor.kt │ │ │ │ ├── UncaughtExceptionInterceptor.kt │ │ │ │ └── UserAgentInterceptor.kt │ │ │ ├── source │ │ │ ├── CatalogueSource.kt │ │ │ ├── ConfigurableSource.kt │ │ │ ├── Source.kt │ │ │ ├── SourceFactory.kt │ │ │ ├── UnmeteredSource.kt │ │ │ ├── model │ │ │ │ ├── Filter.kt │ │ │ │ ├── FilterList.kt │ │ │ │ ├── MangasPage.kt │ │ │ │ ├── Page.kt │ │ │ │ ├── SChapter.kt │ │ │ │ ├── SManga.kt │ │ │ │ └── UpdateStrategy.kt │ │ │ └── online │ │ │ │ ├── HttpSource.kt │ │ │ │ └── ParsedHttpSource.kt │ │ │ └── util │ │ │ ├── JsoupExtensions.kt │ │ │ └── RxExtensions.kt │ │ └── mihonx │ │ ├── network │ │ └── rateLimit.kt │ │ ├── source │ │ └── utils │ │ │ └── preferences.kt │ │ └── utils │ │ └── json.kt │ └── desktopMain │ └── kotlin │ ├── com │ └── mrboomdev │ │ └── awery │ │ ├── PlatformAliases.desktop.kt │ │ ├── data │ │ └── AweryDB.desktop.kt │ │ ├── platform │ │ ├── CrashHandler.desktop.kt │ │ ├── Platform.desktop.kt │ │ ├── PlatformImage.desktop.kt │ │ ├── PlatformPreferences.desktop.kt │ │ └── PlatformResources.desktop.kt │ │ ├── sources │ │ └── ExtensionsManager.desktop.kt │ │ ├── ui │ │ ├── AweryRoot.desktop.kt │ │ ├── components │ │ │ └── VideoPlayer.desktop.kt │ │ ├── routes │ │ │ └── MainRoute.desktop.kt │ │ ├── screens │ │ │ └── BrowserScreen.kt │ │ └── utils │ │ │ └── BackEffect.desktop.kt │ │ └── utils │ │ └── Logger.desktop.kt │ └── eu │ └── kanade │ └── tachiyomi │ └── network │ ├── JavaScriptEngine.desktop.kt │ ├── NetworkHelper.desktop.kt │ └── PlatformCookieJar.desktop.kt ├── .run └── GenerateComposeResources.run.xml ├── LICENSE.md ├── README.md ├── app ├── build.gradle.kts └── src │ └── androidMain │ ├── AndroidManifest.xml │ ├── kotlin │ └── com │ │ └── mrboomdev │ │ └── awery │ │ └── app │ │ ├── ApplicationImpl.kt │ │ └── MainActivity.kt │ └── res │ ├── mipmap-v26 │ ├── ic_banner.xml │ └── ic_launcher.xml │ ├── mipmap-xhdpi │ ├── ic_banner.png │ └── ic_banner_foreground.png │ ├── mipmap │ ├── ic_background.png │ ├── ic_launcher.png │ └── ic_launcher_foreground.png │ ├── resources.properties │ ├── values-night │ └── themes.xml │ └── values │ └── themes.xml ├── build.gradle.kts ├── compose-stability.txt ├── core ├── build.gradle.kts └── src │ ├── androidMain │ └── kotlin │ │ └── com │ │ └── mrboomdev │ │ └── awery │ │ └── core │ │ └── Awery.android.kt │ ├── commonMain │ └── kotlin │ │ └── com │ │ └── mrboomdev │ │ └── awery │ │ └── core │ │ ├── Awery.kt │ │ └── utils │ │ └── StringUtils.kt │ └── desktopMain │ └── kotlin │ └── com │ └── mrboomdev │ └── awery │ └── core │ └── Awery.desktop.kt ├── data ├── build.gradle.kts └── src │ ├── androidMain │ └── kotlin │ │ └── com │ │ └── mrboomdev │ │ └── awery │ │ └── data │ │ └── settings │ │ └── Setting.android.kt │ ├── commonMain │ └── kotlin │ │ └── com │ │ └── mrboomdev │ │ └── awery │ │ └── data │ │ ├── gawaii │ │ ├── AniyomiGawaii.kt │ │ ├── CloudstreamGawaii.kt │ │ ├── DantotsuGawaii.kt │ │ ├── Gawaii.kt │ │ └── MihonGawaii.kt │ │ └── settings │ │ ├── Delegate.kt │ │ ├── Setting.kt │ │ └── Settings.kt │ └── desktopMain │ └── kotlin │ └── com │ └── mrboomdev │ └── awery │ └── data │ └── settings │ └── Setting.desktop.kt ├── docs ├── app_icon.png ├── banner.webp └── screenshot1.jpg ├── extension ├── core-api │ └── build.gradle.kts ├── loaders │ ├── android-compat │ │ ├── build.gradle.kts │ │ └── src │ │ │ ├── androidMain │ │ │ └── kotlin │ │ │ │ └── Aliases.android.kt │ │ │ ├── commonMain │ │ │ └── kotlin │ │ │ │ └── Aliases.kt │ │ │ └── desktopMain │ │ │ └── kotlin │ │ │ ├── Aliases.desktop.kt │ │ │ └── android │ │ │ └── content │ │ │ └── Context.kt │ ├── build.gradle.kts │ └── src │ │ └── commonMain │ │ └── kotlin │ │ └── com │ │ └── mrboomdev │ │ └── awery │ │ └── extension │ │ └── loaders │ │ └── ExtensionLoader.kt └── platform-api │ └── build.gradle.kts ├── gradle.properties ├── gradle ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── resources ├── build.gradle.kts └── src │ └── commonMain │ ├── composeResources │ ├── drawable │ │ ├── ic_amp_stories_filled.xml │ │ ├── ic_back.xml │ │ ├── ic_book_filled.xml │ │ ├── ic_book_outlined.xml │ │ ├── ic_bookmark_filled.xml │ │ ├── ic_brightness_medium_outlined.xml │ │ ├── ic_collections_bookmark_filled.xml │ │ ├── ic_collections_bookmark_outlined.xml │ │ ├── ic_download.xml │ │ ├── ic_experiment_outlined.xml │ │ ├── ic_extension_filled.xml │ │ ├── ic_fast_forward_outlined.xml │ │ ├── ic_fullscreen.xml │ │ ├── ic_home_filled.xml │ │ ├── ic_home_outlined.xml │ │ ├── ic_info_filled.xml │ │ ├── ic_language.xml │ │ ├── ic_list.xml │ │ ├── ic_movie_filled.xml │ │ ├── ic_movie_outlined.xml │ │ ├── ic_paint_filled.xml │ │ ├── ic_pip_outlined.xml │ │ ├── ic_play_filled.xml │ │ ├── ic_search.xml │ │ ├── ic_send_outlined.xml │ │ ├── ic_settings_filled.xml │ │ ├── ic_share_filled.xml │ │ ├── ic_storage.xml │ │ ├── ic_subtitles_filled.xml │ │ ├── ic_swipe_up_filled.xml │ │ ├── ic_sync.xml │ │ ├── ic_video_settings.xml │ │ ├── ic_view_cozy.xml │ │ ├── logo_aniyomi.png │ │ ├── logo_awery.png │ │ ├── logo_dantotsu.png │ │ └── logo_tachiyomi.jpg │ ├── files │ │ ├── app_settings.json │ │ └── system_settings.json │ ├── values-as │ │ └── strings.xml │ ├── values-bg │ │ └── strings.xml │ ├── values-bn │ │ └── strings.xml │ ├── values-cs │ │ └── strings.xml │ ├── values-da │ │ └── strings.xml │ ├── values-de │ │ └── strings.xml │ ├── values-el │ │ └── strings.xml │ ├── values-en-rIN │ │ └── strings.xml │ ├── values-es │ │ └── strings.xml │ ├── values-fil │ │ └── strings.xml │ ├── values-fr │ │ └── strings.xml │ ├── values-gu │ │ └── strings.xml │ ├── values-hi │ │ └── strings.xml │ ├── values-hu │ │ └── strings.xml │ ├── values-hy │ │ └── strings.xml │ ├── values-in │ │ └── strings.xml │ ├── values-it │ │ └── strings.xml │ ├── values-iw │ │ └── strings.xml │ ├── values-ja │ │ └── strings.xml │ ├── values-ko │ │ └── strings.xml │ ├── values-mr │ │ └── strings.xml │ ├── values-nl │ │ └── strings.xml │ ├── values-pl │ │ └── strings.xml │ ├── values-pt │ │ └── strings.xml │ ├── values-ro │ │ └── strings.xml │ ├── values-ru │ │ └── strings.xml │ ├── values-sa │ │ └── strings.xml │ ├── values-ta │ │ └── strings.xml │ ├── values-th │ │ └── strings.xml │ ├── values-tr │ │ └── strings.xml │ ├── values-vi │ │ └── strings.xml │ ├── values-zh-rCN │ │ └── strings.xml │ └── values │ │ └── strings.xml │ └── kotlin │ └── com │ └── mrboomdev │ └── awery │ └── resources │ └── Utils.kt ├── settings.gradle.kts ├── ui ├── build.gradle.kts └── src │ ├── androidMain │ └── kotlin │ │ └── com │ │ └── mrboomdev │ │ └── awery │ │ └── ui │ │ ├── AweryTheme.android.kt │ │ └── screens │ │ └── main │ │ └── MainScreen.android.kt │ ├── commonMain │ └── kotlin │ │ └── com │ │ └── mrboomdev │ │ └── awery │ │ └── ui │ │ ├── App.kt │ │ ├── AweryTheme.kt │ │ ├── Navigation.kt │ │ └── screens │ │ └── main │ │ ├── MainScreen.kt │ │ ├── MainScreenTab.kt │ │ └── MainScreenViewModel.kt │ └── desktopMain │ └── kotlin │ └── com │ └── mrboomdev │ └── awery │ └── ui │ ├── AweryTheme.desktop.kt │ └── screens │ └── main │ └── MainScreen.desktop.kt └── workflowscripts └── tel_parser.sed /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: 🧑‍💻 Awery Help on Discord 4 | url: https://discord.gg/yepfCz4pvW 5 | about: Get support, ask questions, and join the community discussions. 6 | 7 | - name: 📱 Awery Help on Telegram 8 | url: https://t.me/mrboomdev_awery 9 | about: Connect with the community, ask questions, and get help directly on Telegram. 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Gradle files 2 | .gradle/ 3 | build/ 4 | 5 | # Local configuration file (sdk path, etc) 6 | local.properties 7 | 8 | # Log/OS Files 9 | *.log 10 | 11 | # Android Studio generated files and folders 12 | captures/ 13 | .externalNativeBuild/ 14 | .cxx/ 15 | *.apk 16 | output.json 17 | 18 | # IntelliJ 19 | *.iml 20 | .idea/ 21 | 22 | # Keystore files 23 | *.jks 24 | *.keystore 25 | 26 | # Android Profiling 27 | *.hprof 28 | 29 | #other 30 | scripts/ 31 | /.kotlin/ -------------------------------------------------------------------------------- /.old-androidApp/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | /debug 3 | /debug/output-metadata.json 4 | /release -------------------------------------------------------------------------------- /.old-androidApp/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | -dontwarn java.beans.* -------------------------------------------------------------------------------- /.old-androidApp/src/alpha/res/mipmap-anydpi-v26/ic_banner.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /.old-androidApp/src/alpha/res/mipmap-xhdpi/ic_banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-androidApp/src/alpha/res/mipmap-xhdpi/ic_banner.png -------------------------------------------------------------------------------- /.old-androidApp/src/alpha/res/mipmap-xhdpi/ic_banner_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-androidApp/src/alpha/res/mipmap-xhdpi/ic_banner_foreground.png -------------------------------------------------------------------------------- /.old-androidApp/src/alpha/res/mipmap/ic_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-androidApp/src/alpha/res/mipmap/ic_background.png -------------------------------------------------------------------------------- /.old-androidApp/src/alpha/res/mipmap/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-androidApp/src/alpha/res/mipmap/ic_launcher.png -------------------------------------------------------------------------------- /.old-androidApp/src/alpha/res/mipmap/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-androidApp/src/alpha/res/mipmap/ic_launcher_foreground.png -------------------------------------------------------------------------------- /.old-androidApp/src/alpha/res/values-night/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /.old-androidApp/src/alpha/res/values/ic_banner_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #111111 4 | -------------------------------------------------------------------------------- /.old-androidApp/src/beta/res/mipmap-xhdpi/ic_banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-androidApp/src/beta/res/mipmap-xhdpi/ic_banner.png -------------------------------------------------------------------------------- /.old-androidApp/src/beta/res/mipmap-xhdpi/ic_banner_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-androidApp/src/beta/res/mipmap-xhdpi/ic_banner_foreground.png -------------------------------------------------------------------------------- /.old-androidApp/src/beta/res/mipmap/ic_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-androidApp/src/beta/res/mipmap/ic_background.png -------------------------------------------------------------------------------- /.old-androidApp/src/beta/res/mipmap/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-androidApp/src/beta/res/mipmap/ic_launcher.png -------------------------------------------------------------------------------- /.old-androidApp/src/beta/res/mipmap/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-androidApp/src/beta/res/mipmap/ic_launcher_foreground.png -------------------------------------------------------------------------------- /.old-androidApp/src/beta/res/values-night/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /.old-androidApp/src/debug/kotlin/com/mrboomdev/awery/AweryDebug.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery 2 | 3 | import com.mrboomdev.awery.R as RealR 4 | 5 | object AweryDebug { 6 | @Suppress("ClassName") 7 | object R { 8 | object drawable { 9 | val sample_banner 10 | get() = RealR.drawable.sample_banner 11 | 12 | val sample_poster 13 | get() = RealR.drawable.sample_poster 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /.old-androidApp/src/debug/res/drawable/sample_banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-androidApp/src/debug/res/drawable/sample_banner.png -------------------------------------------------------------------------------- /.old-androidApp/src/debug/res/drawable/sample_poster.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-androidApp/src/debug/res/drawable/sample_poster.jpg -------------------------------------------------------------------------------- /.old-androidApp/src/main/assets/filters.json: -------------------------------------------------------------------------------- 1 | { 2 | "tags": [ "Tags", "Genres", "Genre", "Теги", "Жанр", "Generos", "Generi", "Selecionar Gêneros", "Gêneros" ], 3 | "type": [ "Categories", "Type", "Tipo", "Формат" ], 4 | "status": [ "Status", "Stato", "Статус тайтла" ], 5 | "year": [ "Year", "Date", "Anno di Uscita", "Ano" ], 6 | "authors": [ "Brands", "Producer", "Studios", "Studio", "Estudio", "Estúdios" ], 7 | "sort": [ "Sort by", "Sort", "Order", "Order by", "Ordenar por", "Сортировать по" ], 8 | "none": [ "", "" ] 9 | } -------------------------------------------------------------------------------- /.old-androidApp/src/main/assets/repos.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "AweryJS", 4 | "title": "Awery - Official Repository", 5 | "url": "https://github.com/MrBoomDeveloper/AweryRepository" 6 | } 7 | ] 8 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/java/com/mrboomdev/awery/app/update/UpdatesChannel.java: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.app.update; 2 | 3 | public enum UpdatesChannel { 4 | STABLE, BETA, ALPHA 5 | } -------------------------------------------------------------------------------- /.old-androidApp/src/main/java/com/mrboomdev/awery/ui/mobile/dialogs/TrackingDialog.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.mobile.dialogs 2 | 3 | import android.content.Context 4 | import com.mrboomdev.awery.ext.data.CatalogMedia 5 | 6 | class TrackingDialog(val media: CatalogMedia) { 7 | 8 | fun show(context: Context) { 9 | 10 | } 11 | } -------------------------------------------------------------------------------- /.old-androidApp/src/main/java/com/mrboomdev/awery/ui/mobile/screens/settings/SettingsActions.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.mobile.screens.settings 2 | 3 | import com.mrboomdev.awery.app.AweryLifecycle.Companion.anyContext 4 | import com.mrboomdev.awery.data.settings.SettingsItem 5 | import com.mrboomdev.awery.data.settings.PlatformSetting 6 | import com.mrboomdev.awery.platform.PlatformSettingHandler 7 | 8 | @Deprecated(message = "old shit") 9 | object SettingsActions { 10 | 11 | @JvmStatic 12 | fun run(item: SettingsItem) { 13 | PlatformSettingHandler.handlePlatformClick(anyContext, PlatformSetting( 14 | key = item.key 15 | ) 16 | ) 17 | } 18 | } -------------------------------------------------------------------------------- /.old-androidApp/src/main/java/com/mrboomdev/awery/ui/mobile/screens/settings/SettingsDataHandler.java: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.mobile.screens.settings; 2 | 3 | import com.mrboomdev.awery.data.settings.SettingsItem; 4 | 5 | public interface SettingsDataHandler { 6 | void onScreenLaunchRequest(SettingsItem item); 7 | void saveValue(SettingsItem item, Object newValue); 8 | Object restoreValue(SettingsItem item); 9 | } -------------------------------------------------------------------------------- /.old-androidApp/src/main/java/com/mrboomdev/awery/ui/tv/components/TvSetting.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.tv.components 2 | 3 | class TvSetting -------------------------------------------------------------------------------- /.old-androidApp/src/main/java/com/mrboomdev/awery/ui/tv/screens/PlayerScreen.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.tv.screens 2 | 3 | import androidx.compose.runtime.Composable 4 | 5 | @Composable 6 | fun PlayerScreen() { 7 | 8 | } -------------------------------------------------------------------------------- /.old-androidApp/src/main/java/com/mrboomdev/awery/ui/tv/screens/SearchScreen.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.tv.screens -------------------------------------------------------------------------------- /.old-androidApp/src/main/java/com/mrboomdev/awery/ui/tv/screens/media/MediaCommentsScreen.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.tv.screens.media 2 | 3 | import androidx.compose.runtime.Composable 4 | import com.mrboomdev.awery.ext.data.CatalogMedia 5 | 6 | @Composable 7 | fun MediaCommentsScreen(media: CatalogMedia) { 8 | 9 | } -------------------------------------------------------------------------------- /.old-androidApp/src/main/java/com/mrboomdev/awery/ui/tv/screens/media/MediaRelationsScreen.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.tv.screens.media 2 | 3 | import androidx.compose.runtime.Composable 4 | import com.mrboomdev.awery.ext.data.CatalogMedia 5 | 6 | @Composable 7 | fun MediaRelationsScreen(media: CatalogMedia) { 8 | 9 | } -------------------------------------------------------------------------------- /.old-androidApp/src/main/java/com/mrboomdev/awery/util/TabsTemplate.java: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.util; 2 | 3 | import com.mrboomdev.awery.data.db.item.DBTab; 4 | 5 | import java.util.List; 6 | 7 | public class TabsTemplate { 8 | public String id, title, icon, description; 9 | public List tabs; 10 | } -------------------------------------------------------------------------------- /.old-androidApp/src/main/java/com/mrboomdev/awery/util/WeakLazy.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.util 2 | 3 | import java.lang.ref.WeakReference 4 | 5 | /** 6 | * The actual value may be cleared at any time by the gc if there's no references left out in the whole process. 7 | * Then the specified initializer would be called again to restore the value. 8 | */ 9 | class WeakLazy(val initializer: () -> T): Lazy { 10 | private var weakReference: WeakReference? = null 11 | 12 | private fun initValue(): T { 13 | val value = initializer() 14 | weakReference = WeakReference(value) 15 | return value 16 | } 17 | 18 | override val value: T 19 | get() = weakReference?.get() ?: initValue() 20 | 21 | override fun isInitialized(): Boolean { 22 | return weakReference?.get() != null 23 | } 24 | } -------------------------------------------------------------------------------- /.old-androidApp/src/main/java/com/mrboomdev/awery/util/exceptions/ExtensionNotInstalledException.java: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.util.exceptions; 2 | 3 | public class ExtensionNotInstalledException extends Exception { 4 | private final String extensionName; 5 | 6 | public ExtensionNotInstalledException(String extensionName) { 7 | super("Extension not installed! " + extensionName); 8 | this.extensionName = extensionName; 9 | } 10 | 11 | public ExtensionNotInstalledException(String extensionName, Throwable cause) { 12 | super("Extension not installed! " + extensionName, cause); 13 | this.extensionName = extensionName; 14 | } 15 | 16 | public String getExtensionName() { 17 | return extensionName; 18 | } 19 | } -------------------------------------------------------------------------------- /.old-androidApp/src/main/java/com/mrboomdev/awery/util/exceptions/MaybeNotBadException.java: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.util.exceptions; 2 | 3 | public interface MaybeNotBadException { 4 | 5 | boolean isBad(); 6 | } -------------------------------------------------------------------------------- /.old-androidApp/src/main/java/com/mrboomdev/awery/util/exceptions/TimeoutException.java: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.util.exceptions; 2 | 3 | public class TimeoutException extends Exception { 4 | 5 | public TimeoutException(String name) { 6 | super(name); 7 | } 8 | 9 | public TimeoutException(Throwable t) { 10 | super(t); 11 | } 12 | 13 | public TimeoutException(String name, Throwable t) { 14 | super(name, t); 15 | } 16 | 17 | public TimeoutException() { 18 | super(); 19 | } 20 | } -------------------------------------------------------------------------------- /.old-androidApp/src/main/java/com/mrboomdev/awery/util/extensions/AnyExtensions.kt: -------------------------------------------------------------------------------- 1 | @file:OptIn(ExperimentalContracts::class) 2 | 3 | package com.mrboomdev.awery.util.extensions 4 | 5 | import kotlin.contracts.ExperimentalContracts 6 | import kotlin.contracts.InvocationKind 7 | import kotlin.contracts.contract 8 | 9 | inline fun I.letWith(callback: I.() -> O): O { 10 | contract { 11 | callsInPlace(callback, InvocationKind.EXACTLY_ONCE) 12 | } 13 | 14 | return callback() 15 | } -------------------------------------------------------------------------------- /.old-androidApp/src/main/java/com/mrboomdev/awery/util/extensions/DateExtensions.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.util.extensions 2 | 3 | import java.util.Calendar 4 | 5 | fun Calendar.mutate(): Calendar { 6 | return Calendar.getInstance(timeZone).also { 7 | it.timeInMillis = timeInMillis 8 | } 9 | } 10 | 11 | fun Long.toCalendar(): Calendar { 12 | return Calendar.getInstance().apply { 13 | timeInMillis = this@toCalendar 14 | } 15 | } -------------------------------------------------------------------------------- /.old-androidApp/src/main/java/com/mrboomdev/awery/util/extensions/IntentExtensions.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.util.extensions 2 | 3 | import android.content.Intent 4 | 5 | fun Intent.toChooser(title: CharSequence) = Intent.createChooser(this, title) -------------------------------------------------------------------------------- /.old-androidApp/src/main/java/com/mrboomdev/awery/util/extensions/NumberExtensions.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.util.extensions 2 | 3 | import android.content.res.ColorStateList 4 | 5 | fun Int.toColorState(): ColorStateList { 6 | return ColorStateList.valueOf(this) 7 | } 8 | 9 | operator fun Int?.plus(string: String): String { 10 | return toString() + string 11 | } -------------------------------------------------------------------------------- /.old-androidApp/src/main/java/com/mrboomdev/awery/util/ui/FadeTransformer.java: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.util.ui; 2 | 3 | import android.animation.ObjectAnimator; 4 | import android.view.View; 5 | 6 | import androidx.annotation.NonNull; 7 | import androidx.viewpager2.widget.ViewPager2; 8 | 9 | public class FadeTransformer implements ViewPager2.PageTransformer { 10 | 11 | @Override 12 | public void transformPage(@NonNull View page, float position) { 13 | if(position != 0) return; 14 | 15 | ObjectAnimator.ofFloat(page, "alpha", 0, 1) 16 | .setDuration(150) 17 | .start(); 18 | } 19 | } -------------------------------------------------------------------------------- /.old-androidApp/src/main/java/com/mrboomdev/awery/util/ui/fields/FancyField.java: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.util.ui.fields; 2 | 3 | import android.view.View; 4 | 5 | public abstract class FancyField { 6 | private T view; 7 | 8 | public T getView() { 9 | return getView(true); 10 | } 11 | 12 | public T getView(boolean createIfDoesNotExist) { 13 | if(!createIfDoesNotExist) return view; 14 | return view != null ? view : (view = createView()); 15 | } 16 | 17 | public boolean isCreated() { 18 | return view != null; 19 | } 20 | 21 | public abstract T createView(); 22 | } -------------------------------------------------------------------------------- /.old-androidApp/src/main/kotlin/com/mrboomdev/awery/AweryCompatibility.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery 2 | 3 | import com.mrboomdev.awery.data.settings.NicePreferences 4 | import com.mrboomdev.awery.data.settings.SettingsItem 5 | import com.mrboomdev.awery.generated.GeneratedSetting 6 | 7 | fun GeneratedSetting.asDeprecatedSetting(): SettingsItem = NicePreferences.getSettingsMap().findItem(key) -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/anim/over_shoot.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/gradient_linear_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/gradient_linear_black.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/gradient_linear_horizontal_black.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/gradient_linear_nav.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_add.xml: -------------------------------------------------------------------------------- 1 | 7 | 13 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_amp_stories_filled.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_back.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_book.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 8 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_bookmark_filled.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_bookmark_outlined.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_chat_outlined.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_check.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_circle_cancel.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_circle_check.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_close.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_collections_bookmark.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 8 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_collections_bookmark_filled.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_collections_bookmark_outlined.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_dark_mode_filled.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_dislike_filled.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_dislike_outlined.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_done.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_download.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_edit_outlined.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_fast_forward_outlined.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_filter_list.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_forum.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 8 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_forum_filled.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_forum_outlined.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_fullscreen.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_home_filled.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_home_outlined.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_info.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 8 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_like_filled.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_like_outlined.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_logout.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_menu.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_minus.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_movie_filled.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_movie_outlined.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_pip_outlined.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_play.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 8 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_play_filled.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_play_outlined.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_refresh.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_round_alpha_t_box_24.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_round_amp_stories_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_round_audiotrack_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_round_block_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_round_brightness_high_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_round_color_picker_24.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_round_dots_vertical_24.xml: -------------------------------------------------------------------------------- 1 | 3 | 7 | 8 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_round_error_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_round_fast_forward_24.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_round_fast_rewind_24.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_round_font_size_24.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_round_high_quality_24.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_round_pause_24.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_round_play_arrow_24.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_round_play_disabled_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_round_remove_red_eye_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_round_signal_no_internet_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_round_skip_next_24.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_round_skip_previous_24.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_round_star_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_round_touch_app_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_round_video_library_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_round_view_array_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_round_view_column_24.xml: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_round_volume_up_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_schedule_filled.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_send_outlined.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_sharp_dark_mode.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_shuffle_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_sort.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_storage.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_subtitles_filled.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_subtitles_outlined.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_sync.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ic_telegram.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/item_ongoing.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/item_score.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/item_type.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/item_user_score.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/logo_aniyomi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-androidApp/src/main/res/drawable/logo_aniyomi.png -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/logo_dantotsu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-androidApp/src/main/res/drawable/logo_dantotsu.png -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/logo_tachiyomi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-androidApp/src/main/res/drawable/logo_tachiyomi.jpg -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ripple_circle_white.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ripple_rect_you.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ripple_round_you.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ui_bubble_navbar_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ui_button_popup_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ui_button_popup_foreground.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ui_comment_send_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ui_dialog_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ui_gesture_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/drawable/ui_gesture_foreground.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/font/century_gothic_bold.TTF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-androidApp/src/main/res/font/century_gothic_bold.TTF -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/font/century_gothic_regular.TTF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-androidApp/src/main/res/font/century_gothic_regular.TTF -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/font/poppins.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-androidApp/src/main/res/font/poppins.ttf -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/font/poppins_bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-androidApp/src/main/res/font/poppins_bold.ttf -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/font/poppins_family.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/font/poppins_semi_bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-androidApp/src/main/res/font/poppins_semi_bold.ttf -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/font/poppins_thin.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-androidApp/src/main/res/font/poppins_thin.ttf -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/layout/widget_circle_button.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/layout/widget_edittext_outlined.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/menu/manga_menu_detail.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 14 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/menu/media_details_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 10 | 11 | 14 | 15 | 18 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/mipmap-v26/ic_banner.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/mipmap-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/values-night/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #22eeeeee 4 | 5 | #000000 6 | @color/bg_white 7 | #1C1C1C 8 | #001C1C1C 9 | #40ffffff 10 | #54000000 11 | #29FF6B08 12 | #b3aead 13 | #E8222222 14 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/values/dimen.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 600dp 4 | 325dp 5 | 32dp 6 | 16dp 7 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/values/preloaded_fonts.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | @font/poppins_bold 5 | @font/poppins_thin 6 | 7 | 8 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 10 | 11 | 12 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /.old-androidApp/src/main/res/xml/provider_paths.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 10 | 11 | 14 | 15 | 18 | 19 | 22 | -------------------------------------------------------------------------------- /.old-androidApp/src/release/kotlin/com/mrboomdev/awery/AweryDebug.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery 2 | 3 | import com.mrboomdev.awery.R as RealR 4 | 5 | object AweryDebug { 6 | @Suppress("ClassName", "PropertyName") 7 | object R { 8 | object drawable { 9 | private val debug_stub 10 | get() = RealR.drawable.debug_stub 11 | 12 | val sample_banner = debug_stub 13 | val sample_poster = debug_stub 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /.old-androidApp/src/release/res/drawable/debug_stub.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.old-androidApp/src/stable/res/mipmap-xhdpi/ic_banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-androidApp/src/stable/res/mipmap-xhdpi/ic_banner.png -------------------------------------------------------------------------------- /.old-androidApp/src/stable/res/mipmap-xhdpi/ic_banner_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-androidApp/src/stable/res/mipmap-xhdpi/ic_banner_foreground.png -------------------------------------------------------------------------------- /.old-androidApp/src/stable/res/mipmap/ic_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-androidApp/src/stable/res/mipmap/ic_background.png -------------------------------------------------------------------------------- /.old-androidApp/src/stable/res/mipmap/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-androidApp/src/stable/res/mipmap/ic_launcher.png -------------------------------------------------------------------------------- /.old-androidApp/src/stable/res/mipmap/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-androidApp/src/stable/res/mipmap/ic_launcher_foreground.png -------------------------------------------------------------------------------- /.old-app/src/androidAlpha/res/mipmap-anydpi-v26/ic_banner.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /.old-app/src/androidAlpha/res/mipmap-xhdpi/ic_banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-app/src/androidAlpha/res/mipmap-xhdpi/ic_banner.png -------------------------------------------------------------------------------- /.old-app/src/androidAlpha/res/mipmap-xhdpi/ic_banner_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-app/src/androidAlpha/res/mipmap-xhdpi/ic_banner_foreground.png -------------------------------------------------------------------------------- /.old-app/src/androidAlpha/res/mipmap/ic_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-app/src/androidAlpha/res/mipmap/ic_background.png -------------------------------------------------------------------------------- /.old-app/src/androidAlpha/res/mipmap/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-app/src/androidAlpha/res/mipmap/ic_launcher.png -------------------------------------------------------------------------------- /.old-app/src/androidAlpha/res/mipmap/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-app/src/androidAlpha/res/mipmap/ic_launcher_foreground.png -------------------------------------------------------------------------------- /.old-app/src/androidAlpha/res/values-night/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /.old-app/src/androidAlpha/res/values/ic_banner_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #111111 4 | -------------------------------------------------------------------------------- /.old-app/src/androidBeta/res/mipmap-xhdpi/ic_banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-app/src/androidBeta/res/mipmap-xhdpi/ic_banner.png -------------------------------------------------------------------------------- /.old-app/src/androidBeta/res/mipmap-xhdpi/ic_banner_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-app/src/androidBeta/res/mipmap-xhdpi/ic_banner_foreground.png -------------------------------------------------------------------------------- /.old-app/src/androidBeta/res/mipmap/ic_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-app/src/androidBeta/res/mipmap/ic_background.png -------------------------------------------------------------------------------- /.old-app/src/androidBeta/res/mipmap/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-app/src/androidBeta/res/mipmap/ic_launcher.png -------------------------------------------------------------------------------- /.old-app/src/androidBeta/res/mipmap/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-app/src/androidBeta/res/mipmap/ic_launcher_foreground.png -------------------------------------------------------------------------------- /.old-app/src/androidBeta/res/values-night/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /.old-app/src/androidMain/kotlin/com/mrboomdev/awery/App.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery 2 | 3 | import android.app.Application 4 | import com.mrboomdev.awery.platform.Platform 5 | import com.mrboomdev.awery.platform.init 6 | import kotlinx.coroutines.DelicateCoroutinesApi 7 | import kotlinx.coroutines.Dispatchers 8 | import kotlinx.coroutines.GlobalScope 9 | import kotlinx.coroutines.launch 10 | 11 | class App: Application() { 12 | init { 13 | Platform.attachBaseContext(this) 14 | } 15 | 16 | @OptIn(DelicateCoroutinesApi::class) 17 | override fun onCreate() { 18 | super.onCreate() 19 | 20 | GlobalScope.launch(Dispatchers.Default) { 21 | Platform.init() 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /.old-app/src/androidMain/res/mipmap-v26/ic_banner.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /.old-app/src/androidMain/res/mipmap-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /.old-app/src/androidMain/res/xml/provider_paths.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 10 | 11 | 14 | 15 | 18 | 19 | 22 | -------------------------------------------------------------------------------- /.old-app/src/androidStable/res/mipmap-xhdpi/ic_banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-app/src/androidStable/res/mipmap-xhdpi/ic_banner.png -------------------------------------------------------------------------------- /.old-app/src/androidStable/res/mipmap-xhdpi/ic_banner_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-app/src/androidStable/res/mipmap-xhdpi/ic_banner_foreground.png -------------------------------------------------------------------------------- /.old-app/src/androidStable/res/mipmap/ic_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-app/src/androidStable/res/mipmap/ic_background.png -------------------------------------------------------------------------------- /.old-app/src/androidStable/res/mipmap/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-app/src/androidStable/res/mipmap/ic_launcher.png -------------------------------------------------------------------------------- /.old-app/src/androidStable/res/mipmap/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/.old-app/src/androidStable/res/mipmap/ic_launcher_foreground.png -------------------------------------------------------------------------------- /.old-app/src/desktopMain/kotlin/com/mrboomdev/awery/Main.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery 2 | 3 | import kotlin.system.exitProcess 4 | 5 | fun main() { 6 | println("This shit isn't done yet!") 7 | exitProcess(0) 8 | } -------------------------------------------------------------------------------- /.old-buildSrc/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | `kotlin-dsl` 3 | alias(libs.plugins.kotlin.serialization) 4 | } 5 | 6 | dependencies { 7 | implementation(libs.kotlinx.serialization.json) 8 | } -------------------------------------------------------------------------------- /.old-buildSrc/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | mavenCentral() 4 | gradlePluginPortal() 5 | } 6 | } 7 | 8 | dependencyResolutionManagement { 9 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) 10 | repositories { 11 | mavenCentral() 12 | google() 13 | } 14 | 15 | versionCatalogs { 16 | create("libs") { 17 | from(files("../gradle/libs.versions.toml")) 18 | } 19 | } 20 | } 21 | 22 | enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS") 23 | rootProject.name = "AweryBuildScripts" -------------------------------------------------------------------------------- /.old-buildSrc/src/main/kotlin/com/mrboomdev/awery/gradle/util/Json.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.gradle.util 2 | 3 | import kotlinx.serialization.json.JsonArray 4 | import kotlinx.serialization.json.JsonElement 5 | import kotlinx.serialization.json.JsonNull 6 | import kotlinx.serialization.json.JsonPrimitive 7 | import kotlinx.serialization.json.contentOrNull 8 | 9 | val JsonElement?.isNull: Boolean 10 | get() = this == null || this is JsonNull 11 | 12 | val JsonElement.textContent: String? 13 | get() = if(this is JsonPrimitive) contentOrNull else null 14 | 15 | val JsonElement.items: JsonArray? 16 | get() = if(this is JsonArray) this else null -------------------------------------------------------------------------------- /.old-buildSrc/src/main/kotlin/com/mrboomdev/awery/gradle/util/PropertyUtils.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.gradle.util 2 | 3 | import org.gradle.api.provider.ListProperty 4 | 5 | operator fun ListProperty.plusAssign(list: List) = addAll(list) -------------------------------------------------------------------------------- /.old-compat/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /.old-compat/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("java-library") 3 | alias(libs.plugins.kotlin.jvm) 4 | } 5 | 6 | java { 7 | sourceCompatibility = JavaVersion.VERSION_17 8 | targetCompatibility = JavaVersion.VERSION_17 9 | } 10 | 11 | kotlin { 12 | compilerOptions { 13 | jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /.old-compat/src/main/java/android/content/Context.java: -------------------------------------------------------------------------------- 1 | package android.content; 2 | 3 | public abstract class Context {} -------------------------------------------------------------------------------- /.old-compat/src/main/java/android/content/SharedPreferences.java: -------------------------------------------------------------------------------- 1 | package android.content; 2 | 3 | public interface SharedPreferences { 4 | } 5 | -------------------------------------------------------------------------------- /.old-compat/src/main/java/android/net/Uri.java: -------------------------------------------------------------------------------- 1 | package android.net; 2 | 3 | public abstract class Uri { 4 | @Override 5 | public abstract String toString(); 6 | } 7 | -------------------------------------------------------------------------------- /.old-compat/src/main/java/android/widget/EditText.java: -------------------------------------------------------------------------------- 1 | package android.widget; 2 | 3 | import android.content.Context; 4 | 5 | public class EditText { 6 | public EditText(Context context) {} 7 | } 8 | -------------------------------------------------------------------------------- /.old-compat/src/main/java/androidx/preference/CheckBoxPreference.java: -------------------------------------------------------------------------------- 1 | package androidx.preference; 2 | 3 | import android.content.Context; 4 | public class CheckBoxPreference extends TwoStatePreference { 5 | public CheckBoxPreference(Context context) { 6 | super(context); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /.old-compat/src/main/java/androidx/preference/DialogPreference.java: -------------------------------------------------------------------------------- 1 | package androidx.preference; 2 | 3 | public abstract class DialogPreference extends Preference { 4 | public CharSequence title, message; 5 | 6 | public CharSequence getDialogTitle() { 7 | return title; 8 | } 9 | 10 | public void setDialogTitle(CharSequence dialogTitle) { 11 | this.title = dialogTitle; 12 | } 13 | 14 | public CharSequence getDialogMessage() { 15 | return message; 16 | } 17 | 18 | public void setDialogMessage(CharSequence dialogMessage) { 19 | this.message = dialogMessage; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /.old-compat/src/main/java/androidx/preference/PreferenceScreen.java: -------------------------------------------------------------------------------- 1 | package androidx.preference; 2 | 3 | import android.content.Context; 4 | 5 | import java.util.ArrayList; 6 | import java.util.List; 7 | 8 | public class PreferenceScreen { 9 | public List preferences = new ArrayList<>(); 10 | 11 | public boolean addPreference(Preference preference) { 12 | return preferences.add(preference); 13 | } 14 | 15 | public Context getContext() { 16 | throw new UnsupportedOperationException(); 17 | } 18 | } -------------------------------------------------------------------------------- /.old-compat/src/main/java/androidx/preference/SwitchPreferenceCompat.java: -------------------------------------------------------------------------------- 1 | package androidx.preference; 2 | 3 | import android.content.Context; 4 | 5 | public class SwitchPreferenceCompat extends TwoStatePreference { 6 | public SwitchPreferenceCompat(Context context) { 7 | super(context); 8 | } 9 | } -------------------------------------------------------------------------------- /.old-desktopApp/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /.old-desktopApp/src/jvmMain/resources/icon/close.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | -------------------------------------------------------------------------------- /.old-desktopApp/src/jvmMain/resources/icon/minimize.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | -------------------------------------------------------------------------------- /.old-ext/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /.old-ext/README.md: -------------------------------------------------------------------------------- 1 | # Awery Extension Library 2 | A bridge between all extensions and the application. 3 | [Official Documentation](https://awery.mrboomdev.ru) -------------------------------------------------------------------------------- /.old-ext/platform/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /.old-ext/platform/src/main/kotlin/com/mrboomdev/awery/ext/AweryClient.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext 2 | 3 | import java.util.Locale 4 | 5 | object AweryClient { 6 | val NAME: String 7 | get() = throw NotImplementedError() 8 | 9 | val ID: Int 10 | get() = throw NotImplementedError() 11 | 12 | val USER_AGENT: String 13 | get() = throw NotImplementedError() 14 | 15 | val VERSION: Int 16 | get() = throw NotImplementedError() 17 | 18 | val LOCALE: Locale 19 | get() = throw NotImplementedError() 20 | } -------------------------------------------------------------------------------- /.old-ext/platform/src/main/kotlin/com/mrboomdev/awery/ext/ResourcesProvider.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext 2 | 3 | import com.mrboomdev.awery.ext.source.Context 4 | import java.io.File 5 | 6 | object ResourcesProvider { 7 | fun getFile(context: Context, path: String): File = throw NotImplementedError("Stub!") 8 | } -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/constants/AgeRating.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.constants 2 | 3 | @JvmInline 4 | value class AgeRating(val age: Int) { 5 | companion object { 6 | val EVERYONE = AgeRating(0) 7 | val NSFW = AgeRating(18) 8 | 9 | fun match(string: String): AgeRating? { 10 | string.substringBefore("+").toIntOrNull()?.also { 11 | return AgeRating(it) 12 | } 13 | 14 | return when(string.lowercase()) { 15 | "everyone", "e" -> EVERYONE 16 | "nsfw" -> NSFW 17 | else -> null 18 | } 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/constants/AweryFilters.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.constants 2 | 3 | object AweryFilters { 4 | const val EPISODE = "AWERY.EPISODE" 5 | const val MEDIA = "AWERY.MEDIA" 6 | const val FEED = "AWERY.FEED" 7 | const val PAGE = "AWERY.PAGE" 8 | const val QUERY = "AWERY.QUERY" 9 | const val TAG = "AWERY.TAG" 10 | } -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/data/CatalogComment.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.data 2 | 3 | class CatalogComment( 4 | val avatar: String? = null, 5 | val name: String, 6 | val message: String, 7 | val flairs: Array? = null, 8 | val likes: Int? = null, 9 | val dislikes: Int? = null, 10 | val votes: Int? = null, 11 | val repliesCount: Int? = null 12 | ) -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/data/CatalogFeed.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.data 2 | 3 | import kotlinx.serialization.Contextual 4 | import java.io.Serializable 5 | 6 | @kotlinx.serialization.Serializable 7 | class CatalogFeed( 8 | val managerId: String? = null, 9 | val sourceId: String? = null, 10 | val feedId: String? = null, 11 | val title: String, 12 | val style: Style = Style.ROW, 13 | val hideIfEmpty: Boolean = false, 14 | val filters: List<@Contextual Setting>? = null 15 | ): Serializable { 16 | sealed interface Style { 17 | data object SLIDER: Style 18 | data object ROW: Style 19 | data object COLUMN: Style 20 | } 21 | } -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/data/CatalogSearchResults.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.data 2 | 3 | import java.util.Collections 4 | import java.util.LinkedList 5 | 6 | class CatalogSearchResults( 7 | items: Collection, 8 | val hasNextPage: Boolean = false 9 | ): LinkedList(items) { 10 | companion object { 11 | private val EMPTY = CatalogSearchResults(Collections.emptyList()) 12 | 13 | @Suppress("UNCHECKED_CAST") 14 | fun empty() = EMPTY as CatalogSearchResults 15 | } 16 | } -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/data/CatalogTag.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.data 2 | 3 | import java.io.Serial 4 | import java.io.Serializable 5 | 6 | @kotlinx.serialization.Serializable 7 | class CatalogTag @JvmOverloads constructor( 8 | val name: String, 9 | val description: String? = null, 10 | val isAdult: Boolean = false, 11 | val isSpoiler: Boolean = false 12 | ) : Serializable { 13 | companion object { 14 | @Serial 15 | private val serialVersionUID = 1L 16 | } 17 | } -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/data/ExternalLink.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.data 2 | 3 | import kotlinx.serialization.Serializable 4 | 5 | @Serializable 6 | data class ExternalLink( 7 | val title: String, 8 | val link: String, 9 | val icon: String 10 | ): java.io.Serializable -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/source/AbstractSource.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.source 2 | 3 | abstract class AbstractSource { 4 | private lateinit var baseContext: Context 5 | 6 | fun attachContext(context: Context) { 7 | if(::baseContext.isInitialized) { 8 | throw IllegalStateException("You cannot attach an Context twice!") 9 | } 10 | 11 | baseContext = context 12 | } 13 | 14 | open val context: Context 15 | get() = baseContext 16 | 17 | /** 18 | * Will be called before unloading this source, so that you can free all your resources. 19 | */ 20 | open fun onUnload() {} 21 | } -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/source/Context.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.source 2 | 3 | import com.mrboomdev.awery.ext.constants.AgeRating 4 | import com.mrboomdev.awery.ext.util.Image 5 | 6 | interface Context { 7 | val id: String 8 | val isEnabled: Boolean 9 | val name: String? 10 | val exception: Throwable? 11 | val icon: Image? 12 | 13 | interface SourceContext: Context { 14 | val manager: SourcesManager 15 | val ageRating: AgeRating? 16 | } 17 | } -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/source/Preferences.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.source 2 | 3 | interface Preferences { 4 | fun getString(key: String): String? 5 | fun getInt(key: String): Int? 6 | fun getBoolean(key: String): Boolean? 7 | fun getFloat(key: String): Float? 8 | 9 | operator fun set(key: String, value: String?) 10 | operator fun set(key: String, value: Int?) 11 | operator fun set(key: String, value: Boolean?) 12 | operator fun set(key: String, value: Float?) 13 | 14 | fun remove(key: String) 15 | fun save() 16 | } -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/source/Source.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.source 2 | 3 | import com.mrboomdev.awery.ext.source.module.Module 4 | 5 | /** 6 | * Source is the provider of feeds, media, subtitles and more... 7 | * An context will be created by the manager, 8 | * so that you won't need to repeat same values multiple times. 9 | */ 10 | abstract class Source: AbstractSource() { 11 | override val context: Context.SourceContext 12 | get() = super.context as Context.SourceContext 13 | 14 | abstract fun createModules(): List 15 | } -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/source/module/CatalogModule.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.source.module 2 | 3 | import com.mrboomdev.awery.ext.data.CatalogFeed 4 | import com.mrboomdev.awery.ext.data.CatalogMedia 5 | import com.mrboomdev.awery.ext.data.CatalogSearchResults 6 | import com.mrboomdev.awery.ext.data.Setting 7 | 8 | interface CatalogModule: Module { 9 | suspend fun createFeeds(): CatalogSearchResults 10 | suspend fun search(filters: List): CatalogSearchResults 11 | } -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/source/module/CommentsModule.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.source.module 2 | 3 | interface CommentsModule: Module { 4 | } -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/source/module/Module.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.source.module 2 | 3 | sealed interface Module -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/source/module/NotificationsModule.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.source.module 2 | 3 | interface NotificationsModule: Module { 4 | } -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/source/module/ProfileModule.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.source.module 2 | 3 | interface ProfileModule: Module { 4 | } -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/source/module/SettingsModule.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.source.module 2 | 3 | import com.mrboomdev.awery.ext.data.Setting 4 | 5 | interface SettingsModule: Module { 6 | fun getSettings(): List 7 | } -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/source/module/StatusModule.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.source.module 2 | 3 | import com.mrboomdev.awery.ext.data.CatalogMedia 4 | 5 | interface StatusModule: Module { 6 | fun onStatus(status: Status) 7 | 8 | sealed class Status(val startTime: Long) { 9 | class Offline( 10 | startTime: Long 11 | ): Status(startTime) 12 | 13 | sealed class Online( 14 | startTime: Long 15 | ): Status(startTime) 16 | 17 | class Watching( 18 | startTime: Long, 19 | val media: CatalogMedia 20 | ): Online(startTime) 21 | } 22 | } -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/source/module/SubtitlesModule.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.source.module 2 | 3 | interface SubtitlesModule: Module { 4 | } -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/source/module/TrackerModule.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.source.module 2 | 3 | interface TrackerModule: Module { 4 | } -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/source/module/WatchModule.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.source.module 2 | 3 | interface WatchModule: Module { 4 | 5 | } -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/util/Image.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.util 2 | 3 | interface Image -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/util/LocaleAware.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.util 2 | 3 | /** 4 | * App will understand that it can use original data from this object to show information to user. 5 | */ 6 | interface LocaleAware -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/util/PendingTask.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.util 2 | 3 | abstract class PendingTask { 4 | abstract val data: T 5 | abstract val size: Long? 6 | } -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/util/Progress.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.util 2 | 3 | data class Progress( 4 | var max: Long = 0, 5 | var value: Long = 0 6 | ) { 7 | fun increment() { 8 | value++ 9 | } 10 | 11 | val isCompleted: Boolean 12 | get() = value >= max 13 | 14 | fun finish() { 15 | value = max 16 | } 17 | } -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/util/exceptions/ExtensionInstallException.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.util.exceptions 2 | 3 | class ExtensionInstallException( 4 | message: String? = null, 5 | cause: Throwable? = null, 6 | val reason: Int 7 | ) : Exception(message, cause) { 8 | companion object { 9 | const val REASON_OTHER = 0 10 | const val REASON_UNSUPPORTED = 1 11 | const val REASON_LOW_STORAGE = 2 12 | const val REASON_NSFW_BLOCKED = 3 13 | const val REASON_INVALID = 4 14 | } 15 | } -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/util/exceptions/ExtensionLoadException.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.util.exceptions 2 | 3 | class ExtensionLoadException( 4 | message: String? = null, 5 | cause: Throwable? = null, 6 | val reason: Int 7 | ) : Exception(message, cause) { 8 | companion object { 9 | const val REASON_OTHER = 0 10 | const val REASON_NSFW_BLOCKED = 1 11 | const val REASON_INVALID = 2 12 | } 13 | } -------------------------------------------------------------------------------- /.old-ext/src/main/kotlin/com/mrboomdev/awery/ext/util/exceptions/ZeroResultsException.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ext.util.exceptions 2 | 3 | import com.mrboomdev.awery.ext.util.LocaleAware 4 | 5 | class ZeroResultsException( 6 | message: String? = null, 7 | cause: Throwable?, 8 | private val detailedMessage: String? = null 9 | ) : Exception(message, cause), LocaleAware { 10 | constructor(message: String? = null, detailedMessage: String? = null): this(message, null, detailedMessage) 11 | override fun getLocalizedMessage() = detailedMessage ?: message 12 | } -------------------------------------------------------------------------------- /.old-shared/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /.old-shared/src/androidMain/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /.old-shared/src/androidMain/kotlin/com/mrboomdev/awery/data/AweryDB.android.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.data 2 | 3 | import androidx.room.Room 4 | import androidx.room.RoomDatabase 5 | import com.mrboomdev.awery.platform.Platform 6 | 7 | internal actual fun AweryDB.Companion.builder(): RoomDatabase.Builder { 8 | return Room.databaseBuilder( 9 | context = Platform, 10 | name = "db" 11 | ) 12 | } -------------------------------------------------------------------------------- /.old-shared/src/androidMain/kotlin/com/mrboomdev/awery/sources/ExtensionsManager.android.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.sources 2 | 3 | import com.mrboomdev.awery.ext.source.SourcesManager 4 | import com.mrboomdev.awery.sources.yomi.YomiManager 5 | import com.mrboomdev.awery.sources.yomi.aniyomi.AniyomiManager 6 | import com.mrboomdev.awery.sources.yomi.tachiyomi.TachiyomiManager 7 | 8 | internal actual fun ExtensionsManager.BootstrapManager.createPlatformSourceManagers(): List { 9 | YomiManager.initYomiShit() 10 | 11 | return listOf( 12 | AniyomiManager(), 13 | TachiyomiManager() 14 | ) 15 | } -------------------------------------------------------------------------------- /.old-shared/src/androidMain/kotlin/com/mrboomdev/awery/ui/utils/BackEffect.android.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.utils 2 | 3 | import android.annotation.SuppressLint 4 | import androidx.activity.compose.PredictiveBackHandler 5 | import androidx.compose.runtime.Composable 6 | import kotlinx.coroutines.flow.Flow 7 | import kotlinx.coroutines.flow.map 8 | 9 | @SuppressLint("NoCollectCallFound") 10 | @Composable 11 | actual fun BackEffect( 12 | isEnabled: Boolean, 13 | onBack: suspend (progress: Flow) -> Unit 14 | ) { 15 | PredictiveBackHandler(isEnabled) { flow -> 16 | onBack(flow.map { it.progress }) 17 | } 18 | } -------------------------------------------------------------------------------- /.old-shared/src/androidMain/kotlin/com/mrboomdev/awery/utils/Logger.android.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.utils 2 | 3 | import android.util.Log 4 | 5 | actual class Logger actual constructor(private val tag: String) { 6 | actual fun d(message: String, t: Throwable?) { 7 | Log.d(tag, message, t) 8 | } 9 | 10 | actual fun w(message: String, t: Throwable?) { 11 | Log.w(tag, message, t) 12 | } 13 | 14 | actual fun e(message: String, t: Throwable?) { 15 | Log.e(tag, message, t) 16 | } 17 | } -------------------------------------------------------------------------------- /.old-shared/src/androidMain/kotlin/eu/kanade/tachiyomi/network/JavaScriptEngine.android.kt: -------------------------------------------------------------------------------- 1 | package eu.kanade.tachiyomi.network 2 | 3 | import app.cash.quickjs.QuickJs 4 | import com.mrboomdev.awery.AndroidContext 5 | import com.mrboomdev.awery.utils.ExtensionSdk 6 | import kotlinx.coroutines.Dispatchers 7 | import kotlinx.coroutines.withContext 8 | 9 | @ExtensionSdk 10 | actual class JavaScriptEngine actual constructor(context: AndroidContext) { 11 | @ExtensionSdk 12 | @Suppress("UNCHECKED_CAST") 13 | actual suspend fun evaluate(script: String) = withContext(Dispatchers.Default) { 14 | QuickJs.create().use { it.evaluate(script) } as T 15 | } 16 | } -------------------------------------------------------------------------------- /.old-shared/src/androidMain/kotlin/eu/kanade/tachiyomi/network/NetworkHelper.android.kt: -------------------------------------------------------------------------------- 1 | package eu.kanade.tachiyomi.network 2 | 3 | import com.mrboomdev.awery.platform.Platform 4 | import eu.kanade.tachiyomi.network.interceptor.CloudflareInterceptor 5 | import eu.kanade.tachiyomi.network.interceptor.UncaughtExceptionInterceptor 6 | import eu.kanade.tachiyomi.network.interceptor.UserAgentInterceptor 7 | import okhttp3.Interceptor 8 | 9 | actual val NetworkHelper.interceptors: List 10 | get() = listOf( 11 | UncaughtExceptionInterceptor(), 12 | UserAgentInterceptor(::defaultUserAgentProvider), 13 | CloudflareInterceptor(Platform, PlatformCookieJar, ::defaultUserAgentProvider) 14 | ) -------------------------------------------------------------------------------- /.old-shared/src/androidMobile/kotlin/com/mrboomdev/awery/ui/AweryRoot.android.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui 2 | 3 | import androidx.compose.runtime.Composable 4 | 5 | @Composable 6 | actual fun AweryRootImpl(content: @Composable () -> Unit) { 7 | AweryRootAndroid(content) 8 | } -------------------------------------------------------------------------------- /.old-shared/src/androidMobile/kotlin/com/mrboomdev/awery/ui/routes/MainRoute.android.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.routes 2 | 3 | import androidx.compose.runtime.Composable 4 | 5 | @Composable 6 | actual fun MainRoute.Content(viewModel: MainRouteViewModel) = DefaultMainRouteContent(viewModel) -------------------------------------------------------------------------------- /.old-shared/src/androidTv/kotlin/com/mrboomdev/awery/ui/routes/MainRoute.android.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.routes 2 | 3 | import androidx.compose.runtime.Composable 4 | import com.mrboomdev.awery.ui.screens.TvMainScreen 5 | 6 | @Composable 7 | actual fun MainRoute.Content() { 8 | TvMainScreen() 9 | } -------------------------------------------------------------------------------- /.old-shared/src/androidTv/kotlin/com/mrboomdev/awery/ui/screens/TvMainScreen.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.screens 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.ui.graphics.Color 5 | import androidx.tv.material3.Text 6 | 7 | @Composable 8 | fun TvMainScreen() { 9 | Text( 10 | text = "Tv main screen", 11 | color = Color.Red 12 | ) 13 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/PlatformAliases.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery 2 | 3 | expect abstract class AndroidContext 4 | expect interface SharedPreferences 5 | expect class AndroidEditText 6 | expect class Preference 7 | expect class PreferenceScreen 8 | expect class SwitchPreferenceCompat 9 | expect abstract class TwoStatePreference 10 | expect class CheckBoxPreference 11 | expect abstract class DialogPreference 12 | expect class EditTextPreference 13 | expect class ListPreference 14 | expect class MultiSelectListPreference 15 | 16 | expect abstract class AndroidUri { 17 | abstract override fun toString(): String 18 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/app/theme/AweryTheme.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.app.theme 2 | 3 | import androidx.compose.runtime.compositionLocalOf 4 | 5 | interface AweryTheme { 6 | val isDark: Boolean 7 | val isAmoled: Boolean 8 | } 9 | 10 | val LocalAweryTheme = compositionLocalOf { 11 | error("No AweryTheme was defined in the scope!") 12 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/data/AweryAppFilters.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.data 2 | 3 | import com.mrboomdev.awery.utils.annotations.AweryExperimentalApi 4 | 5 | object AweryAppFilters { 6 | const val PROCESSOR_MANAGER = "AWERY.PROCESSOR" 7 | 8 | const val FEED_AUTOGENERATE = "AWERY.FEED.AUTOGENERATE" 9 | const val FIRST_FEED_LARGE = "AWERY.FILTER.FIRST_FEED_LARGE" 10 | 11 | @AweryExperimentalApi 12 | const val FEED_CONTINUE = "AWERY.FEED.CONTINUE" 13 | 14 | @AweryExperimentalApi 15 | const val FEED_BOOKMARKS = "AWERY.FEED.BOOKMARKS" 16 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/data/ContentType.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.data 2 | 3 | enum class FileType(val extension: String) { 4 | DANTOTSU_BACKUP(".ani"), 5 | AWERY_BACKUP(".awerybck"), 6 | YOMI_BACKUP(".tachibk"), 7 | APK(".apk"); 8 | 9 | companion object { 10 | fun test(fileName: String): FileType? { 11 | for(type in entries) { 12 | if(fileName.endsWith(type.extension)) { 13 | return type 14 | } 15 | } 16 | 17 | return null 18 | } 19 | } 20 | 21 | } 22 | 23 | enum class ContentType(val mimeType: String) { 24 | JSON("application/json"), 25 | APK("application/vnd.android.package-archive"), 26 | ANY("*/*"); 27 | 28 | override fun toString(): String { 29 | return mimeType 30 | } 31 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/data/dao/ListDao.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.data.dao 2 | 3 | import androidx.room.Dao 4 | import androidx.room.Delete 5 | import androidx.room.Insert 6 | import androidx.room.OnConflictStrategy 7 | import androidx.room.Query 8 | import com.mrboomdev.awery.data.entity.DBList 9 | 10 | @Dao 11 | interface ListDao { 12 | @Query("SELECT * FROM DBList") 13 | suspend fun getAll(): List 14 | 15 | @Query("SELECT * FROM DBList WHERE id = :id") 16 | suspend fun get(id: String): DBList 17 | 18 | @Insert(onConflict = OnConflictStrategy.REPLACE) 19 | suspend fun insert(vararg list: DBList) 20 | 21 | @Delete 22 | suspend fun delete(list: DBList) 23 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/data/dao/MediaDao.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.data.dao 2 | 3 | import androidx.room.Dao 4 | import androidx.room.Delete 5 | import androidx.room.Insert 6 | import androidx.room.OnConflictStrategy 7 | import androidx.room.Query 8 | import com.mrboomdev.awery.data.entity.DBMedia 9 | 10 | @Dao 11 | interface MediaDao { 12 | @Insert(onConflict = OnConflictStrategy.REPLACE) 13 | suspend fun insert(media: DBMedia) 14 | 15 | @Delete 16 | suspend fun delete(media: DBMedia) 17 | 18 | @Query("SELECT * FROM DBMedia WHERE title LIKE :query OR extras LIKE :query") 19 | suspend fun find(query: String?): List 20 | 21 | @Query("SELECT * FROM DBMedia WHERE globalId = :id") 22 | suspend fun get(id: String): DBMedia? 23 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/data/dao/MediaProgressDao.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.data.dao 2 | 3 | import androidx.room.Dao 4 | import androidx.room.Insert 5 | import androidx.room.OnConflictStrategy 6 | import androidx.room.Query 7 | import com.mrboomdev.awery.data.entity.DBMediaProgress 8 | 9 | @Dao 10 | interface MediaProgressDao { 11 | @Insert(onConflict = OnConflictStrategy.REPLACE) 12 | suspend fun insert(progress: DBMediaProgress) 13 | 14 | @Query("SELECT * FROM DBMediaProgress WHERE globalId = :globalId") 15 | suspend fun get(globalId: String): DBMediaProgress 16 | 17 | @Query("SELECT * FROM DBMediaProgress WHERE lists LIKE '%;;;' || :list || ';;;%'") 18 | suspend fun getAllFromList(list: String): List 19 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/data/dao/RepositoryDao.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.data.dao 2 | 3 | import androidx.room.Dao 4 | import androidx.room.Delete 5 | import androidx.room.Insert 6 | import androidx.room.OnConflictStrategy 7 | import androidx.room.Query 8 | import com.mrboomdev.awery.data.entity.DBRepository 9 | 10 | @Dao 11 | interface RepositoryDao { 12 | @Insert(onConflict = OnConflictStrategy.REPLACE) 13 | suspend fun insert(repository: DBRepository) 14 | 15 | @Delete 16 | suspend fun delete(repository: DBRepository) 17 | 18 | @Query("SELECT * FROM DBRepository WHERE manager = :manager") 19 | suspend fun fromManager(manager: String): List 20 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/data/entity/DBList.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.data.entity 2 | 3 | import androidx.room.Entity 4 | import androidx.room.PrimaryKey 5 | 6 | @Entity 7 | class DBList( 8 | @PrimaryKey(true) val id: Long, 9 | val name: String, 10 | val icon: String? = null 11 | ) { 12 | companion object { 13 | const val LIST_HIDDEN = -1L 14 | const val LIST_HISTORY = -2L 15 | } 16 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/data/entity/DBMedia.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.data.entity 2 | 3 | import androidx.room.Entity 4 | import androidx.room.PrimaryKey 5 | import com.mrboomdev.awery.ext.data.CatalogMedia 6 | import com.mrboomdev.awery.ext.util.GlobalId 7 | 8 | @Entity 9 | data class DBMedia( 10 | @PrimaryKey val globalId: String, 11 | val title: String, 12 | val ids: Map, 13 | val extras: Map 14 | ) { 15 | fun asCatalogMedia() = CatalogMedia( 16 | globalId = GlobalId(globalId), 17 | title = title, 18 | ids = ids, 19 | extras = extras 20 | ) 21 | } 22 | 23 | internal fun CatalogMedia.asDBMedia() = DBMedia( 24 | globalId = globalId.value, 25 | title = title, 26 | ids = ids, 27 | extras = extras 28 | ) -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/data/entity/DBRepository.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.data.entity 2 | 3 | import androidx.room.Entity 4 | import androidx.room.PrimaryKey 5 | 6 | @Entity 7 | data class DBRepository( 8 | @PrimaryKey val url: String, 9 | val manager: String, 10 | val isEnabled: Boolean = true, 11 | val title: String? = null, 12 | val description: String? = null, 13 | val author: String? = null 14 | ) -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/data/settings/ComposableSetting.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.data.settings 2 | 3 | import androidx.compose.runtime.Composable 4 | 5 | interface ComposableSetting { 6 | @Composable 7 | fun Content() 8 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/platform/CrashHandler.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.platform 2 | 3 | import java.io.File 4 | 5 | expect object CrashHandler { 6 | fun setup() 7 | val crashLogs: List 8 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/platform/PlatformImage.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.platform 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.ui.graphics.painter.Painter 5 | import com.mrboomdev.awery.ext.util.Image 6 | 7 | expect class PlatformImage: Image { 8 | @Composable 9 | fun rememberPainter(): Painter 10 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/platform/PlatformPreferences.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.platform 2 | 3 | import com.mrboomdev.awery.ext.source.Preferences 4 | 5 | expect object PlatformPreferences: Preferences -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/platform/SettingHandler.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.platform 2 | 3 | import androidx.compose.runtime.compositionLocalOf 4 | import com.mrboomdev.awery.ext.data.Setting 5 | 6 | interface SettingHandler { 7 | fun openScreen(screen: Setting) 8 | fun handleClick(setting: Setting) 9 | } 10 | 11 | val LocalSettingHandler = compositionLocalOf { 12 | throw NotImplementedError("No LocalSettingHandler was provided!") 13 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/sources/SourcesSettingsFactory.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.sources 2 | 3 | import com.mrboomdev.awery.data.settings.InMemorySetting 4 | import com.mrboomdev.awery.data.settings.InMemorySettingsFactory 5 | 6 | class SourcesSettingsFactory: InMemorySettingsFactory { 7 | override fun create(setting: InMemorySetting): InMemorySetting { 8 | throw UnsupportedOperationException("Sync setting creation isn't implemented!") 9 | } 10 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/sources/jvm/JvmEntry.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.sources.jvm 2 | 3 | import kotlinx.serialization.Serializable 4 | 5 | @Serializable 6 | class JvmEntry( 7 | val id: String, 8 | val main: String, 9 | val name: String?, 10 | val icon: String?, 11 | val type: Type, 12 | val ageRating: Int?, 13 | val features: Array 14 | ) { 15 | enum class Type { 16 | SOURCE, MANAGER 17 | } 18 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/ui/components/Feed.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.components 2 | 3 | import androidx.compose.foundation.clickable 4 | import androidx.compose.foundation.layout.Row 5 | import androidx.compose.foundation.layout.Spacer 6 | import androidx.compose.runtime.Composable 7 | import androidx.compose.ui.Alignment 8 | import androidx.compose.ui.Modifier 9 | import com.mrboomdev.awery.ui.utils.update 10 | 11 | @Composable 12 | fun FeedHeader( 13 | modifier: Modifier = Modifier, 14 | title: @Composable () -> Unit, 15 | onClick: (() -> Unit)? = null, 16 | actionButton: (@Composable () -> Unit)? = null 17 | ) { 18 | Row( 19 | modifier = modifier.update { onClick?.let { clickable { it() } } }, 20 | verticalAlignment = Alignment.CenterVertically 21 | ) { 22 | title() 23 | Spacer(Modifier.weight(1f)) 24 | actionButton?.let { it() } 25 | } 26 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/ui/components/LargeCard.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.components 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.ui.Modifier 5 | 6 | @Composable 7 | fun LargeCard( 8 | modifier: Modifier = Modifier 9 | ) { 10 | TODO() 11 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/ui/navigation/JetpackNavigation.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.navigation 2 | 3 | import androidx.compose.runtime.staticCompositionLocalOf 4 | import androidx.navigation.NavHostController 5 | 6 | val LocalNavHostController = staticCompositionLocalOf { 7 | throw NotImplementedError() 8 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/ui/navigation/NavigationExperience.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.navigation 2 | 3 | import org.jetbrains.compose.resources.DrawableResource 4 | 5 | data class NavigationExperience( 6 | val name: String, 7 | val topBar: List, 8 | val navigationBar: List 9 | ) { 10 | data class Item( 11 | val name: String, 12 | val inActiveIcon: DrawableResource, 13 | val activeIcon: DrawableResource = inActiveIcon, 14 | val route: NavigationRoute 15 | ) 16 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/ui/navigation/NavigationRoute.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.navigation 2 | 3 | import com.mrboomdev.awery.ext.data.CatalogFeed 4 | 5 | sealed interface NavigationRoute { 6 | data class Feeds(val feeds: List): NavigationRoute 7 | data class Feed(val feed: CatalogFeed): NavigationRoute 8 | data class Settings(val initialPath: List? = null): NavigationRoute 9 | data object Search: NavigationRoute 10 | data object Notifications: NavigationRoute 11 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/ui/routes/NotificationsRoute.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.routes 2 | 3 | import kotlinx.serialization.Serializable 4 | 5 | @Serializable 6 | class NotificationsRoute -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/ui/routes/PlayerRoute.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.routes 2 | 3 | import com.mrboomdev.awery.ext.data.CatalogMedia 4 | import com.mrboomdev.awery.ext.data.CatalogVideoFile 5 | import kotlinx.serialization.Serializable 6 | 7 | @Serializable 8 | class PlayerRoute( 9 | val media: CatalogMedia, 10 | val initialEpisode: Int, 11 | val episodes: List, 12 | ) -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/ui/routes/ReaderRoute.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.routes 2 | 3 | import kotlinx.serialization.Serializable 4 | 5 | @Serializable 6 | class ReaderRoute( 7 | 8 | ) -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/ui/routes/Routes.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.routes 2 | 3 | import androidx.compose.runtime.Composable 4 | import com.mrboomdev.awery.ext.data.Setting 5 | import com.mrboomdev.awery.ui.screens.SplashScreen 6 | import com.mrboomdev.navigation.core.TypeSafeNavigation 7 | import kotlinx.serialization.Serializable 8 | 9 | val AweryNavigation = TypeSafeNavigation(Routes::class) 10 | 11 | @Serializable 12 | sealed interface Routes { 13 | data object Splash: Routes 14 | data object Main: Routes 15 | data class Settings(val setting: Setting): Routes 16 | } 17 | 18 | @Composable 19 | fun Routes.Splash.Content() = SplashScreen() -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/ui/routes/ThemeRoute.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.routes 2 | 3 | class ThemeRoute -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/ui/routes/WelcomeRoute.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.routes 2 | 3 | class WelcomeRoute -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/ui/screens/player/PlayerViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.screens.player 2 | 3 | import androidx.compose.runtime.getValue 4 | import androidx.compose.runtime.mutableIntStateOf 5 | import androidx.compose.runtime.setValue 6 | import androidx.lifecycle.ViewModel 7 | 8 | class PlayerViewModel( 9 | initialEpisode: Int 10 | ): ViewModel() { 11 | var currentEpisode by mutableIntStateOf(initialEpisode) 12 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/ui/utils/BackEffect.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.utils 2 | 3 | import androidx.compose.runtime.Composable 4 | import kotlinx.coroutines.flow.Flow 5 | 6 | /** 7 | * Will be invoked once an Back Navigation has started. 8 | */ 9 | @Composable 10 | expect fun BackEffect( 11 | isEnabled: Boolean, 12 | onBack: suspend (progress: Flow) -> Unit 13 | ) -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/ui/utils/Toast.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.utils 2 | 3 | import androidx.compose.runtime.staticCompositionLocalOf 4 | import com.dokar.sonner.ToasterState 5 | 6 | val LocalToaster = staticCompositionLocalOf { 7 | throw NotImplementedError("No LocalToast was provided!") 8 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/ui/utils/ViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.utils 2 | 3 | import androidx.lifecycle.SavedStateHandle 4 | import androidx.lifecycle.ViewModel 5 | import androidx.lifecycle.ViewModelProvider 6 | import androidx.lifecycle.createSavedStateHandle 7 | import androidx.lifecycle.viewmodel.CreationExtras 8 | import kotlin.reflect.KClass 9 | 10 | fun viewModelFactory(factory: (SavedStateHandle) -> ViewModel): ViewModelProvider.Factory { 11 | return object : ViewModelProvider.Factory { 12 | override fun create(modelClass: KClass, extras: CreationExtras): T { 13 | @Suppress("UNCHECKED_CAST") 14 | return factory(extras.createSavedStateHandle()) as T 15 | } 16 | } 17 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/utils/ExtensionSdk.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.utils 2 | 3 | /** 4 | * Annotated thing is a member of an public extension sdk, 5 | * so hence it cannot be removed for compatibility reasons. 6 | * 7 | * This code may be unused by the host application, 8 | * but we don't know if extensions do use it or no, so we keep it. 9 | */ 10 | @Retention(AnnotationRetention.SOURCE) 11 | annotation class ExtensionSdk( 12 | val since: String = "" 13 | ) -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/utils/NumberExtensions.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.utils 2 | 3 | import kotlin.math.round 4 | import kotlin.math.roundToLong 5 | 6 | operator fun Number.compareTo(other: Number) = when(this) { 7 | is Int -> compareTo(other.toInt()) 8 | is Float -> compareTo(other.toFloat()) 9 | is Double -> compareTo(other.toDouble()) 10 | is Long -> compareTo(other.toLong()) 11 | else -> throw UnsupportedOperationException("Unsupported number type!") 12 | } 13 | 14 | fun Float.toStrippedString() = if(round(this) == this) { 15 | roundToLong().toString() 16 | } else toString() -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/utils/Weak.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.utils 2 | 3 | import java.lang.ref.WeakReference 4 | import kotlin.reflect.KProperty 5 | 6 | class Weak( 7 | val factory: () -> T 8 | ) { 9 | private var _value: WeakReference? = null 10 | 11 | val value: T 12 | get() = _value?.get() ?: factory().also { 13 | _value = WeakReference(it) 14 | } 15 | } 16 | 17 | fun Weak.getValue(thisRef: Any?, property: KProperty<*>): T { 18 | return value 19 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/utils/annotations/AweryExperimentalApi.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.utils.annotations 2 | 3 | @RequiresOptIn( 4 | message = "Warning! This functionality is still under work and requires an explicit opt in!", 5 | level = RequiresOptIn.Level.ERROR 6 | ) 7 | @Target( 8 | AnnotationTarget.CLASS, 9 | AnnotationTarget.PROPERTY, 10 | AnnotationTarget.FIELD, 11 | AnnotationTarget.VALUE_PARAMETER, 12 | AnnotationTarget.CONSTRUCTOR, 13 | AnnotationTarget.FUNCTION, 14 | AnnotationTarget.PROPERTY_SETTER, 15 | AnnotationTarget.LOCAL_VARIABLE, 16 | AnnotationTarget.TYPEALIAS, 17 | AnnotationTarget.ANNOTATION_CLASS, 18 | AnnotationTarget.PROPERTY_GETTER 19 | ) 20 | annotation class AweryExperimentalApi(val message: String = "") -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/utils/annotations/AweryInternalApi.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.utils.annotations 2 | 3 | @RequiresOptIn( 4 | message = "Warning! Direct usage of this api is a bad practice and may lead to crashes! " + 5 | "Opt in only if you REALLY do know are you doing!", 6 | level = RequiresOptIn.Level.ERROR) 7 | @Target( 8 | AnnotationTarget.CLASS, 9 | AnnotationTarget.PROPERTY, 10 | AnnotationTarget.FIELD, 11 | AnnotationTarget.VALUE_PARAMETER, 12 | AnnotationTarget.CONSTRUCTOR, 13 | AnnotationTarget.FUNCTION, 14 | AnnotationTarget.PROPERTY_SETTER) 15 | annotation class AweryInternalApi -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/com/mrboomdev/awery/utils/exceptions/BotSecurityBypassException.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.utils.exceptions 2 | 3 | import java.io.IOException 4 | 5 | class BotSecurityBypassException( 6 | val blocker: String, 7 | message: String? = null, 8 | cause: Throwable? = null 9 | ): IOException(message, cause) { 10 | companion object { 11 | const val CLOUDFLARE = "Cloudflare" 12 | } 13 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/eu/kanade/tachiyomi/AppInfo.kt: -------------------------------------------------------------------------------- 1 | package eu.kanade.tachiyomi 2 | 3 | import com.mrboomdev.awery.generated.* 4 | import com.mrboomdev.awery.utils.ExtensionSdk 5 | 6 | @ExtensionSdk 7 | object AppInfo { 8 | 9 | @ExtensionSdk 10 | fun getVersionCode(): Int = BuildKonfig.VERSION_CODE 11 | 12 | 13 | @ExtensionSdk 14 | fun getVersionName(): String = BuildKonfig.VERSION_NAME 15 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/eu/kanade/tachiyomi/animesource/AnimeSourceFactory.kt: -------------------------------------------------------------------------------- 1 | package eu.kanade.tachiyomi.animesource 2 | 3 | import com.mrboomdev.awery.utils.ExtensionSdk 4 | 5 | @ExtensionSdk 6 | interface AnimeSourceFactory { 7 | @ExtensionSdk 8 | fun createSources(): List 9 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/eu/kanade/tachiyomi/animesource/ConfigurableAnimeSource.kt: -------------------------------------------------------------------------------- 1 | package eu.kanade.tachiyomi.animesource 2 | 3 | import com.mrboomdev.awery.PreferenceScreen 4 | import com.mrboomdev.awery.utils.ExtensionSdk 5 | 6 | @ExtensionSdk 7 | interface ConfigurableAnimeSource { 8 | @ExtensionSdk 9 | fun setupPreferenceScreen(screen: PreferenceScreen) 10 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/eu/kanade/tachiyomi/animesource/UnmeteredSource.kt: -------------------------------------------------------------------------------- 1 | package eu.kanade.tachiyomi.animesource 2 | 3 | import com.mrboomdev.awery.utils.ExtensionSdk 4 | 5 | @ExtensionSdk 6 | interface UnmeteredSource -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/eu/kanade/tachiyomi/animesource/model/AnimeFilterList.kt: -------------------------------------------------------------------------------- 1 | package eu.kanade.tachiyomi.animesource.model 2 | 3 | import com.mrboomdev.awery.utils.ExtensionSdk 4 | 5 | @ExtensionSdk 6 | data class AnimeFilterList(val list: List>) : List> by list { 7 | 8 | constructor(vararg fs: AnimeFilter<*>) : this(if (fs.isNotEmpty()) fs.asList() else emptyList()) 9 | 10 | override fun equals(other: Any?): Boolean { 11 | return false 12 | } 13 | 14 | override fun hashCode(): Int { 15 | return list.hashCode() 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/eu/kanade/tachiyomi/animesource/model/AnimeUpdateStrategy.kt: -------------------------------------------------------------------------------- 1 | package eu.kanade.tachiyomi.animesource.model 2 | 3 | import com.mrboomdev.awery.utils.ExtensionSdk 4 | 5 | @ExtensionSdk 6 | enum class AnimeUpdateStrategy { 7 | ALWAYS_UPDATE, 8 | @Suppress("unused") 9 | ONLY_FETCH_ONCE 10 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/eu/kanade/tachiyomi/animesource/model/AnimesPage.kt: -------------------------------------------------------------------------------- 1 | package eu.kanade.tachiyomi.animesource.model 2 | 3 | import com.mrboomdev.awery.utils.ExtensionSdk 4 | 5 | @ExtensionSdk 6 | data class AnimesPage(val animes: List, val hasNextPage: Boolean) 7 | -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/eu/kanade/tachiyomi/animesource/model/SEpisode.kt: -------------------------------------------------------------------------------- 1 | package eu.kanade.tachiyomi.animesource.model 2 | 3 | import com.mrboomdev.awery.utils.ExtensionSdk 4 | import java.io.Serializable 5 | 6 | @Suppress("PropertyName") 7 | @ExtensionSdk 8 | interface SEpisode : Serializable { 9 | var url: String 10 | var name: String 11 | var date_upload: Long 12 | var episode_number: Float 13 | var scanlator: String? 14 | 15 | companion object { 16 | @ExtensionSdk 17 | fun create(): SEpisode = object : SEpisode { 18 | override lateinit var url: String 19 | override lateinit var name: String 20 | override var date_upload: Long = 0 21 | override var episode_number: Float = -1F 22 | override var scanlator: String? = null 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/eu/kanade/tachiyomi/animesource/model/Video.kt: -------------------------------------------------------------------------------- 1 | package eu.kanade.tachiyomi.animesource.model 2 | 3 | import com.mrboomdev.awery.AndroidUri 4 | import com.mrboomdev.awery.utils.ExtensionSdk 5 | import okhttp3.Headers 6 | 7 | @ExtensionSdk 8 | data class Track(val url: String, val lang: String) 9 | 10 | @ExtensionSdk 11 | data class Video( 12 | val url: String, 13 | val quality: String, 14 | var videoUrl: String?, 15 | val headers: Headers? = null, 16 | val subtitleTracks: List = emptyList(), 17 | val audioTracks: List = emptyList(), 18 | ) { 19 | @ExtensionSdk 20 | constructor( 21 | url: String, 22 | quality: String, 23 | videoUrl: String?, 24 | @Suppress("UNUSED_PARAMETER") uri: AndroidUri? = null, 25 | headers: Headers? = null, 26 | ) : this(url, quality, videoUrl, headers) 27 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/eu/kanade/tachiyomi/network/JavaScriptEngine.kt: -------------------------------------------------------------------------------- 1 | package eu.kanade.tachiyomi.network 2 | 3 | import com.mrboomdev.awery.AndroidContext 4 | import com.mrboomdev.awery.utils.ExtensionSdk 5 | 6 | @ExtensionSdk 7 | expect class JavaScriptEngine(context: AndroidContext) { 8 | @ExtensionSdk 9 | suspend fun evaluate(script: String): T 10 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/eu/kanade/tachiyomi/network/PlatformCookieJar.kt: -------------------------------------------------------------------------------- 1 | package eu.kanade.tachiyomi.network 2 | 3 | import okhttp3.CookieJar 4 | 5 | expect object PlatformCookieJar: CookieJar { 6 | suspend fun clear() 7 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/eu/kanade/tachiyomi/network/interceptor/UncaughtExceptionInterceptor.kt: -------------------------------------------------------------------------------- 1 | package eu.kanade.tachiyomi.network.interceptor 2 | 3 | import okhttp3.Interceptor 4 | import okhttp3.Response 5 | import java.io.IOException 6 | 7 | /** 8 | * Catches any uncaught exceptions from later in the chain and rethrows as a non-fatal 9 | * IOException to avoid catastrophic failure. 10 | * 11 | * This should be the first interceptor in the client. 12 | * 13 | * See https://square.github.io/okhttp/4.x/okhttp/okhttp3/-interceptor/ 14 | */ 15 | class UncaughtExceptionInterceptor: Interceptor { 16 | override fun intercept(chain: Interceptor.Chain): Response { 17 | return try { 18 | chain.proceed(chain.request()) 19 | } catch(e: Exception) { 20 | if(e is IOException) throw e else throw IOException(e) 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/eu/kanade/tachiyomi/network/interceptor/UserAgentInterceptor.kt: -------------------------------------------------------------------------------- 1 | package eu.kanade.tachiyomi.network.interceptor 2 | 3 | import okhttp3.Interceptor 4 | import okhttp3.Response 5 | 6 | class UserAgentInterceptor( 7 | private val defaultUserAgentProvider: () -> String, 8 | ) : Interceptor { 9 | override fun intercept(chain: Interceptor.Chain): Response { 10 | val originalRequest = chain.request() 11 | 12 | return if(originalRequest.header("User-Agent").isNullOrEmpty()) { 13 | val newRequest = originalRequest 14 | .newBuilder() 15 | .removeHeader("User-Agent") 16 | .addHeader("User-Agent", defaultUserAgentProvider()) 17 | .build() 18 | 19 | chain.proceed(newRequest) 20 | } else { 21 | chain.proceed(originalRequest) 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/eu/kanade/tachiyomi/source/ConfigurableSource.kt: -------------------------------------------------------------------------------- 1 | package eu.kanade.tachiyomi.source 2 | 3 | import com.mrboomdev.awery.PreferenceScreen 4 | import com.mrboomdev.awery.utils.ExtensionSdk 5 | 6 | @ExtensionSdk 7 | interface ConfigurableSource : Source { 8 | @ExtensionSdk 9 | fun setupPreferenceScreen(screen: PreferenceScreen) 10 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/eu/kanade/tachiyomi/source/SourceFactory.kt: -------------------------------------------------------------------------------- 1 | package eu.kanade.tachiyomi.source 2 | 3 | import com.mrboomdev.awery.utils.ExtensionSdk 4 | 5 | /** 6 | * A factory for creating sources at runtime. 7 | */ 8 | @ExtensionSdk 9 | interface SourceFactory { 10 | /** 11 | * Create a new copy of the sources 12 | * @return The created sources 13 | */ 14 | @ExtensionSdk 15 | fun createSources(): List 16 | } 17 | -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/eu/kanade/tachiyomi/source/UnmeteredSource.kt: -------------------------------------------------------------------------------- 1 | package eu.kanade.tachiyomi.source 2 | 3 | import com.mrboomdev.awery.utils.ExtensionSdk 4 | 5 | /** 6 | * A source that explicitly doesn't require traffic considerations. 7 | * 8 | * This typically applies for self-hosted sources. 9 | */ 10 | @ExtensionSdk 11 | interface UnmeteredSource -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/FilterList.kt: -------------------------------------------------------------------------------- 1 | package eu.kanade.tachiyomi.source.model 2 | 3 | import com.mrboomdev.awery.utils.ExtensionSdk 4 | 5 | @ExtensionSdk 6 | data class FilterList(val list: List>) : List> by list { 7 | 8 | constructor(vararg fs: Filter<*>) : this(if (fs.isNotEmpty()) fs.asList() else emptyList()) 9 | 10 | override fun equals(other: Any?): Boolean { 11 | return false 12 | } 13 | 14 | override fun hashCode(): Int { 15 | return list.hashCode() 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/MangasPage.kt: -------------------------------------------------------------------------------- 1 | package eu.kanade.tachiyomi.source.model 2 | 3 | import com.mrboomdev.awery.utils.ExtensionSdk 4 | 5 | @ExtensionSdk 6 | data class MangasPage(val mangas: List, val hasNextPage: Boolean) 7 | -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/Page.kt: -------------------------------------------------------------------------------- 1 | package eu.kanade.tachiyomi.source.model 2 | 3 | import com.mrboomdev.awery.AndroidUri 4 | import com.mrboomdev.awery.utils.ExtensionSdk 5 | 6 | @ExtensionSdk 7 | open class Page( 8 | val index: Int, 9 | val url: String = "", 10 | var imageUrl: String? = null, 11 | @Transient var uri: AndroidUri? = null, // Deprecated but can't be deleted due to extensions 12 | ) -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/SChapter.kt: -------------------------------------------------------------------------------- 1 | package eu.kanade.tachiyomi.source.model 2 | 3 | import com.mrboomdev.awery.utils.ExtensionSdk 4 | import java.io.Serializable 5 | 6 | @ExtensionSdk 7 | interface SChapter : Serializable { 8 | var url: String 9 | var name: String 10 | var date_upload: Long 11 | var chapter_number: Float 12 | var scanlator: String? 13 | 14 | companion object { 15 | @ExtensionSdk 16 | fun create(): SChapter = object : SChapter { 17 | override lateinit var url: String 18 | override lateinit var name: String 19 | override var date_upload: Long = 0 20 | override var chapter_number: Float = -1f 21 | override var scanlator: String? = null 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/eu/kanade/tachiyomi/source/model/UpdateStrategy.kt: -------------------------------------------------------------------------------- 1 | package eu.kanade.tachiyomi.source.model 2 | 3 | import com.mrboomdev.awery.utils.ExtensionSdk 4 | 5 | /** 6 | * Define the update strategy for a single [SManga]. 7 | * The strategy used will only take effect on the library update. 8 | * 9 | * @since extensions-lib 1.4 10 | */ 11 | @ExtensionSdk 12 | enum class UpdateStrategy { 13 | /** 14 | * Series marked as always update will be included in the library 15 | * update if they aren't excluded by additional restrictions. 16 | */ 17 | ALWAYS_UPDATE, 18 | 19 | /** 20 | * Series marked as only fetch once will be automatically skipped 21 | * during library updates. Useful for cases where the series is previously 22 | * known to be finished and have only a single chapter, for example. 23 | */ 24 | ONLY_FETCH_ONCE, 25 | } 26 | -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/eu/kanade/tachiyomi/util/JsoupExtensions.kt: -------------------------------------------------------------------------------- 1 | package eu.kanade.tachiyomi.util 2 | 3 | import com.mrboomdev.awery.utils.ExtensionSdk 4 | import okhttp3.Response 5 | import org.jsoup.Jsoup 6 | import org.jsoup.nodes.Document 7 | 8 | /** 9 | * Returns a Jsoup document for this response. 10 | * @param html the body of the response. Use only if the body was read before calling this method. 11 | */ 12 | @ExtensionSdk 13 | fun Response.asJsoup(html: String? = null): Document { 14 | return Jsoup.parse(html ?: body.string(), request.url.toString()) 15 | } -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/mihonx/source/utils/preferences.kt: -------------------------------------------------------------------------------- 1 | package mihonx.source.utils 2 | 3 | import com.mrboomdev.awery.SharedPreferences 4 | import com.mrboomdev.awery.platform.Platform 5 | import com.mrboomdev.awery.utils.ExtensionSdk 6 | import eu.kanade.tachiyomi.source.Source 7 | 8 | @ExtensionSdk(since = "1.6") 9 | fun Source.sourcePreferences(): SharedPreferences = sourcePreferences(id) 10 | 11 | @ExtensionSdk(since = "1.6") 12 | fun sourcePreferences(id: Long): SharedPreferences = Platform.getSharedPreferences(id.toString()) -------------------------------------------------------------------------------- /.old-shared/src/commonMain/kotlin/mihonx/utils/json.kt: -------------------------------------------------------------------------------- 1 | package mihonx.utils 2 | 3 | import com.mrboomdev.awery.utils.ExtensionSdk 4 | import kotlinx.serialization.json.Json 5 | 6 | /** 7 | * @since extensions-lib 1.6 8 | */ 9 | @ExtensionSdk 10 | val defaultJson: Json = Json { 11 | ignoreUnknownKeys = true 12 | explicitNulls = false 13 | } -------------------------------------------------------------------------------- /.old-shared/src/desktopMain/kotlin/com/mrboomdev/awery/data/AweryDB.desktop.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.data 2 | 3 | import androidx.room.Room 4 | import androidx.room.RoomDatabase 5 | 6 | internal actual fun AweryDB.Companion.builder(): RoomDatabase.Builder { 7 | return Room.databaseBuilder(name = "db") 8 | } -------------------------------------------------------------------------------- /.old-shared/src/desktopMain/kotlin/com/mrboomdev/awery/platform/PlatformImage.desktop.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.platform 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.ui.graphics.painter.Painter 5 | import com.mrboomdev.awery.ext.util.Image 6 | 7 | actual class PlatformImage : Image { 8 | @Composable 9 | actual fun rememberPainter(): Painter { 10 | TODO("Not yet implemented") 11 | } 12 | } -------------------------------------------------------------------------------- /.old-shared/src/desktopMain/kotlin/com/mrboomdev/awery/platform/PlatformResources.desktop.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.platform 2 | 3 | import org.jetbrains.compose.resources.ExperimentalResourceApi 4 | import org.jetbrains.compose.resources.ResourceEnvironment 5 | 6 | actual object PlatformResources { 7 | @OptIn(ExperimentalResourceApi::class) 8 | internal actual var resourceEnvironment: ResourceEnvironment? = null 9 | 10 | fun load() { 11 | clearCache() 12 | throw NotImplementedError() 13 | } 14 | } -------------------------------------------------------------------------------- /.old-shared/src/desktopMain/kotlin/com/mrboomdev/awery/sources/ExtensionsManager.desktop.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.sources 2 | 3 | import com.mrboomdev.awery.ext.source.SourcesManager 4 | 5 | internal actual fun ExtensionsManager.BootstrapManager.createPlatformSourceManagers(): List { 6 | return emptyList() 7 | } -------------------------------------------------------------------------------- /.old-shared/src/desktopMain/kotlin/com/mrboomdev/awery/ui/AweryRoot.desktop.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui 2 | 3 | import androidx.compose.runtime.Composable 4 | import com.mrboomdev.awery.ui.routes.BaseRoute 5 | 6 | @Composable 7 | internal actual fun AweryRootImpl( 8 | content: @Composable () -> Unit 9 | ) { 10 | TODO() 11 | } -------------------------------------------------------------------------------- /.old-shared/src/desktopMain/kotlin/com/mrboomdev/awery/ui/components/VideoPlayer.desktop.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.components 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.compose.ui.Modifier 5 | 6 | @Composable 7 | actual fun VideoPlayer( 8 | modifier: Modifier, 9 | url: String, 10 | state: VideoPlayerState 11 | ) { 12 | throw NotImplementedError() 13 | } -------------------------------------------------------------------------------- /.old-shared/src/desktopMain/kotlin/com/mrboomdev/awery/ui/routes/MainRoute.desktop.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.routes 2 | 3 | import androidx.compose.runtime.Composable 4 | 5 | @Composable 6 | actual fun MainRoute.Content(viewModel: MainRouteViewModel) = DefaultMainRouteContent(viewModel) -------------------------------------------------------------------------------- /.old-shared/src/desktopMain/kotlin/com/mrboomdev/awery/ui/screens/BrowserScreen.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.screens 2 | 3 | import androidx.compose.runtime.Composable 4 | 5 | @Composable 6 | fun BrowserScreen() { 7 | 8 | } -------------------------------------------------------------------------------- /.old-shared/src/desktopMain/kotlin/com/mrboomdev/awery/ui/utils/BackEffect.desktop.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.utils 2 | 3 | import androidx.compose.runtime.Composable 4 | import kotlinx.coroutines.flow.Flow 5 | 6 | @Composable 7 | actual fun BackEffect( 8 | isEnabled: Boolean, 9 | onBack: suspend (progress: Flow) -> Unit 10 | ) { 11 | // TODO: Handle some back key event and then invoke onBack with 1 12 | } -------------------------------------------------------------------------------- /.old-shared/src/desktopMain/kotlin/com/mrboomdev/awery/utils/Logger.desktop.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.utils 2 | 3 | import java.util.logging.Level 4 | import java.util.logging.Logger 5 | 6 | actual class Logger actual constructor(tag: String) { 7 | private val logger = Logger.getLogger(tag) 8 | 9 | actual fun d(message: String, t: Throwable?) { 10 | logger.log(Level.FINE, message, t) 11 | } 12 | 13 | actual fun w(message: String, t: Throwable?) { 14 | logger.log(Level.WARNING, message, t) 15 | } 16 | 17 | actual fun e(message: String, t: Throwable?) { 18 | logger.log(Level.SEVERE, message, t) 19 | } 20 | } -------------------------------------------------------------------------------- /.old-shared/src/desktopMain/kotlin/eu/kanade/tachiyomi/network/JavaScriptEngine.desktop.kt: -------------------------------------------------------------------------------- 1 | package eu.kanade.tachiyomi.network 2 | 3 | import com.mrboomdev.awery.AndroidContext 4 | import com.mrboomdev.awery.utils.ExtensionSdk 5 | import com.whl.quickjs.wrapper.QuickJSContext 6 | import kotlinx.coroutines.Dispatchers 7 | import kotlinx.coroutines.withContext 8 | 9 | @ExtensionSdk 10 | actual class JavaScriptEngine actual constructor(context: AndroidContext) { 11 | @ExtensionSdk 12 | @Suppress("UNCHECKED_CAST") 13 | actual suspend fun evaluate(script: String) = withContext(Dispatchers.Default) { 14 | QuickJSContext.create().use { it.evaluate(script) } as T 15 | } 16 | } -------------------------------------------------------------------------------- /.old-shared/src/desktopMain/kotlin/eu/kanade/tachiyomi/network/NetworkHelper.desktop.kt: -------------------------------------------------------------------------------- 1 | package eu.kanade.tachiyomi.network 2 | 3 | import okhttp3.Interceptor 4 | 5 | actual val NetworkHelper.interceptors: List 6 | get() = emptyList() -------------------------------------------------------------------------------- /.old-shared/src/desktopMain/kotlin/eu/kanade/tachiyomi/network/PlatformCookieJar.desktop.kt: -------------------------------------------------------------------------------- 1 | package eu.kanade.tachiyomi.network 2 | 3 | import okhttp3.Cookie 4 | import okhttp3.CookieJar 5 | import okhttp3.HttpUrl 6 | 7 | actual object PlatformCookieJar: CookieJar { 8 | override fun loadForRequest(url: HttpUrl): List { 9 | TODO("Not yet implemented") 10 | } 11 | 12 | override fun saveFromResponse(url: HttpUrl, cookies: List) { 13 | TODO("Not yet implemented") 14 | } 15 | 16 | actual suspend fun clear() { 17 | TODO() 18 | } 19 | } -------------------------------------------------------------------------------- /app/src/androidMain/kotlin/com/mrboomdev/awery/app/ApplicationImpl.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.app 2 | 3 | import android.app.Application 4 | import com.mrboomdev.awery.core.Awery 5 | import com.mrboomdev.awery.core.context 6 | 7 | class ApplicationImpl: Application() { 8 | init { 9 | Awery.context = this 10 | } 11 | } -------------------------------------------------------------------------------- /app/src/androidMain/kotlin/com/mrboomdev/awery/app/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.app 2 | 3 | import android.os.Bundle 4 | import androidx.activity.ComponentActivity 5 | import androidx.activity.compose.setContent 6 | import androidx.activity.enableEdgeToEdge 7 | import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen 8 | import com.mrboomdev.awery.ui.App 9 | import com.mrboomdev.awery.ui.Routes 10 | 11 | class MainActivity: ComponentActivity() { 12 | override fun onCreate(savedInstanceState: Bundle?) { 13 | super.onCreate(savedInstanceState) 14 | installSplashScreen() 15 | enableEdgeToEdge() 16 | 17 | setContent { 18 | App(Routes.Main) 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /app/src/androidMain/res/mipmap-v26/ic_banner.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/androidMain/res/mipmap-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/androidMain/res/mipmap-xhdpi/ic_banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/app/src/androidMain/res/mipmap-xhdpi/ic_banner.png -------------------------------------------------------------------------------- /app/src/androidMain/res/mipmap-xhdpi/ic_banner_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/app/src/androidMain/res/mipmap-xhdpi/ic_banner_foreground.png -------------------------------------------------------------------------------- /app/src/androidMain/res/mipmap/ic_background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/app/src/androidMain/res/mipmap/ic_background.png -------------------------------------------------------------------------------- /app/src/androidMain/res/mipmap/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/app/src/androidMain/res/mipmap/ic_launcher.png -------------------------------------------------------------------------------- /app/src/androidMain/res/mipmap/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/app/src/androidMain/res/mipmap/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/androidMain/res/resources.properties: -------------------------------------------------------------------------------- 1 | unqualifiedResLocale=en -------------------------------------------------------------------------------- /app/src/androidMain/res/values-night/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | -------------------------------------------------------------------------------- /app/src/androidMain/res/values/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | -------------------------------------------------------------------------------- /build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | alias(libs.plugins.android.app) apply false 3 | alias(libs.plugins.android.library) apply false 4 | alias(libs.plugins.kotlin.jvm) apply false 5 | alias(libs.plugins.kotlin.multiplatform) apply false 6 | alias(libs.plugins.android.kotlin) apply false 7 | alias(libs.plugins.compose.compiler) apply false 8 | alias(libs.plugins.compose) apply false 9 | alias(libs.plugins.buildkonfig) apply false 10 | } 11 | 12 | fun getGitCommitHash(): String { 13 | return project.providers.exec { 14 | commandLine("git", "rev-parse", "--short", "HEAD") 15 | }.standardOutput.asText.get().trim() 16 | } 17 | 18 | ext["gitCommitHash"] = getGitCommitHash().toString() 19 | ext["versionCode"] = properties["awery.app.versionCode"]!!.toString() 20 | ext["versionName"] = "${properties["awery.app.versionName"]!!}-${getGitCommitHash()}" -------------------------------------------------------------------------------- /compose-stability.txt: -------------------------------------------------------------------------------- 1 | com.mrboomdev.awery.ext.source.Context 2 | com.mrboomdev.awery.ext.data.CatalogSearchResults<_> 3 | com.mrboomdev.awery.sources.jvm.JvmEntry 4 | com.mrboomdev.awery.ext.util.Image 5 | com.mrboomdev.awery.ext.util.exceptions.** -------------------------------------------------------------------------------- /core/src/commonMain/kotlin/com/mrboomdev/awery/core/Awery.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.core 2 | 3 | object Awery { 4 | /** 5 | * Checks whatever device is an TV or not. 6 | */ 7 | val Awery.TV: Boolean 8 | get() = isTv() 9 | } 10 | 11 | internal expect fun isTv(): Boolean -------------------------------------------------------------------------------- /core/src/commonMain/kotlin/com/mrboomdev/awery/core/utils/StringUtils.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.core.utils 2 | 3 | import kotlin.reflect.KClass 4 | import kotlin.jvm.java 5 | 6 | fun > String.toEnumOrNull(clazz: KClass): T? { 7 | return try { 8 | java.lang.Enum.valueOf(clazz.java as Class, this) 9 | } catch(_: IllegalArgumentException) { 10 | null 11 | } 12 | } 13 | 14 | fun > String.toEnum(clazz: KClass) = toEnumOrNull(clazz)!! -------------------------------------------------------------------------------- /core/src/desktopMain/kotlin/com/mrboomdev/awery/core/Awery.desktop.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.core 2 | 3 | actual fun isTv(): Boolean { 4 | return false 5 | } -------------------------------------------------------------------------------- /data/src/androidMain/kotlin/com/mrboomdev/awery/data/settings/Setting.android.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.data.settings 2 | 3 | import com.mrboomdev.awery.core.Awery 4 | import com.mrboomdev.awery.core.context 5 | import com.russhwolf.settings.ObservableSettings 6 | import com.russhwolf.settings.Settings 7 | import com.russhwolf.settings.SharedPreferencesSettings 8 | 9 | actual fun platformSettings(): ObservableSettings { 10 | return SharedPreferencesSettings( 11 | delegate = Awery.context.getSharedPreferences("Awery", 0), 12 | commit = true 13 | ) 14 | } -------------------------------------------------------------------------------- /data/src/commonMain/kotlin/com/mrboomdev/awery/data/gawaii/AniyomiGawaii.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.data.gawaii 2 | 3 | class AniyomiGawaii: Gawaii { 4 | override val packageName = "TODO" 5 | } -------------------------------------------------------------------------------- /data/src/commonMain/kotlin/com/mrboomdev/awery/data/gawaii/CloudstreamGawaii.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.data.gawaii 2 | 3 | class CloudstreamGawaii: Gawaii { 4 | override val packageName = "TODO" 5 | } -------------------------------------------------------------------------------- /data/src/commonMain/kotlin/com/mrboomdev/awery/data/gawaii/DantotsuGawaii.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.data.gawaii 2 | 3 | class DantotsuGawaii: Gawaii { 4 | override val packageName = "TODO" 5 | } -------------------------------------------------------------------------------- /data/src/commonMain/kotlin/com/mrboomdev/awery/data/gawaii/Gawaii.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.data.gawaii 2 | 3 | /** 4 | * This class allows users to migrate their data from other apps. 5 | */ 6 | interface Gawaii { 7 | val packageName: String 8 | } -------------------------------------------------------------------------------- /data/src/commonMain/kotlin/com/mrboomdev/awery/data/gawaii/MihonGawaii.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.data.gawaii 2 | 3 | class MihonGawaii: Gawaii { 4 | override val packageName = "TODO" 5 | } -------------------------------------------------------------------------------- /data/src/commonMain/kotlin/com/mrboomdev/awery/data/settings/Settings.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.data.settings 2 | 3 | object Settings { 4 | val darkTheme by setting(DarkTheme.AUTO) 5 | val amoledTheme by setting(false) 6 | val devMode by setting(false) 7 | val checkAppUpdates by setting(true) 8 | val autoUpdateExtensions by setting(true) 9 | val externalPlayer by setting(true) 10 | val playbackDoubleTapRewind by setting(15) 11 | 12 | enum class DarkTheme { 13 | AUTO, ON, OFF 14 | } 15 | } -------------------------------------------------------------------------------- /data/src/desktopMain/kotlin/com/mrboomdev/awery/data/settings/Setting.desktop.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.data.settings 2 | 3 | import com.russhwolf.settings.ObservableSettings 4 | import com.russhwolf.settings.Settings 5 | 6 | actual fun platformSettings(): ObservableSettings { 7 | return TODO() 8 | } -------------------------------------------------------------------------------- /docs/app_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/docs/app_icon.png -------------------------------------------------------------------------------- /docs/banner.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/docs/banner.webp -------------------------------------------------------------------------------- /docs/screenshot1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/docs/screenshot1.jpg -------------------------------------------------------------------------------- /extension/core-api/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import com.android.build.api.dsl.androidLibrary 2 | 3 | plugins { 4 | alias(libs.plugins.kotlin.multiplatform) 5 | alias(libs.plugins.android.library) 6 | } 7 | 8 | kotlin { 9 | applyDefaultHierarchyTemplate() 10 | jvm() 11 | 12 | androidLibrary { 13 | namespace = "com.mrboomdev.awery.extension.api" 14 | compileSdk = 35 15 | minSdk = 25 16 | } 17 | } -------------------------------------------------------------------------------- /extension/loaders/android-compat/build.gradle.kts: -------------------------------------------------------------------------------- 1 | import com.android.build.api.dsl.androidLibrary 2 | 3 | plugins { 4 | alias(libs.plugins.kotlin.multiplatform) 5 | alias(libs.plugins.android.library) 6 | } 7 | 8 | kotlin { 9 | applyDefaultHierarchyTemplate() 10 | jvm("desktop") 11 | 12 | androidLibrary { 13 | namespace = "com.mrboomdev.awery.extension.loaders.androidcompat" 14 | compileSdk = 35 15 | minSdk = 25 16 | } 17 | 18 | compilerOptions { 19 | freeCompilerArgs = listOf("-Xexpect-actual-classes") 20 | } 21 | } -------------------------------------------------------------------------------- /extension/loaders/android-compat/src/androidMain/kotlin/Aliases.android.kt: -------------------------------------------------------------------------------- 1 | actual typealias Context = android.content.Context -------------------------------------------------------------------------------- /extension/loaders/android-compat/src/commonMain/kotlin/Aliases.kt: -------------------------------------------------------------------------------- 1 | expect abstract class Context -------------------------------------------------------------------------------- /extension/loaders/android-compat/src/desktopMain/kotlin/Aliases.desktop.kt: -------------------------------------------------------------------------------- 1 | actual typealias Context = android.content.Context -------------------------------------------------------------------------------- /extension/loaders/android-compat/src/desktopMain/kotlin/android/content/Context.kt: -------------------------------------------------------------------------------- 1 | package android.content 2 | 3 | abstract class Context {} -------------------------------------------------------------------------------- /extension/loaders/src/commonMain/kotlin/com/mrboomdev/awery/extension/loaders/ExtensionLoader.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.extension.loaders 2 | 3 | interface ExtensionLoader { 4 | fun load(id: String) 5 | } -------------------------------------------------------------------------------- /extension/platform-api/build.gradle.kts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/extension/platform-api/build.gradle.kts -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip 4 | networkTimeout=10000 5 | validateDistributionUrl=true 6 | zipStoreBase=GRADLE_USER_HOME 7 | zipStorePath=wrapper/dists 8 | -------------------------------------------------------------------------------- /resources/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | alias(libs.plugins.kotlin.multiplatform) 3 | alias(libs.plugins.compose) 4 | alias(libs.plugins.compose.compiler) 5 | } 6 | 7 | kotlin { 8 | applyDefaultHierarchyTemplate() 9 | jvm() 10 | 11 | sourceSets { 12 | commonMain.dependencies { 13 | implementation(compose.runtime) 14 | implementation(compose.foundation) 15 | implementation(compose.components.resources) 16 | } 17 | } 18 | } 19 | 20 | compose.resources { 21 | packageOfResClass = "com.mrboomdev.awery.resources" 22 | publicResClass = true 23 | } -------------------------------------------------------------------------------- /resources/src/commonMain/composeResources/drawable/ic_amp_stories_filled.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /resources/src/commonMain/composeResources/drawable/ic_back.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /resources/src/commonMain/composeResources/drawable/ic_bookmark_filled.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /resources/src/commonMain/composeResources/drawable/ic_collections_bookmark_filled.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /resources/src/commonMain/composeResources/drawable/ic_collections_bookmark_outlined.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /resources/src/commonMain/composeResources/drawable/ic_download.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /resources/src/commonMain/composeResources/drawable/ic_fast_forward_outlined.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /resources/src/commonMain/composeResources/drawable/ic_fullscreen.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /resources/src/commonMain/composeResources/drawable/ic_home_filled.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /resources/src/commonMain/composeResources/drawable/ic_home_outlined.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /resources/src/commonMain/composeResources/drawable/ic_movie_filled.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /resources/src/commonMain/composeResources/drawable/ic_movie_outlined.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /resources/src/commonMain/composeResources/drawable/ic_pip_outlined.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /resources/src/commonMain/composeResources/drawable/ic_play_filled.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /resources/src/commonMain/composeResources/drawable/ic_send_outlined.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /resources/src/commonMain/composeResources/drawable/ic_storage.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /resources/src/commonMain/composeResources/drawable/ic_subtitles_filled.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /resources/src/commonMain/composeResources/drawable/ic_sync.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /resources/src/commonMain/composeResources/drawable/logo_aniyomi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/resources/src/commonMain/composeResources/drawable/logo_aniyomi.png -------------------------------------------------------------------------------- /resources/src/commonMain/composeResources/drawable/logo_awery.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/resources/src/commonMain/composeResources/drawable/logo_awery.png -------------------------------------------------------------------------------- /resources/src/commonMain/composeResources/drawable/logo_dantotsu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/resources/src/commonMain/composeResources/drawable/logo_dantotsu.png -------------------------------------------------------------------------------- /resources/src/commonMain/composeResources/drawable/logo_tachiyomi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MrBoomDeveloper/Awery/e02cd6b6b187e461c64344f14691a4616498d553/resources/src/commonMain/composeResources/drawable/logo_tachiyomi.jpg -------------------------------------------------------------------------------- /resources/src/commonMain/kotlin/com/mrboomdev/awery/resources/Utils.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.resources 2 | 3 | import org.jetbrains.compose.resources.ExperimentalResourceApi 4 | 5 | @OptIn(ExperimentalResourceApi::class) 6 | suspend fun readAsset(path: String) = 7 | Res.readBytes("files/app_settings.json").toString(Charsets.UTF_8) -------------------------------------------------------------------------------- /ui/src/androidMain/kotlin/com/mrboomdev/awery/ui/screens/main/MainScreen.android.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.screens.main 2 | 3 | import androidx.compose.runtime.Composable 4 | import androidx.tv.material3.Text 5 | import com.mrboomdev.awery.core.Awery 6 | import com.mrboomdev.awery.core.TV 7 | 8 | @Composable 9 | actual fun MainScreen(viewModel: MainScreenViewModel) { 10 | if(Awery.TV) TvMainScreen(viewModel) 11 | else DefaultMainScreen(viewModel) 12 | } 13 | 14 | @Composable 15 | private fun TvMainScreen(viewModel: MainScreenViewModel) { 16 | Text("Tv main screen") 17 | } -------------------------------------------------------------------------------- /ui/src/commonMain/kotlin/com/mrboomdev/awery/ui/AweryTheme.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui 2 | 3 | import androidx.compose.foundation.isSystemInDarkTheme 4 | import androidx.compose.runtime.Composable 5 | import com.mrboomdev.awery.core.Awery 6 | import com.mrboomdev.awery.core.Awery.TV 7 | import com.mrboomdev.awery.data.settings.Settings 8 | 9 | @Composable 10 | expect fun AweryTheme(content: @Composable () -> Unit) 11 | 12 | @Composable 13 | fun isDarkTheme(): Boolean { 14 | // Tv must be always in a dark theme. 15 | return Awery.TV || when(Settings.darkTheme.state.value) { 16 | Settings.DarkTheme.AUTO -> isSystemInDarkTheme() 17 | Settings.DarkTheme.ON -> true 18 | Settings.DarkTheme.OFF -> false 19 | } 20 | } -------------------------------------------------------------------------------- /ui/src/commonMain/kotlin/com/mrboomdev/awery/ui/Navigation.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui 2 | 3 | import com.mrboomdev.navigation.core.TypeSafeNavigation 4 | import kotlinx.serialization.Serializable 5 | 6 | val Navigation = TypeSafeNavigation(Routes::class) 7 | 8 | sealed interface Routes { 9 | @Serializable 10 | data object Main: Routes 11 | 12 | // @Serializable 13 | // data class Settings(val setting: Any) 14 | } -------------------------------------------------------------------------------- /ui/src/commonMain/kotlin/com/mrboomdev/awery/ui/screens/main/MainScreen.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.screens.main 2 | 3 | import androidx.compose.material3.Text 4 | import androidx.compose.runtime.Composable 5 | import androidx.compose.runtime.getValue 6 | import androidx.compose.runtime.mutableIntStateOf 7 | import androidx.compose.runtime.saveable.rememberSaveable 8 | import androidx.compose.runtime.setValue 9 | import androidx.lifecycle.viewmodel.compose.viewModel 10 | 11 | @Composable 12 | expect fun MainScreen( 13 | viewModel: MainScreenViewModel = viewModel() 14 | ) 15 | 16 | @Composable 17 | internal fun DefaultMainScreen( 18 | viewModel: MainScreenViewModel 19 | ) { 20 | var currentTab by rememberSaveable { mutableIntStateOf(0) } 21 | 22 | Text("Hello, World!") 23 | } -------------------------------------------------------------------------------- /ui/src/commonMain/kotlin/com/mrboomdev/awery/ui/screens/main/MainScreenTab.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.screens.main 2 | 3 | enum class MainScreenTab { 4 | HOME, 5 | LIBRARY 6 | } -------------------------------------------------------------------------------- /ui/src/commonMain/kotlin/com/mrboomdev/awery/ui/screens/main/MainScreenViewModel.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.screens.main 2 | 3 | import androidx.lifecycle.SavedStateHandle 4 | import androidx.lifecycle.ViewModel 5 | 6 | class MainScreenViewModel(savedStateHandle: SavedStateHandle): ViewModel() { 7 | 8 | } -------------------------------------------------------------------------------- /ui/src/desktopMain/kotlin/com/mrboomdev/awery/ui/AweryTheme.desktop.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui 2 | 3 | import androidx.compose.material3.MaterialTheme 4 | import androidx.compose.material3.darkColorScheme 5 | import androidx.compose.material3.lightColorScheme 6 | import androidx.compose.runtime.Composable 7 | 8 | @Composable 9 | actual fun AweryTheme(content: @Composable (() -> Unit)) { 10 | MaterialTheme( 11 | colorScheme = if(isDarkTheme()) darkColorScheme() else lightColorScheme(), 12 | content = content 13 | ) 14 | } -------------------------------------------------------------------------------- /ui/src/desktopMain/kotlin/com/mrboomdev/awery/ui/screens/main/MainScreen.desktop.kt: -------------------------------------------------------------------------------- 1 | package com.mrboomdev.awery.ui.screens.main 2 | 3 | import androidx.compose.runtime.Composable 4 | 5 | @Composable 6 | actual fun MainScreen(viewModel: MainScreenViewModel) = DefaultMainScreen(viewModel) -------------------------------------------------------------------------------- /workflowscripts/tel_parser.sed: -------------------------------------------------------------------------------- 1 | #!/bin/sed -Ef 2 | 3 | ### md-to-html: Sed script that converts Markdown to HTML code 4 | 5 | # s/◗// 6 | /Discord/d 7 | s/%0A/\n/g 8 | s/-/●/ 9 | s/●/●/ 10 | 11 | s/[<>]//g 12 | 13 | s/\[ *([[:alnum:] \&\;\?!,\)\+]*.{0,10}[[:alnum:] \&\;\?!,\)\+]+) *\] *\( *([^ ]+) *\)/\1<\/a>/g 14 | 15 | # **text** and __text__ 16 | s/(^|[^\\\*])\*{2}([^\*]+)\*{2}([^\*]|$)/\1\2\3/g 17 | s/(^|[^\\_])_{2}([^\_]+)_{2}([^_]|$)/\1\2<\/strong>\3/g 18 | 19 | # *text* and _text_ 20 | s/(^|[^\\\*])\*([^\*]+)\*([^\*]|$)/\1\2<\/em>\3/g 21 | s/(^|[^\\_])_([^_]+)_([^_]|$)/\1\2<\/em>\3/g 22 | 23 | # ~~text~~ 24 | s/(^|[^\\~])~~([^~]+)~~([^~]|$)/\1\2<\/del>\3/g 25 | s/(^|[^\\~])~([^~]+)~([^~]|$)/\1\2<\/s>\3/g 26 | 27 | # `text` 28 | s/(^|[^\\`])`([^`]+)`([^`]|$)/\1\2<\/code>\3/g 29 | --------------------------------------------------------------------------------