├── .gitattributes
├── .gitignore
├── .metadata
├── .vscode
└── launch.json
├── LICENSE
├── README.md
├── analysis_options.yaml
├── android
├── .gitignore
├── app
│ ├── build.gradle.kts
│ └── src
│ │ ├── debug
│ │ └── AndroidManifest.xml
│ │ ├── dev
│ │ └── res
│ │ │ ├── drawable-hdpi
│ │ │ └── ic_launcher_foreground.png
│ │ │ ├── drawable-mdpi
│ │ │ └── ic_launcher_foreground.png
│ │ │ ├── drawable-xhdpi
│ │ │ └── ic_launcher_foreground.png
│ │ │ ├── drawable-xxhdpi
│ │ │ └── ic_launcher_foreground.png
│ │ │ ├── drawable-xxxhdpi
│ │ │ └── ic_launcher_foreground.png
│ │ │ ├── mipmap-anydpi-v26
│ │ │ └── ic_launcher.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher_background.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_monochrome.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher_background.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_monochrome.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher_background.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_monochrome.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher_background.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_monochrome.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher_background.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_monochrome.png
│ │ │ └── values
│ │ │ ├── colors.xml
│ │ │ └── strings.xml
│ │ ├── main
│ │ ├── AndroidManifest.xml
│ │ ├── kotlin
│ │ │ └── com
│ │ │ │ └── example
│ │ │ │ └── otraku
│ │ │ │ └── MainActivity.kt
│ │ └── res
│ │ │ ├── drawable-hdpi
│ │ │ └── ic_launcher_foreground.png
│ │ │ ├── drawable-mdpi
│ │ │ └── ic_launcher_foreground.png
│ │ │ ├── drawable-v21
│ │ │ └── launch_background.xml
│ │ │ ├── drawable-xhdpi
│ │ │ └── ic_launcher_foreground.png
│ │ │ ├── drawable-xxhdpi
│ │ │ └── ic_launcher_foreground.png
│ │ │ ├── drawable-xxxhdpi
│ │ │ └── ic_launcher_foreground.png
│ │ │ ├── drawable
│ │ │ ├── launch_background.xml
│ │ │ └── notification_icon.png
│ │ │ ├── mipmap-anydpi-v26
│ │ │ └── ic_launcher.xml
│ │ │ ├── mipmap-hdpi
│ │ │ ├── ic_launcher_background.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_monochrome.png
│ │ │ ├── mipmap-mdpi
│ │ │ ├── ic_launcher_background.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_monochrome.png
│ │ │ ├── mipmap-xhdpi
│ │ │ ├── ic_launcher_background.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_monochrome.png
│ │ │ ├── mipmap-xxhdpi
│ │ │ ├── ic_launcher_background.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_monochrome.png
│ │ │ ├── mipmap-xxxhdpi
│ │ │ ├── ic_launcher_background.png
│ │ │ ├── ic_launcher_foreground.png
│ │ │ └── ic_launcher_monochrome.png
│ │ │ ├── values-night
│ │ │ └── styles.xml
│ │ │ ├── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── styles.xml
│ │ │ └── xml
│ │ │ └── backup_rules.xml
│ │ └── profile
│ │ └── AndroidManifest.xml
├── build.gradle.kts
├── gradle.properties
├── gradle
│ └── wrapper
│ │ └── gradle-wrapper.properties
└── settings.gradle.kts
├── assets
├── fonts
│ ├── Rubik-Italic-VariableFont_wght.ttf
│ └── Rubik-VariableFont_wght.ttf
└── icons
│ ├── about.png
│ ├── about_alt.png
│ ├── android.png
│ └── ios.png
├── fastlane
└── metadata
│ └── android
│ └── en-US
│ ├── changelogs
│ ├── 59.txt
│ ├── 63.txt
│ ├── 65.txt
│ ├── 66.txt
│ ├── 69.txt
│ ├── 72.txt
│ ├── 73.txt
│ ├── 77.txt
│ ├── 80.txt
│ ├── 82.txt
│ ├── 83.txt
│ └── 84.txt
│ ├── full_description.txt
│ ├── images
│ ├── icon.png
│ ├── phoneScreenshots
│ │ ├── 1.jpg
│ │ ├── 2.jpg
│ │ ├── 3.jpg
│ │ ├── 4.jpg
│ │ ├── 5.jpg
│ │ ├── 6.jpg
│ │ ├── 7.jpg
│ │ ├── 8.jpg
│ │ └── 9.jpg
│ └── sevenInchScreenshots
│ │ ├── 1.png
│ │ ├── 2.png
│ │ └── 3.png
│ ├── short_description.txt
│ └── title.txt
├── flutter_launcher_icons-dev.yaml
├── ios
├── .gitignore
├── Flutter
│ ├── .last_build_id
│ ├── AppFrameworkInfo.plist
│ ├── Debug.xcconfig
│ └── Release.xcconfig
├── Podfile
├── Podfile.lock
├── Runner.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ ├── IDEWorkspaceChecks.plist
│ │ │ └── WorkspaceSettings.xcsettings
│ └── xcshareddata
│ │ └── xcschemes
│ │ └── Runner.xcscheme
├── Runner.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ └── WorkspaceSettings.xcsettings
└── Runner
│ ├── AppDelegate.swift
│ ├── Assets.xcassets
│ ├── AppIcon-dev.appiconset
│ │ ├── AppIcon-dev-1024x1024@1x.png
│ │ ├── AppIcon-dev-20x20@1x.png
│ │ ├── AppIcon-dev-20x20@2x.png
│ │ ├── AppIcon-dev-20x20@3x.png
│ │ ├── AppIcon-dev-29x29@1x.png
│ │ ├── AppIcon-dev-29x29@2x.png
│ │ ├── AppIcon-dev-29x29@3x.png
│ │ ├── AppIcon-dev-40x40@1x.png
│ │ ├── AppIcon-dev-40x40@2x.png
│ │ ├── AppIcon-dev-40x40@3x.png
│ │ ├── AppIcon-dev-60x60@2x.png
│ │ ├── AppIcon-dev-60x60@3x.png
│ │ ├── AppIcon-dev-76x76@1x.png
│ │ ├── AppIcon-dev-76x76@2x.png
│ │ ├── AppIcon-dev-83.5x83.5@2x.png
│ │ └── Contents.json
│ ├── AppIcon.appiconset
│ │ ├── Contents.json
│ │ ├── Icon-App-1024x1024@1x.png
│ │ ├── Icon-App-20x20@1x.png
│ │ ├── Icon-App-20x20@2x.png
│ │ ├── Icon-App-20x20@3x.png
│ │ ├── Icon-App-29x29@1x.png
│ │ ├── Icon-App-29x29@2x.png
│ │ ├── Icon-App-29x29@3x.png
│ │ ├── Icon-App-40x40@1x.png
│ │ ├── Icon-App-40x40@2x.png
│ │ ├── Icon-App-40x40@3x.png
│ │ ├── Icon-App-60x60@2x.png
│ │ ├── Icon-App-60x60@3x.png
│ │ ├── Icon-App-76x76@1x.png
│ │ ├── Icon-App-76x76@2x.png
│ │ └── Icon-App-83.5x83.5@2x.png
│ └── LaunchImage.imageset
│ │ ├── Contents.json
│ │ ├── README.md
│ │ ├── splash_icon-1.png
│ │ ├── splash_icon-2.png
│ │ └── splash_icon.png
│ ├── Base.lproj
│ ├── LaunchScreen.storyboard
│ └── Main.storyboard
│ ├── Info.plist
│ └── Runner-Bridging-Header.h
├── lib
├── extension
│ ├── build_context_extension.dart
│ ├── color_extension.dart
│ ├── date_time_extension.dart
│ ├── enum_extension.dart
│ ├── future_extension.dart
│ ├── iterable_extension.dart
│ ├── scroll_controller_extension.dart
│ ├── snack_bar_extension.dart
│ └── string_extension.dart
├── feature
│ ├── activity
│ │ ├── activities_filter_model.dart
│ │ ├── activities_filter_provider.dart
│ │ ├── activities_provider.dart
│ │ ├── activities_view.dart
│ │ ├── activity_card.dart
│ │ ├── activity_filter_sheet.dart
│ │ ├── activity_model.dart
│ │ ├── activity_provider.dart
│ │ ├── activity_view.dart
│ │ └── reply_card.dart
│ ├── calendar
│ │ ├── calendar_filter_provider.dart
│ │ ├── calendar_filter_sheet.dart
│ │ ├── calendar_models.dart
│ │ ├── calendar_provider.dart
│ │ └── calendar_view.dart
│ ├── character
│ │ ├── character_anime_view.dart
│ │ ├── character_filter_model.dart
│ │ ├── character_filter_provider.dart
│ │ ├── character_floating_actions.dart
│ │ ├── character_header.dart
│ │ ├── character_item_grid.dart
│ │ ├── character_item_model.dart
│ │ ├── character_manga_view.dart
│ │ ├── character_model.dart
│ │ ├── character_overview_view.dart
│ │ ├── character_provider.dart
│ │ └── character_view.dart
│ ├── collection
│ │ ├── collection_entries_provider.dart
│ │ ├── collection_filter_model.dart
│ │ ├── collection_filter_provider.dart
│ │ ├── collection_filter_view.dart
│ │ ├── collection_floating_action.dart
│ │ ├── collection_grid.dart
│ │ ├── collection_list.dart
│ │ ├── collection_models.dart
│ │ ├── collection_provider.dart
│ │ ├── collection_top_bar.dart
│ │ └── collection_view.dart
│ ├── comment
│ │ ├── comment_model.dart
│ │ ├── comment_provider.dart
│ │ ├── comment_tile.dart
│ │ └── comment_view.dart
│ ├── composition
│ │ ├── composition_model.dart
│ │ ├── composition_provider.dart
│ │ └── composition_view.dart
│ ├── discover
│ │ ├── discover_filter_model.dart
│ │ ├── discover_filter_provider.dart
│ │ ├── discover_filter_view.dart
│ │ ├── discover_floating_action.dart
│ │ ├── discover_media_grid.dart
│ │ ├── discover_media_simple_grid.dart
│ │ ├── discover_model.dart
│ │ ├── discover_provider.dart
│ │ ├── discover_top_bar.dart
│ │ └── discover_view.dart
│ ├── edit
│ │ ├── edit_buttons.dart
│ │ ├── edit_model.dart
│ │ ├── edit_provider.dart
│ │ ├── edit_view.dart
│ │ └── score_field.dart
│ ├── favorites
│ │ ├── favorites_model.dart
│ │ ├── favorites_provider.dart
│ │ └── favorites_view.dart
│ ├── feed
│ │ ├── feed_floating_action.dart
│ │ └── feed_top_bar.dart
│ ├── forum
│ │ ├── forum_filter_model.dart
│ │ ├── forum_filter_provider.dart
│ │ ├── forum_filter_view.dart
│ │ ├── forum_model.dart
│ │ ├── forum_provider.dart
│ │ ├── forum_view.dart
│ │ └── thread_item_list.dart
│ ├── home
│ │ ├── home_model.dart
│ │ ├── home_provider.dart
│ │ └── home_view.dart
│ ├── media
│ │ ├── media_characters_view.dart
│ │ ├── media_floating_actions.dart
│ │ ├── media_following_view.dart
│ │ ├── media_header.dart
│ │ ├── media_item_grid.dart
│ │ ├── media_item_model.dart
│ │ ├── media_models.dart
│ │ ├── media_overview_view.dart
│ │ ├── media_provider.dart
│ │ ├── media_recommendations_view.dart
│ │ ├── media_related_view.dart
│ │ ├── media_reviews_view.dart
│ │ ├── media_route_tile.dart
│ │ ├── media_staff_view.dart
│ │ ├── media_stats_view.dart
│ │ ├── media_threads_view.dart
│ │ └── media_view.dart
│ ├── notification
│ │ ├── notifications_filter_model.dart
│ │ ├── notifications_filter_provider.dart
│ │ ├── notifications_model.dart
│ │ ├── notifications_provider.dart
│ │ └── notifications_view.dart
│ ├── review
│ │ ├── review_grid.dart
│ │ ├── review_header.dart
│ │ ├── review_models.dart
│ │ ├── review_provider.dart
│ │ ├── review_view.dart
│ │ ├── reviews_filter_provider.dart
│ │ ├── reviews_filter_sheet.dart
│ │ ├── reviews_provider.dart
│ │ └── reviews_view.dart
│ ├── settings
│ │ ├── settings_about_view.dart
│ │ ├── settings_app_view.dart
│ │ ├── settings_content_view.dart
│ │ ├── settings_model.dart
│ │ ├── settings_notifications_view.dart
│ │ ├── settings_provider.dart
│ │ ├── settings_view.dart
│ │ └── theme_preview.dart
│ ├── social
│ │ ├── social_model.dart
│ │ ├── social_provider.dart
│ │ └── social_view.dart
│ ├── staff
│ │ ├── staff_characters_view.dart
│ │ ├── staff_filter_model.dart
│ │ ├── staff_filter_provider.dart
│ │ ├── staff_floating_actions.dart
│ │ ├── staff_header.dart
│ │ ├── staff_item_grid.dart
│ │ ├── staff_item_model.dart
│ │ ├── staff_model.dart
│ │ ├── staff_overview_view.dart
│ │ ├── staff_provider.dart
│ │ ├── staff_roles_view.dart
│ │ └── staff_view.dart
│ ├── statistics
│ │ ├── charts.dart
│ │ ├── statistics_model.dart
│ │ └── statistics_view.dart
│ ├── studio
│ │ ├── studio_filter_model.dart
│ │ ├── studio_filter_provider.dart
│ │ ├── studio_floating_actions.dart
│ │ ├── studio_header.dart
│ │ ├── studio_item_grid.dart
│ │ ├── studio_item_model.dart
│ │ ├── studio_model.dart
│ │ ├── studio_provider.dart
│ │ └── studio_view.dart
│ ├── tag
│ │ ├── tag_model.dart
│ │ ├── tag_picker.dart
│ │ └── tag_provider.dart
│ ├── thread
│ │ ├── thread_model.dart
│ │ ├── thread_provider.dart
│ │ └── thread_view.dart
│ ├── user
│ │ ├── user_header.dart
│ │ ├── user_item_grid.dart
│ │ ├── user_item_model.dart
│ │ ├── user_model.dart
│ │ ├── user_providers.dart
│ │ └── user_view.dart
│ └── viewer
│ │ ├── persistence_model.dart
│ │ ├── persistence_provider.dart
│ │ ├── repository_model.dart
│ │ └── repository_provider.dart
├── main.dart
├── util
│ ├── background_handler.dart
│ ├── debounce.dart
│ ├── graphql.dart
│ ├── markdown.dart
│ ├── paged.dart
│ ├── paged_controller.dart
│ ├── routes.dart
│ ├── theming.dart
│ └── tile_modelable.dart
└── widget
│ ├── cached_image.dart
│ ├── dialogs.dart
│ ├── grid
│ ├── chip_grids.dart
│ ├── dual_relation_grid.dart
│ ├── mono_relation_grid.dart
│ └── sliver_grid_delegates.dart
│ ├── html_content.dart
│ ├── input
│ ├── chip_selector.dart
│ ├── date_field.dart
│ ├── note_label.dart
│ ├── number_field.dart
│ ├── pill_selector.dart
│ ├── score_label.dart
│ ├── search_field.dart
│ ├── stateful_tiles.dart
│ └── year_range_picker.dart
│ ├── layout
│ ├── adaptive_scaffold.dart
│ ├── constrained_view.dart
│ ├── content_header.dart
│ ├── dual_pane_with_tab_bar.dart
│ ├── hiding_floating_action_button.dart
│ ├── navigation_tool.dart
│ ├── scroll_physics.dart
│ └── top_bar.dart
│ ├── loaders.dart
│ ├── paged_view.dart
│ ├── shadowed_overflow_list.dart
│ ├── sheets.dart
│ ├── shimmer.dart
│ ├── swipe_switcher.dart
│ ├── table_list.dart
│ ├── text_rail.dart
│ └── timestamp.dart
├── pubspec.lock
└── pubspec.yaml
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Miscellaneous
2 | *.class
3 | *.log
4 | *.pyc
5 | *.swp
6 | .DS_Store
7 | .atom/
8 | .build/
9 | .buildlog/
10 | .history
11 | .svn/
12 | .swiftpm/
13 | migrate_working_dir/
14 |
15 | # IntelliJ related
16 | *.iml
17 | *.ipr
18 | *.iws
19 | .idea/
20 |
21 | # The .vscode folder contains launch configuration and tasks you configure in
22 | # VS Code which you may wish to be included in version control, so this line
23 | # is commented out by default.
24 | #.vscode/
25 |
26 | # Flutter/Dart/Pub related
27 | **/doc/api/
28 | **/ios/Flutter/.last_build_id
29 | .dart_tool/
30 | .flutter-plugins
31 | .flutter-plugins-dependencies
32 | .pub-cache/
33 | .pub/
34 | /build/
35 |
36 | # Web related
37 | lib/generated_plugin_registrant.dart
38 |
39 | # Symbolication related
40 | app.*.symbols
41 |
42 | # Obfuscation related
43 | app.*.map.json
44 |
45 | # Android Studio will place build artifacts here
46 | /android/app/debug
47 | /android/app/profile
48 | /android/app/release
49 |
--------------------------------------------------------------------------------
/.metadata:
--------------------------------------------------------------------------------
1 | # This file tracks properties of this Flutter project.
2 | # Used by Flutter tool to assess capabilities and perform upgrades etc.
3 | #
4 | # This file should be version controlled and should not be manually edited.
5 |
6 | version:
7 | revision: f7a6a7906be96d2288f5d63a5a54c515a6e987fe
8 | channel: stable
9 |
10 | project_type: app
11 |
--------------------------------------------------------------------------------
/.vscode/launch.json:
--------------------------------------------------------------------------------
1 | {
2 | // Use IntelliSense to learn about possible attributes.
3 | // Hover to view descriptions of existing attributes.
4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5 | "version": "0.2.0",
6 | "configurations": [
7 | {
8 | "name": "Dev Android",
9 | "request": "launch",
10 | "type": "dart",
11 | "args": [
12 | "--flavor",
13 | "dev"
14 | ],
15 | },
16 | {
17 | "name": "Dev IOS",
18 | "request": "launch",
19 | "type": "dart",
20 | }
21 | ]
22 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Otraku
2 | An unofficial AniList app.
3 |
4 |
5 |
6 |
7 |
8 |
9 | Google Play • IzzyOnDroid (F-Droid) • Privacy Policy
10 |
11 |
12 | The iOS .ipa and the android .apk are bundled with each Github release.
13 |
14 |
15 |
16 | Screenshots
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | Building for android
31 |
32 | 1. Run `flutter build apk --split-per-abi`
33 | 2. Grab the apk release build file with your required ABI
34 |
35 | Building for iOS
36 |
37 | 1. Run `flutter build ios --no-codesign`
38 | 2. Copy `./build/ios/iphoneos/Runner.app` into a `Payload` directory
39 | 3. Compress `Payload` and change extension to `.ipa`
40 |
41 |
--------------------------------------------------------------------------------
/analysis_options.yaml:
--------------------------------------------------------------------------------
1 | include: package:flutter_lints/flutter.yaml
2 |
3 | linter:
4 | rules:
5 | # Often unnecessary.
6 | use_key_in_widget_constructors: false
7 |
8 | # For closures.
9 | prefer_function_declarations_over_variables: false
10 |
--------------------------------------------------------------------------------
/android/.gitignore:
--------------------------------------------------------------------------------
1 | gradle-wrapper.jar
2 | /.gradle
3 | /captures/
4 | /gradlew
5 | /gradlew.bat
6 | /keystore.jks
7 | /keystore.properties
8 | /local.properties
9 | GeneratedPluginRegistrant.java
10 | .cxx/
--------------------------------------------------------------------------------
/android/app/build.gradle.kts:
--------------------------------------------------------------------------------
1 | import java.util.Properties
2 | import java.io.FileInputStream
3 |
4 | plugins {
5 | id("com.android.application")
6 | id("kotlin-android")
7 | id("dev.flutter.flutter-gradle-plugin")
8 | }
9 |
10 | val keystoreProperties = Properties()
11 | val keystorePropertiesFile = rootProject.file("keystore.properties")
12 | if (keystorePropertiesFile.exists()) {
13 | keystoreProperties.load(FileInputStream(keystorePropertiesFile))
14 | }
15 |
16 | android {
17 | namespace = "com.otraku.app"
18 | compileSdk = flutter.compileSdkVersion
19 |
20 | ndkVersion = "27.2.12479018"
21 | // ndkVersion = flutter.ndkVersion
22 |
23 | compileOptions {
24 | sourceCompatibility = JavaVersion.VERSION_11
25 | targetCompatibility = JavaVersion.VERSION_11
26 |
27 | // Desugaring is required by flutter_local_notifications.
28 | isCoreLibraryDesugaringEnabled = true
29 | }
30 |
31 | kotlinOptions {
32 | jvmTarget = JavaVersion.VERSION_11.toString()
33 | }
34 |
35 | defaultConfig {
36 | applicationId = "com.otraku.app"
37 | minSdk = 26
38 | targetSdk = flutter.targetSdkVersion
39 | versionCode = flutter.versionCode
40 | versionName = flutter.versionName
41 | }
42 |
43 | signingConfigs {
44 | create("release") {
45 | storeFile = file(rootDir.canonicalPath + "/" + keystoreProperties["releaseKeyStore"])
46 | storePassword = keystoreProperties["releaseStorePassword"] as String
47 | keyPassword = keystoreProperties["releaseKeyPassword"] as String
48 | keyAlias = keystoreProperties["releaseKeyAlias"] as String
49 | }
50 | }
51 |
52 | buildTypes {
53 | release {
54 | signingConfig = signingConfigs.getByName("release")
55 | }
56 | }
57 |
58 | flavorDimensions += "default"
59 | productFlavors {
60 | create("dev") {
61 | dimension = "default"
62 | applicationIdSuffix = ".dev"
63 | }
64 | }
65 | }
66 |
67 | dependencies {
68 | // Desugaring is required by flutter_local_notifications.
69 | coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.5")
70 | }
71 |
72 | flutter {
73 | source = "../.."
74 | }
75 |
--------------------------------------------------------------------------------
/android/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/android/app/src/dev/res/drawable-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/dev/res/drawable-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/drawable-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/dev/res/drawable-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/drawable-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/dev/res/drawable-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/drawable-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/dev/res/drawable-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/drawable-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/dev/res/drawable-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-hdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/dev/res/mipmap-hdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/dev/res/mipmap-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-hdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/dev/res/mipmap-hdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-mdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/dev/res/mipmap-mdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/dev/res/mipmap-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-mdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/dev/res/mipmap-mdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-xhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/dev/res/mipmap-xhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/dev/res/mipmap-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-xhdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/dev/res/mipmap-xhdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-xxhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/dev/res/mipmap-xxhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/dev/res/mipmap-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-xxhdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/dev/res/mipmap-xxhdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-xxxhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/dev/res/mipmap-xxxhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/dev/res/mipmap-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/mipmap-xxxhdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/dev/res/mipmap-xxxhdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/android/app/src/dev/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #E3F2FF
4 |
5 |
--------------------------------------------------------------------------------
/android/app/src/dev/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Otraku
4 |
--------------------------------------------------------------------------------
/android/app/src/main/kotlin/com/example/otraku/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.otraku.app
2 |
3 | import io.flutter.embedding.android.FlutterActivity
4 |
5 | class MainActivity: FlutterActivity() {
6 | }
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/main/res/drawable-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/main/res/drawable-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-v21/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 | -
8 |
11 |
12 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/main/res/drawable-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/main/res/drawable-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/main/res/drawable-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/launch_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 | -
8 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/android/app/src/main/res/drawable/notification_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/main/res/drawable/notification_icon.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/main/res/mipmap-hdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/main/res/mipmap-mdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/main/res/mipmap-xhdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_monochrome.png
--------------------------------------------------------------------------------
/android/app/src/main/res/values-night/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
19 |
20 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #0D161E
4 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | Otraku
4 |
--------------------------------------------------------------------------------
/android/app/src/main/res/values/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
15 |
19 |
20 |
--------------------------------------------------------------------------------
/android/app/src/main/res/xml/backup_rules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/android/app/src/profile/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
24 |
32 |
36 |
37 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/android/build.gradle.kts:
--------------------------------------------------------------------------------
1 | allprojects {
2 | repositories {
3 | google()
4 | mavenCentral()
5 | }
6 | }
7 |
8 | val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get()
9 | rootProject.layout.buildDirectory.value(newBuildDir)
10 |
11 | subprojects {
12 | val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name)
13 | project.layout.buildDirectory.value(newSubprojectBuildDir)
14 | }
15 | subprojects {
16 | project.evaluationDependsOn(":app")
17 | }
18 |
19 | tasks.register("clean") {
20 | delete(rootProject.layout.buildDirectory)
21 | }
22 |
--------------------------------------------------------------------------------
/android/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError
2 | android.useAndroidX=true
3 | android.enableJetifier=true
--------------------------------------------------------------------------------
/android/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | zipStoreBase=GRADLE_USER_HOME
4 | zipStorePath=wrapper/dists
5 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip
6 |
--------------------------------------------------------------------------------
/android/settings.gradle.kts:
--------------------------------------------------------------------------------
1 | pluginManagement {
2 | val flutterSdkPath = run {
3 | val properties = java.util.Properties()
4 | file("local.properties").inputStream().use { properties.load(it) }
5 | val flutterSdkPath = properties.getProperty("flutter.sdk")
6 | require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" }
7 | flutterSdkPath
8 | }
9 |
10 | includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
11 |
12 | repositories {
13 | google()
14 | mavenCentral()
15 | gradlePluginPortal()
16 | }
17 | }
18 |
19 | plugins {
20 | id("dev.flutter.flutter-plugin-loader") version "1.0.0"
21 | id("com.android.application") version "8.7.0" apply false
22 | id("org.jetbrains.kotlin.android") version "1.8.22" apply false
23 | }
24 |
25 | include(":app")
26 |
27 |
--------------------------------------------------------------------------------
/assets/fonts/Rubik-Italic-VariableFont_wght.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/assets/fonts/Rubik-Italic-VariableFont_wght.ttf
--------------------------------------------------------------------------------
/assets/fonts/Rubik-VariableFont_wght.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/assets/fonts/Rubik-VariableFont_wght.ttf
--------------------------------------------------------------------------------
/assets/icons/about.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/assets/icons/about.png
--------------------------------------------------------------------------------
/assets/icons/about_alt.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/assets/icons/about_alt.png
--------------------------------------------------------------------------------
/assets/icons/android.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/assets/icons/android.png
--------------------------------------------------------------------------------
/assets/icons/ios.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/assets/icons/ios.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/59.txt:
--------------------------------------------------------------------------------
1 | - Added calendar in discover to view and filter new episode schedules
2 | - Option for pure background in settings now not only makes dark backgrounds black, but also light backgrounds white
3 | - Fixed lazy-loading in "Following" on the media page
4 | - Other fixes and improvements
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/63.txt:
--------------------------------------------------------------------------------
1 | - Collection searching goes through both titles and notes
2 | - Activity replies have a "Reply" button for automatic mentions
3 | - Tapping on markdown images opens them as a popup
4 | - Tapping on user mentions is not handled as a link, but directly opens the user page
5 | - Tapping on a ranking in a media's statistics page redirects to the discover tab with added filters
6 | - Deep linking on android, if configured in settings
7 | - List status on related media in media pages
8 | - And other visual improvements and fixes
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/65.txt:
--------------------------------------------------------------------------------
1 | - Added collection filters for public/private entries and for entries with/without notes
2 | - Changed release year filter design
3 | - In fields, you can long-tap the decrement/increment buttons to set the value to min/max
4 | - Reduced minimum year in release year filter to 1917
5 | - AniList settings are saved with a floating action button now
6 | - Fixed collection refresh forgetting the selected list
7 | - Fixed missing entries in collections and ignored name preferences
8 | - Fixed settings not reflecting account switching
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/66.txt:
--------------------------------------------------------------------------------
1 | - Added collection filters for public/private entries and for entries with/without notes
2 | - Changed release year filter design
3 | - In fields, you can long-tap the decrement/increment buttons to set the value to min/max
4 | - Reduced minimum year in release year filter to 1917
5 | - AniList settings are saved with a floating action button now
6 | - Fixed collection refresh forgetting the selected list
7 | - Fixed missing entries in collections, ignored name preferences and settings not reflecting account switching
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/69.txt:
--------------------------------------------------------------------------------
1 | - AniList Markdown is supported almost fully
2 | - AniList links in markdown text are opened within the app
3 | - More markdown quick access buttons in the composition sheet
4 | - Collection previews can be filtered like full collections
5 | - User/Discover reviews can be filtered by media type
6 | - You can long-press to copy a media description
7 | - Redesigned media overview tab and other elements
8 | - Fixed bugs around deep link opening
9 | - Image popups are also cached
10 | - Other fixes and improvements
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/72.txt:
--------------------------------------------------------------------------------
1 | - If your filtered collections are empty, a button can redirect you to discover with copied filters
2 | - Tag categories in the tag sheet are sorted alphabetically
3 | - Separate synonym titles on media pages
4 | - Reordered fields in the entry sheet and chapter/volume fields switch based on left-handed mode
5 | - Added an indication on whether collection/discover filters are active
6 | - Refreshable media/user pages
7 | - Fixed emojis, some filter names, collection tiles
8 | - Visual tweaks and slightly darker dark mode
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/73.txt:
--------------------------------------------------------------------------------
1 | - Toggled activity/reply like buttons use the primary color
2 | - Cleaner error messages for failed connection/requests that now appear as toasts
3 | - Replaced "gradient" sheets for activity menus, discover type selection and the like with normal sheets (may still need polishing)
4 | - Fixed collection sorting
5 | - Fixed activity/reply like timeout message
6 | - Fixed home tab switching
7 | - Fixed user refresh retrying multiple times
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/77.txt:
--------------------------------------------------------------------------------
1 | - Tablet support with better layout on wide screens
2 | - New studio page design
3 | - New recommendations design in the media page
4 | - Activity/Reply like icons are different depending on whether the item is liked or not
5 | - Toast messages were replaced by snackbars
6 | - Overall design has been tweaked in many areas
7 | - Fixed progress-incrementing button spamming
8 | - Fixed language order when selecting voice actor language
9 | - And more tweaks and fixes
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/80.txt:
--------------------------------------------------------------------------------
1 | - In the filter sheets for collections and discover, you can set a custom default configuration
2 | - Basic AniList interactions are now supported without logging in
3 | - Easier account switching from the profile tab
4 | - You can reorder favorites and easily unfavorite them
5 | - Timestamps are now relative, but you can tap them for an absolute date
6 | - When incrementing the episode count from 0 on an entry in some lists, a pop up will offer to also change the list status
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/82.txt:
--------------------------------------------------------------------------------
1 | - Chips on the media page are now a grid, not a scrollable row
2 | - Fixed the the favorites editing button appearing in others' favorites
3 | - Fixed edge cases in entry saving/removing
4 | - Fixed list statuses in media recommendations mixing up anime and manga
5 | - Fixed notification timestamps taking too much space
6 | - Shortened the snackbar timeout
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/83.txt:
--------------------------------------------------------------------------------
1 | - In the collection filter sheets for both your anime and manga collection, you can explicitly set the preview collection sorting, separately from the one for the full collection. The exclusive airing sorting for anime collection preview toggle is removed from settings.
2 | - Added a doujin filter in the discover filter sheet.
3 | - While on the profile tab of the home screen, tapping the profile icon will scroll to top like before. But now it will also open settings, if you're already at the top.
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/changelogs/84.txt:
--------------------------------------------------------------------------------
1 | - Added forum page with thread filters
2 | - Added thread pages with navigation, commenting, liking and subscribing (thread writing/editing is not yet done)
3 | - Added a tab on media pages with related threads
4 | - Added tabs with user's threads and comments on users' social pages
5 | - Fixed bugs related to collections, advanced scores and home page search focusing
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/full_description.txt:
--------------------------------------------------------------------------------
1 | Otraku aims to support most AniList features and it already covers:
2 |
3 | - Tracking media and managing/filtering collections
4 | - Browsing/Filtering media/characters/staff/studios/users/reviews
5 | - Viewing general and user activity feeds
6 | - Composing messages
7 | - Calendar for release schedules
8 | - Customization with different themes and other options
9 |
10 | And more!
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/fastlane/metadata/android/en-US/images/icon.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/fastlane/metadata/android/en-US/images/phoneScreenshots/1.jpg
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/fastlane/metadata/android/en-US/images/phoneScreenshots/2.jpg
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/fastlane/metadata/android/en-US/images/phoneScreenshots/3.jpg
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/fastlane/metadata/android/en-US/images/phoneScreenshots/4.jpg
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/fastlane/metadata/android/en-US/images/phoneScreenshots/5.jpg
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/fastlane/metadata/android/en-US/images/phoneScreenshots/6.jpg
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/7.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/fastlane/metadata/android/en-US/images/phoneScreenshots/7.jpg
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/8.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/fastlane/metadata/android/en-US/images/phoneScreenshots/8.jpg
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/phoneScreenshots/9.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/fastlane/metadata/android/en-US/images/phoneScreenshots/9.jpg
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/sevenInchScreenshots/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/fastlane/metadata/android/en-US/images/sevenInchScreenshots/1.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/sevenInchScreenshots/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/fastlane/metadata/android/en-US/images/sevenInchScreenshots/2.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/images/sevenInchScreenshots/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/fastlane/metadata/android/en-US/images/sevenInchScreenshots/3.png
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/short_description.txt:
--------------------------------------------------------------------------------
1 | An unofficial AniList client for Android and iOS
--------------------------------------------------------------------------------
/fastlane/metadata/android/en-US/title.txt:
--------------------------------------------------------------------------------
1 | Otraku
--------------------------------------------------------------------------------
/flutter_launcher_icons-dev.yaml:
--------------------------------------------------------------------------------
1 | flutter_icons:
2 | ios: true
3 | android: true
4 | image_path: "assets/icons/ios.png"
5 | adaptive_icon_background: "#E3F2FF"
6 | adaptive_icon_foreground: "assets/icons/android.png"
--------------------------------------------------------------------------------
/ios/.gitignore:
--------------------------------------------------------------------------------
1 | **/dgph
2 | *.mode1v3
3 | *.mode2v3
4 | *.moved-aside
5 | *.pbxuser
6 | *.perspectivev3
7 | **/*sync/
8 | .sconsign.dblite
9 | .tags*
10 | **/.vagrant/
11 | **/DerivedData/
12 | Icon?
13 | **/Pods/
14 | **/.symlinks/
15 | profile
16 | xcuserdata
17 | **/.generated/
18 | Flutter/App.framework
19 | Flutter/Flutter.framework
20 | Flutter/Flutter.podspec
21 | Flutter/Generated.xcconfig
22 | Flutter/ephemeral/
23 | Flutter/app.flx
24 | Flutter/app.zip
25 | Flutter/flutter_assets/
26 | Flutter/flutter_export_environment.sh
27 | ServiceDefinitions.json
28 | Runner/GeneratedPluginRegistrant.*
29 |
30 | # Exceptions to above rules.
31 | !default.mode1v3
32 | !default.mode2v3
33 | !default.pbxuser
34 | !default.perspectivev3
35 |
--------------------------------------------------------------------------------
/ios/Flutter/.last_build_id:
--------------------------------------------------------------------------------
1 | 854473a0cf5d4145988d906afd9efde9
--------------------------------------------------------------------------------
/ios/Flutter/AppFrameworkInfo.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | App
9 | CFBundleIdentifier
10 | io.flutter.flutter.app
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | App
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 1.0
23 | MinimumOSVersion
24 | 12.0
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Flutter/Debug.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Flutter/Release.xcconfig:
--------------------------------------------------------------------------------
1 | #include "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
2 | #include "Generated.xcconfig"
3 |
--------------------------------------------------------------------------------
/ios/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment this line to define a global platform for your project
2 | platform :ios, '12.0'
3 |
4 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency.
5 | ENV['COCOAPODS_DISABLE_STATS'] = 'true'
6 |
7 | project 'Runner', {
8 | 'Debug' => :debug,
9 | 'Profile' => :release,
10 | 'Release' => :release,
11 | }
12 |
13 | def flutter_root
14 | generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)
15 | unless File.exist?(generated_xcode_build_settings_path)
16 | raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first"
17 | end
18 |
19 | File.foreach(generated_xcode_build_settings_path) do |line|
20 | matches = line.match(/FLUTTER_ROOT\=(.*)/)
21 | return matches[1].strip if matches
22 | end
23 | raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get"
24 | end
25 |
26 | require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)
27 |
28 | flutter_ios_podfile_setup
29 |
30 | target 'Runner' do
31 | use_frameworks!
32 | use_modular_headers!
33 |
34 | flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
35 | end
36 |
37 | post_install do |installer|
38 | installer.pods_project.targets.each do |target|
39 | flutter_additional_ios_build_settings(target)
40 | end
41 | end
42 |
--------------------------------------------------------------------------------
/ios/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - Flutter (1.0.0)
3 | - flutter_local_notifications (0.0.1):
4 | - Flutter
5 | - flutter_secure_storage (6.0.0):
6 | - Flutter
7 | - path_provider_foundation (0.0.1):
8 | - Flutter
9 | - FlutterMacOS
10 | - sqflite_darwin (0.0.4):
11 | - Flutter
12 | - FlutterMacOS
13 | - url_launcher_ios (0.0.1):
14 | - Flutter
15 | - workmanager (0.0.1):
16 | - Flutter
17 |
18 | DEPENDENCIES:
19 | - Flutter (from `Flutter`)
20 | - flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`)
21 | - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`)
22 | - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
23 | - sqflite_darwin (from `.symlinks/plugins/sqflite_darwin/darwin`)
24 | - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
25 | - workmanager (from `.symlinks/plugins/workmanager/ios`)
26 |
27 | EXTERNAL SOURCES:
28 | Flutter:
29 | :path: Flutter
30 | flutter_local_notifications:
31 | :path: ".symlinks/plugins/flutter_local_notifications/ios"
32 | flutter_secure_storage:
33 | :path: ".symlinks/plugins/flutter_secure_storage/ios"
34 | path_provider_foundation:
35 | :path: ".symlinks/plugins/path_provider_foundation/darwin"
36 | sqflite_darwin:
37 | :path: ".symlinks/plugins/sqflite_darwin/darwin"
38 | url_launcher_ios:
39 | :path: ".symlinks/plugins/url_launcher_ios/ios"
40 | workmanager:
41 | :path: ".symlinks/plugins/workmanager/ios"
42 |
43 | SPEC CHECKSUMS:
44 | Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
45 | flutter_local_notifications: ff50f8405aaa0ccdc7dcfb9022ca192e8ad9688f
46 | flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12
47 | path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
48 | sqflite_darwin: 5a7236e3b501866c1c9befc6771dfd73ffb8702d
49 | url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
50 | workmanager: 0afdcf5628bbde6924c21af7836fed07b42e30e6
51 |
52 | PODFILE CHECKSUM: 4e8f8b2be68aeea4c0d5beb6ff1e79fface1d048
53 |
54 | COCOAPODS: 1.11.3
55 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreviewsEnabled
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/Runner/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | import UIKit
2 | import Flutter
3 |
4 | @main
5 | @objc class AppDelegate: FlutterAppDelegate {
6 | override func application(
7 | _ application: UIApplication,
8 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
9 | ) -> Bool {
10 | GeneratedPluginRegistrant.register(with: self)
11 |
12 | // Workmanager
13 | UIApplication.shared.setMinimumBackgroundFetchInterval(TimeInterval(60*15))
14 |
15 | // Flutter Local Notifications
16 | if #available(iOS 10.0, *) {
17 | UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate
18 | }
19 |
20 | return super.application(application, didFinishLaunchingWithOptions: launchOptions)
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-1024x1024@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-20x20@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-20x20@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-20x20@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-29x29@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-29x29@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-29x29@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-40x40@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-40x40@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-40x40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-60x60@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-60x60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-76x76@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-76x76@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/AppIcon-dev-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon-dev.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {"images":[{"size":"20x20","idiom":"iphone","filename":"AppIcon-dev-20x20@2x.png","scale":"2x"},{"size":"20x20","idiom":"iphone","filename":"AppIcon-dev-20x20@3x.png","scale":"3x"},{"size":"29x29","idiom":"iphone","filename":"AppIcon-dev-29x29@1x.png","scale":"1x"},{"size":"29x29","idiom":"iphone","filename":"AppIcon-dev-29x29@2x.png","scale":"2x"},{"size":"29x29","idiom":"iphone","filename":"AppIcon-dev-29x29@3x.png","scale":"3x"},{"size":"40x40","idiom":"iphone","filename":"AppIcon-dev-40x40@2x.png","scale":"2x"},{"size":"40x40","idiom":"iphone","filename":"AppIcon-dev-40x40@3x.png","scale":"3x"},{"size":"60x60","idiom":"iphone","filename":"AppIcon-dev-60x60@2x.png","scale":"2x"},{"size":"60x60","idiom":"iphone","filename":"AppIcon-dev-60x60@3x.png","scale":"3x"},{"size":"20x20","idiom":"ipad","filename":"AppIcon-dev-20x20@1x.png","scale":"1x"},{"size":"20x20","idiom":"ipad","filename":"AppIcon-dev-20x20@2x.png","scale":"2x"},{"size":"29x29","idiom":"ipad","filename":"AppIcon-dev-29x29@1x.png","scale":"1x"},{"size":"29x29","idiom":"ipad","filename":"AppIcon-dev-29x29@2x.png","scale":"2x"},{"size":"40x40","idiom":"ipad","filename":"AppIcon-dev-40x40@1x.png","scale":"1x"},{"size":"40x40","idiom":"ipad","filename":"AppIcon-dev-40x40@2x.png","scale":"2x"},{"size":"76x76","idiom":"ipad","filename":"AppIcon-dev-76x76@1x.png","scale":"1x"},{"size":"76x76","idiom":"ipad","filename":"AppIcon-dev-76x76@2x.png","scale":"2x"},{"size":"83.5x83.5","idiom":"ipad","filename":"AppIcon-dev-83.5x83.5@2x.png","scale":"2x"},{"size":"1024x1024","idiom":"ios-marketing","filename":"AppIcon-dev-1024x1024@1x.png","scale":"1x"}],"info":{"version":1,"author":"xcode"}}
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "filename" : "splash_icon-2.png",
5 | "idiom" : "universal",
6 | "scale" : "1x"
7 | },
8 | {
9 | "filename" : "splash_icon-1.png",
10 | "idiom" : "universal",
11 | "scale" : "2x"
12 | },
13 | {
14 | "filename" : "splash_icon.png",
15 | "idiom" : "universal",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "author" : "xcode",
21 | "version" : 1
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md:
--------------------------------------------------------------------------------
1 | # Launch Screen Assets
2 |
3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory.
4 |
5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images.
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/splash_icon-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/LaunchImage.imageset/splash_icon-1.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/splash_icon-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/LaunchImage.imageset/splash_icon-2.png
--------------------------------------------------------------------------------
/ios/Runner/Assets.xcassets/LaunchImage.imageset/splash_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lotusprey/otraku/e0276fc9c879de654aa4e59564440e0d06dc8dbb/ios/Runner/Assets.xcassets/LaunchImage.imageset/splash_icon.png
--------------------------------------------------------------------------------
/ios/Runner/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Runner/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleDisplayName
8 | Otraku
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | otraku
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | $(FLUTTER_BUILD_NAME)
21 | CFBundleSignature
22 | ????
23 | LSApplicationQueriesSchemes
24 |
25 | https
26 |
27 | CFBundleURLTypes
28 |
29 |
30 | CFBundleTypeRole
31 | Editor
32 | CFBundleURLName
33 | otraku
34 | CFBundleURLSchemes
35 |
36 | app
37 |
38 |
39 |
40 | CFBundleVersion
41 | $(FLUTTER_BUILD_NUMBER)
42 | LSRequiresIPhoneOS
43 |
44 | UIBackgroundModes
45 |
46 | fetch
47 | processing
48 |
49 | UILaunchStoryboardName
50 | LaunchScreen
51 | UIMainStoryboardFile
52 | Main
53 | UISupportedInterfaceOrientations
54 |
55 | UIInterfaceOrientationPortrait
56 | UIInterfaceOrientationLandscapeLeft
57 | UIInterfaceOrientationLandscapeRight
58 |
59 | UISupportedInterfaceOrientations~ipad
60 |
61 | UIInterfaceOrientationPortrait
62 | UIInterfaceOrientationPortraitUpsideDown
63 | UIInterfaceOrientationLandscapeLeft
64 | UIInterfaceOrientationLandscapeRight
65 |
66 | UIViewControllerBasedStatusBarAppearance
67 |
68 | CADisableMinimumFrameDurationOnPhone
69 |
70 | UIApplicationSupportsIndirectInputEvents
71 |
72 |
73 |
74 |
--------------------------------------------------------------------------------
/ios/Runner/Runner-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import "GeneratedPluginRegistrant.h"
2 |
--------------------------------------------------------------------------------
/lib/extension/build_context_extension.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/widgets.dart';
2 | import 'package:go_router/go_router.dart';
3 | import 'package:otraku/util/routes.dart';
4 |
5 | extension BuildContextExtension on BuildContext {
6 | void back() => canPop() ? pop() : go(Routes.home());
7 | }
8 |
--------------------------------------------------------------------------------
/lib/extension/color_extension.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/widgets.dart';
2 |
3 | extension ColorExtension on Color {
4 | static Color? fromHexString(String src) {
5 | try {
6 | return Color(int.parse(src.substring(1, 7), radix: 16) + 0xFF000000);
7 | } catch (_) {
8 | return null;
9 | }
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/lib/extension/date_time_extension.dart:
--------------------------------------------------------------------------------
1 | extension DateTimeExtension on DateTime {
2 | int get secondsSinceEpoch => millisecondsSinceEpoch ~/ 1000;
3 |
4 | static DateTime fromSecondsSinceEpoch(int seconds) =>
5 | DateTime.fromMillisecondsSinceEpoch(seconds * 1000);
6 |
7 | static DateTime? tryFromSecondsSinceEpoch(int? seconds) =>
8 | seconds != null ? fromSecondsSinceEpoch(seconds) : null;
9 |
10 | String formattedDateTimeFromSeconds(bool analogClock) =>
11 | '${_weekdayName(weekday)}, $formattedDate, ${formattedTime(analogClock)}';
12 |
13 | static DateTime? fromFuzzyDate(Map? map) {
14 | if (map?['year'] == null) return null;
15 | return DateTime(map!['year'], map['month'] ?? 1, map['day'] ?? 1);
16 | }
17 |
18 | static String? fuzzyDateString(Map? map) {
19 | if (map == null || map['year'] == null) return null;
20 |
21 | final year = map['year'];
22 | final month = map['month'];
23 | final day = map['day'];
24 |
25 | return '${day != null ? '$day ' : ''}'
26 | '${month != null ? '${monthName(month)} ' : ''}'
27 | '$year';
28 | }
29 |
30 | Map get fuzzyDate =>
31 | {'year': year, 'month': month, 'day': day};
32 |
33 | String get formattedWithWeekDay =>
34 | '$formattedDate - ${_weekdayName(weekday)}';
35 |
36 | String get formattedDate => '$day ${monthName(month)} $year';
37 |
38 | String formattedTime(bool analogClock) {
39 | if (analogClock) {
40 | final (overflows, realHour) =
41 | hour > 12 ? (true, hour - 12) : (false, hour);
42 |
43 | return '${realHour < 10 ? 0 : ''}$realHour'
44 | ':${minute < 10 ? 0 : ''}$minute '
45 | '${overflows ? 'PM' : 'AM'}';
46 | }
47 |
48 | return '${hour <= 9 ? 0 : ''}$hour'
49 | ':${minute <= 9 ? 0 : ''}$minute';
50 | }
51 |
52 | String get timeUntil {
53 | int minutes = difference(DateTime.now()).inMinutes;
54 | int hours = minutes ~/ 60;
55 | minutes %= 60;
56 | int days = hours ~/ 24;
57 | hours %= 24;
58 | return '${days < 1 ? "" : "${days}d "}'
59 | '${hours < 1 ? "" : "${hours}h "}'
60 | '${minutes < 1 ? "" : "${minutes}m"}';
61 | }
62 |
63 | static String monthName(int month) => switch (month) {
64 | 1 => 'Jan',
65 | 2 => 'Feb',
66 | 3 => 'Mar',
67 | 4 => 'Apr',
68 | 5 => 'May',
69 | 6 => 'Jun',
70 | 7 => 'Jul',
71 | 8 => 'Aug',
72 | 9 => 'Sep',
73 | 10 => 'Oct',
74 | 11 => 'Nov',
75 | _ => 'Dec',
76 | };
77 |
78 | static String _weekdayName(int weekday) => switch (weekday) {
79 | 1 => 'Mon',
80 | 2 => 'Tue',
81 | 3 => 'Wed',
82 | 4 => 'Thu',
83 | 5 => 'Fri',
84 | 6 => 'Sat',
85 | _ => 'Sun',
86 | };
87 | }
88 |
--------------------------------------------------------------------------------
/lib/extension/enum_extension.dart:
--------------------------------------------------------------------------------
1 | extension EnumExtension on Iterable {
2 | T? getOrNull(int? index) {
3 | if (index != null && index >= 0 && index < length) {
4 | return elementAt(index);
5 | }
6 |
7 | return null;
8 | }
9 |
10 | T getOrFirst(int? index) {
11 | if (index != null && index >= 0 && index < length) {
12 | return elementAt(index);
13 | }
14 |
15 | return first;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/lib/extension/future_extension.dart:
--------------------------------------------------------------------------------
1 | extension FutureExtension on Future {
2 | Future