From 34469ca0231cd9ea216f42aab16cb9e3714bb4e7 Mon Sep 17 00:00:00 2001 From: HallowDem <75336799+Cytrogen@users.noreply.github.com> Date: Wed, 18 Feb 2026 16:33:06 -0500 Subject: [PATCH] feat: enhance custom font upload with WebView rendering, WOFF/WOFF2 support, preview & deletion - Fix core bug: custom fonts now actually render in article WebView via @font-face injection and Jaguar local server font serving route - Also fix built-in fonts (OpenSans/Roboto/SourceSerif) not rendering in WebView - Add WOFF/WOFF2 format support for font upload - Add font preview text in font picker and selected font indicator - Add custom font deletion UI with confirmation dialog - Add font file size validation (1KB-50MB) - Update CSP to allow font-src from local server - Add missing i18n translations for all 9 locales (zh, de, es, fr, hr, pt, tr, uk) - Update Android build configuration and dependencies --- .metadata | 24 ++- analysis_options.yaml | 28 +++ android-old/.gitignore | 11 + android-old/app/build.gradle | 82 ++++++++ android-old/app/proguard-rules.pro | 1 + android-old/app/src/debug/AndroidManifest.xml | 7 + android-old/app/src/main/AndroidManifest.xml | 62 ++++++ .../app/src/main/ic_launcher-playstore.png | Bin 0 -> 43200 bytes .../fluent_reader_lite/MainActivity.kt | 6 + .../res/drawable-night/launch_background.xml | 11 + .../main/res/drawable/launch_background.xml | 11 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 2886 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 0 -> 5108 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 5029 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 1911 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 0 -> 3135 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 3081 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4103 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 0 -> 7398 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 7386 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 6800 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 0 -> 12269 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 11801 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9606 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 0 -> 17077 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 17071 bytes .../app/src/main/res/mipmap-xxxhdpi/logo.png | Bin 0 -> 33646 bytes .../res/values/ic_launcher_background.xml | 4 + .../app/src/main/res/values/styles.xml | 18 ++ .../app/src/profile/AndroidManifest.xml | 7 + android-old/build.gradle | 35 ++++ android-old/gradle.properties | 4 + .../gradle/wrapper/gradle-wrapper.properties | 5 + android-old/settings.gradle | 11 + android/.gitignore | 5 +- android/app/build.gradle | 18 +- android/app/src/debug/AndroidManifest.xml | 6 +- android/app/src/main/AndroidManifest.xml | 16 +- .../fluent_reader_lite/MainActivity.kt | 5 +- .../res/drawable-v21/launch_background.xml | 12 ++ .../main/res/drawable/launch_background.xml | 7 +- .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 2886 -> 544 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 1911 -> 442 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 4103 -> 721 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 6800 -> 1031 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 9606 -> 1443 bytes .../app/src/main/res/values-night/styles.xml | 18 ++ android/app/src/profile/AndroidManifest.xml | 6 +- android/build.gradle | 10 +- android/gradle.properties | 3 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- android/settings.gradle | 30 ++- assets/article/article.html | 2 +- assets/article/article.js | 21 ++ ios/Flutter/ephemeral/flutter_lldb_helper.py | 32 +++ ios/Flutter/ephemeral/flutter_lldbinit | 5 + lib/l10n/intl_de.arb | 10 + lib/l10n/intl_en.arb | 10 + lib/l10n/intl_es.arb | 10 + lib/l10n/intl_fr.arb | 10 + lib/l10n/intl_hr.arb | 10 + lib/l10n/intl_pt.arb | 10 + lib/l10n/intl_tr.arb | 10 + lib/l10n/intl_uk.arb | 10 + lib/l10n/intl_zh.arb | 10 + lib/models/global_model.dart | 10 + lib/pages/article_page.dart | 11 +- lib/pages/settings/reading_page.dart | 198 ++++++++++++++++++ lib/utils/font_manager.dart | 107 ++++++++++ lib/utils/global.dart | 31 ++- lib/utils/store.dart | 22 ++ pubspec.lock | 108 +++++++--- pubspec.yaml | 42 ++-- 75 files changed, 1053 insertions(+), 101 deletions(-) create mode 100644 analysis_options.yaml create mode 100644 android-old/.gitignore create mode 100644 android-old/app/build.gradle create mode 100644 android-old/app/proguard-rules.pro create mode 100644 android-old/app/src/debug/AndroidManifest.xml create mode 100644 android-old/app/src/main/AndroidManifest.xml create mode 100644 android-old/app/src/main/ic_launcher-playstore.png create mode 100644 android-old/app/src/main/kotlin/com/example/fluent_reader_lite/MainActivity.kt create mode 100644 android-old/app/src/main/res/drawable-night/launch_background.xml create mode 100644 android-old/app/src/main/res/drawable/launch_background.xml create mode 100644 android-old/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 android-old/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 android-old/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 android-old/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png create mode 100644 android-old/app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 android-old/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 android-old/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png create mode 100644 android-old/app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 android-old/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 android-old/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png create mode 100644 android-old/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 android-old/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 android-old/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png create mode 100644 android-old/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 android-old/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 android-old/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png create mode 100644 android-old/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 android-old/app/src/main/res/mipmap-xxxhdpi/logo.png create mode 100644 android-old/app/src/main/res/values/ic_launcher_background.xml create mode 100644 android-old/app/src/main/res/values/styles.xml create mode 100644 android-old/app/src/profile/AndroidManifest.xml create mode 100644 android-old/build.gradle create mode 100644 android-old/gradle.properties create mode 100644 android-old/gradle/wrapper/gradle-wrapper.properties create mode 100644 android-old/settings.gradle create mode 100644 android/app/src/main/res/drawable-v21/launch_background.xml create mode 100644 android/app/src/main/res/values-night/styles.xml create mode 100644 ios/Flutter/ephemeral/flutter_lldb_helper.py create mode 100644 ios/Flutter/ephemeral/flutter_lldbinit create mode 100644 lib/utils/font_manager.dart diff --git a/.metadata b/.metadata index 182ccca..1eb916f 100644 --- a/.metadata +++ b/.metadata @@ -4,7 +4,27 @@ # This file should be version controlled and should not be manually edited. version: - revision: 78910062997c3a836feee883712c241a5fd22983 - channel: stable + revision: "d693b4b9dbac2acd4477aea4555ca6dcbea44ba2" + channel: "stable" project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: d693b4b9dbac2acd4477aea4555ca6dcbea44ba2 + base_revision: d693b4b9dbac2acd4477aea4555ca6dcbea44ba2 + - platform: android + create_revision: d693b4b9dbac2acd4477aea4555ca6dcbea44ba2 + base_revision: d693b4b9dbac2acd4477aea4555ca6dcbea44ba2 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/analysis_options.yaml b/analysis_options.yaml new file mode 100644 index 0000000..0d29021 --- /dev/null +++ b/analysis_options.yaml @@ -0,0 +1,28 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at https://dart.dev/lints. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/android-old/.gitignore b/android-old/.gitignore new file mode 100644 index 0000000..0a741cb --- /dev/null +++ b/android-old/.gitignore @@ -0,0 +1,11 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +key.properties diff --git a/android-old/app/build.gradle b/android-old/app/build.gradle new file mode 100644 index 0000000..7db8e40 --- /dev/null +++ b/android-old/app/build.gradle @@ -0,0 +1,82 @@ +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterRoot = localProperties.getProperty('flutter.sdk') +if (flutterRoot == null) { + throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +apply plugin: 'kotlin-android' +apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + +def keystoreProperties = new Properties() +def keystorePropertiesFile = rootProject.file('key.properties') +if (keystorePropertiesFile.exists()) { + keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) +} + +plugins { + id "com.android.application" + id "dev.flutter.flutter-plugin-loader" +} + +android { + compileSdkVersion 33 + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + lintOptions { + disable 'InvalidPackage' + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId "me.hyliu.fluent_reader_lite" + minSdkVersion 24 + targetSdkVersion 33 + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + } + + signingConfigs { + release { + keyAlias keystoreProperties['keyAlias'] + keyPassword keystoreProperties['keyPassword'] + storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null + storePassword keystoreProperties['storePassword'] + } + } + + buildTypes { + release { + signingConfig signingConfigs.release + shrinkResources false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } +} + +flutter { + source '../..' +} + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +} diff --git a/android-old/app/proguard-rules.pro b/android-old/app/proguard-rules.pro new file mode 100644 index 0000000..16d3a51 --- /dev/null +++ b/android-old/app/proguard-rules.pro @@ -0,0 +1 @@ +-keep class io.flutter.plugin.editing.** { *; } \ No newline at end of file diff --git a/android-old/app/src/debug/AndroidManifest.xml b/android-old/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..696e7d1 --- /dev/null +++ b/android-old/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/android-old/app/src/main/AndroidManifest.xml b/android-old/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..901194e --- /dev/null +++ b/android-old/app/src/main/AndroidManifest.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android-old/app/src/main/ic_launcher-playstore.png b/android-old/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..0bf14849077f4b487522b9b864d8d4fd46131fbf GIT binary patch literal 43200 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 Z4xev@_Vg$uK!gC;TJPIgu-!BMzX150Un>9r literal 0 HcmV?d00001 diff --git a/android-old/app/src/main/kotlin/com/example/fluent_reader_lite/MainActivity.kt b/android-old/app/src/main/kotlin/com/example/fluent_reader_lite/MainActivity.kt new file mode 100644 index 0000000..902cefd --- /dev/null +++ b/android-old/app/src/main/kotlin/com/example/fluent_reader_lite/MainActivity.kt @@ -0,0 +1,6 @@ +package me.hyliu.fluent_reader_lite + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() { +} diff --git a/android-old/app/src/main/res/drawable-night/launch_background.xml b/android-old/app/src/main/res/drawable-night/launch_background.xml new file mode 100644 index 0000000..753a8db --- /dev/null +++ b/android-old/app/src/main/res/drawable-night/launch_background.xml @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/android-old/app/src/main/res/drawable/launch_background.xml b/android-old/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 0000000..5d53782 --- /dev/null +++ b/android-old/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/android-old/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android-old/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..036d09b --- /dev/null +++ b/android-old/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/android-old/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/android-old/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..036d09b --- /dev/null +++ b/android-old/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/android-old/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android-old/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..1550d4c7dcf39cf3ed9ba37c0e0ce946cfc25ccc GIT binary patch literal 2886 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 k;M1& literal 0 HcmV?d00001 diff --git a/android-old/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/android-old/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..4e47873fe923b0c13c026c76ad8e32ef94b45edf GIT binary patch literal 5108 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 S*z%Ok0~qL-qN}etVgC=8dV$9P literal 0 HcmV?d00001 diff --git a/android-old/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/android-old/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..dfb17a2c2287490712835c49e5bf5f31ec366be9 GIT binary patch literal 5029 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 literal 0 HcmV?d00001 diff --git a/android-old/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android-old/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..3a1629fd96f9d1b9a584e5b2b3bb82f77383e6d4 GIT binary patch literal 1911 zcmV--2Z;EIP)`XQttJX+jZroM zMR5T|sbXDFw1UVo$gsm~pn`%T!m!TDrl8`#=iFHs5tUkJh7Z2vpEvXFz3-jhz2}^J z?|YK;;uygP058&L56kOW41b9=f;w{e_BdCh-{VQ|lHT!<_}Sx!vh9h+)A?0W+=B-X zTKoI^jh>XvhB&tAsSx(U`}gnfp@yJ_BSsdBC7w(h^;iIVuyl5IzDWS>+=$M7bnd6K zM`U|;A9p6%rB^5vZ#mmK7+^G?tE#HryLa!N*#^+>>7HjBYyg(j)YK21Z5+5@NqUVbHx*UKX)N}hb3?>WO3?{Vc zjcENJ;`Z%yA9F_+dI`iC!X*IQTi2RQh`p%8j@(9UXUQ8#w-Dn{Jz{d|5uIZ_3-L8u zxwU?SXupH*6PwqBq|z1`EnT96Tn50s)7#sNOZDxDCIh0$n5Z09J)*L2Vw+uAb%Qie z7L{FZtxs+F9x?Jp#N_I*zpx2yMvHJwmjc|ma|e}mt-=tyv5{Ff5Shukj))77im!`u zuE#(QkO7E<0v%cnX4eDUCjZyeHX%Ht24Uw}*ASL|6``!O>Y>+7jr&d_v`Z03Br@?`Sf9RXL>9O1u%Q#i!e=FnPySOpYDUCoxws z$_ZdvL=L%Afru3z1&;vmjT>7DAW{iwMG>TxC6MjDgl1zWOdZ`1sivg^qt|L20N;dX z4Y&~n{(?j$f@y9DO>;Yd9^T<4kd`SREzgHj032Wr@J%>?8nao)~fj4DJ93Erhg04r!?zzPpqHAT;ATjS5{~RVrM|8Y7iX0GT2? z%_4x=Ljl;ckjnvD2w+Pdq{W$#e#wGwY?%PKSlx=Cf373wTpiY(yNO8=mmdpYbs^Ow z04|@%8~~fC_ZOu>`uRM3w-=+Mvl|9WC+b>EsB1N&w%Ls7`>s4R3U&Z{D&-&+Y1B56 zxn(AH0Bp*F6p#vO;aT{`6bOLb@)}HBC&$Df1tx?P;;i!%)>@M_e$oHn}wAmkjRxqm~NcO1UkatWXdq35c|r3h?E4y51mYyn+HqoB6U z1KDEP!OIC=N(3I#VgoI!BQk1j%W2vV6zXV4=3)RHXQAM;kmejFh@<#yb0*4an(=!w z8M-LlX%q^?JRz+nH(FDHX^}Z%P2^Ah&x<);QvZ3n5)rgh;|&e($PN@W!(i@o@lvAQ z2%jMGf4_qQ!fW19j14@FF$+&y1DmtcuX5`=v7*?PQY$bgE)PqS%CJ0HgO$fBvEghL zN~`K|?N%#lb?vy(WI&VNLfh3|*S(eC8(YX-)*mUvv@L0nZ8;BF=miSUY{(+ykZn^y z7F`J0cABAM%OTsPrkT1D-z8K-b+sNh8(U~8-bVY0cIpTdy1Kf={+d^~Ebe*dHxe$} zQg(Isz-YEWPZ^`#V6@3Jr1a#|W=gR=Jw3um`%5e~cJNEA=lN#ti7$8g!3^?WG#q1} z%gf!OqM{E*>budyhYx@JBmnWzASET`Z5mz!HySA)ILJ1bOeW*jty?Fujk&qGqo4GN z>6MzAn&a%Fd@zWo4*Rn?W|T_hDY9+saK4dw`S|!uDlacTqu1+AX0y42=q-G9r|i!( z7!0Q3;^MR3-rnp!Uc>!TIhHhG>eQ)I0s{lT_4oJpi1^uG(!sVowf6@@%$PCbW%@ae x^ty*Nj%|6S5APf-w|Da><=Hjg|anOCC7EAJ4d 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 FV1n1wi+=zB literal 0 HcmV?d00001 diff --git a/android-old/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/android-old/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..bf34ccf2c792f2c8d346b435f5e1609934ac3cef GIT binary patch literal 7398 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 M07*qoM6N<$f)60wzW@LL literal 0 HcmV?d00001 diff --git a/android-old/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android-old/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..2e3c7f4672f6fceb0a85f7c95374facfaffe781d GIT binary patch literal 6800 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 bZ{))kUKf3&OJKYIX#&)hwUM=oHWB{^`tN`> literal 0 HcmV?d00001 diff --git a/android-old/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/android-old/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..20e1237ed65ccc0b5e02f642b6946fb8088bdd0d GIT binary patch literal 12269 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

+jw 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 Lt6Cp4Y$N^$dv^+> literal 0 HcmV?d00001 diff --git a/android-old/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/android-old/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..9f96d5a970b8f93b9f8a90b71006c4eb4d44b2d2 GIT binary patch literal 17077 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 literal 0 HcmV?d00001 diff --git a/android-old/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/android-old/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..9356c62def07229bfcc2f8d6f017217f4eeb7522 GIT binary patch literal 17071 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 V*UzF>hz9@w002ovPDHLkV1oNeyvzUq literal 0 HcmV?d00001 diff --git a/android-old/app/src/main/res/mipmap-xxxhdpi/logo.png b/android-old/app/src/main/res/mipmap-xxxhdpi/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7c33f10200bea59dbbe6a7ae2fdfe0f55f98d0d7 GIT binary patch literal 33646 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 literal 0 HcmV?d00001 diff --git a/android-old/app/src/main/res/values/ic_launcher_background.xml b/android-old/app/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 0000000..c5d5899 --- /dev/null +++ b/android-old/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #FFFFFF + \ No newline at end of file diff --git a/android-old/app/src/main/res/values/styles.xml b/android-old/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..1f83a33 --- /dev/null +++ b/android-old/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/android-old/app/src/profile/AndroidManifest.xml b/android-old/app/src/profile/AndroidManifest.xml new file mode 100644 index 0000000..696e7d1 --- /dev/null +++ b/android-old/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/android-old/build.gradle b/android-old/build.gradle new file mode 100644 index 0000000..a6c51ae --- /dev/null +++ b/android-old/build.gradle @@ -0,0 +1,35 @@ +plugins { + id "dev.flutter.flutter-gradle-plugin" +} + +buildscript { + ext.kotlin_version = '1.7.0' + repositories { + google() + jcenter() + } + + dependencies { + classpath 'com.android.tools.build:gradle:7.0.2' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + jcenter() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +tasks.register("clean", Delete) { + delete rootProject.layout.buildDirectory +} diff --git a/android-old/gradle.properties b/android-old/gradle.properties new file mode 100644 index 0000000..a673820 --- /dev/null +++ b/android-old/gradle.properties @@ -0,0 +1,4 @@ +org.gradle.jvmargs=-Xmx1536M +android.useAndroidX=true +android.enableJetifier=true +android.enableR8=true diff --git a/android-old/gradle/wrapper/gradle-wrapper.properties b/android-old/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..fce403e --- /dev/null +++ b/android-old/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/android-old/settings.gradle b/android-old/settings.gradle new file mode 100644 index 0000000..44e62bc --- /dev/null +++ b/android-old/settings.gradle @@ -0,0 +1,11 @@ +include ':app' + +def localPropertiesFile = new File(rootProject.projectDir, "local.properties") +def properties = new Properties() + +assert localPropertiesFile.exists() +localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + +def flutterSdkPath = properties.getProperty("flutter.sdk") +assert flutterSdkPath != null, "flutter.sdk not set in local.properties" +apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/android/.gitignore b/android/.gitignore index 0a741cb..be3943c 100644 --- a/android/.gitignore +++ b/android/.gitignore @@ -5,7 +5,10 @@ gradle-wrapper.jar /gradlew.bat /local.properties GeneratedPluginRegistrant.java +.cxx/ # Remember to never publicly share your keystore. -# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +# See https://flutter.dev/to/reference-keystore key.properties +**/*.keystore +**/*.jks diff --git a/android/app/build.gradle b/android/app/build.gradle index fd38c76..5feccf8 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -1,3 +1,7 @@ +plugins { + id "com.android.application" +} + def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { @@ -21,10 +25,6 @@ if (flutterVersionName == null) { flutterVersionName = '1.0' } -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" - def keystoreProperties = new Properties() def keystorePropertiesFile = rootProject.file('key.properties') if (keystorePropertiesFile.exists()) { @@ -32,21 +32,21 @@ if (keystorePropertiesFile.exists()) { } android { - compileSdkVersion 33 + compileSdk 33 sourceSets { main.java.srcDirs += 'src/main/kotlin' } - lintOptions { + lint { disable 'InvalidPackage' } defaultConfig { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "me.hyliu.fluent_reader_lite" - minSdkVersion 24 - targetSdkVersion 33 + minSdk 24 + targetSdk 33 versionCode flutterVersionCode.toInteger() versionName flutterVersionName } @@ -75,4 +75,4 @@ flutter { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" -} +} \ No newline at end of file diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml index 696e7d1..399f698 100644 --- a/android/app/src/debug/AndroidManifest.xml +++ b/android/app/src/debug/AndroidManifest.xml @@ -1,6 +1,6 @@ - - diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 901194e..2d93eb9 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,10 +1,5 @@ - @@ -59,4 +54,15 @@ android:name="flutterEmbedding" android:value="2" /> + + + + + + + diff --git a/android/app/src/main/kotlin/com/example/fluent_reader_lite/MainActivity.kt b/android/app/src/main/kotlin/com/example/fluent_reader_lite/MainActivity.kt index 902cefd..f15312d 100644 --- a/android/app/src/main/kotlin/com/example/fluent_reader_lite/MainActivity.kt +++ b/android/app/src/main/kotlin/com/example/fluent_reader_lite/MainActivity.kt @@ -1,6 +1,5 @@ -package me.hyliu.fluent_reader_lite +package com.example.fluent_reader_lite import io.flutter.embedding.android.FlutterActivity -class MainActivity: FlutterActivity() { -} +class MainActivity : FlutterActivity() diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 0000000..f74085f --- /dev/null +++ b/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml index 5d53782..304732f 100644 --- a/android/app/src/main/res/drawable/launch_background.xml +++ b/android/app/src/main/res/drawable/launch_background.xml @@ -3,9 +3,10 @@ - + + diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index 1550d4c7dcf39cf3ed9ba37c0e0ce946cfc25ccc..db77bb4b7b0906d62b1847e87f15cdcacf6a4f29 100644 GIT binary patch literal 544 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY3?!3`olAj~WQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8bpbvhu0Wd6uZuB!w&u2PAxD2eNXD>P5D~Wn-+_Wa#27Xc zC?Zj|6r#X(-D3u$NCt}(Ms06KgJ4FxJVv{GM)!I~&n8Bnc94O7-Hd)cjDZswgC;Qs zO=b+9!WcT8F?0rF7!Uys2bs@gozCP?z~o%U|N3vA*22NaGQG zlg@K`O_XuxvZ&Ks^m&R!`&1=spLvfx7oGDKDwpwW`#iqdw@AL`7MR}m`rwr|mZgU`8P7SBkL78fFf!WnuYWm$5Z0 zNXhDbCv&49sM544K|?c)WrFfiZvCi9h0O)B3Pgg&ebxsLQ05GG~ AQ2+n{ literal 2886 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 k;M1& diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 3a1629fd96f9d1b9a584e5b2b3bb82f77383e6d4..17987b79bb8a35cc66c3c1fd44f5a5526c1b78be 100644 GIT binary patch literal 442 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 literal 4103 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 FV1n1wi+=zB diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index 2e3c7f4672f6fceb0a85f7c95374facfaffe781d..d5f1c8d34e7a88e3f88bea192c3a370d44689c3c 100644 GIT binary patch literal 1031 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFa`(sgt!6~Yi|1%a`XoT0ojZ}lNrNjb9xjc(B0U1_% zz5^97Xt*%oq$rQy4?0GKNfJ44uvxI)gC`h-NZ|&0-7(qS@?b!5r36oQ}zyZrNO3 zMO=Or+<~>+A&uN&E!^Sl+>xE!QC-|oJv`ApDhqC^EWD|@=#J`=d#Xzxs4ah}w&Jnc z$|q_opQ^2TrnVZ0o~wh<3t%W&flvYGe#$xqda2bR_R zvPYgMcHgjZ5nSA^lJr%;<&0do;O^tDDh~=pIxA#coaCY>&N%M2^tq^U%3DB@ynvKo}b?yu-bFc-u0JHzced$sg7S3zqI(2 z#Km{dPr7I=pQ5>FuK#)QwK?Y`E`B?nP+}U)I#c1+FM*1kNvWG|a(TpksZQ3B@sD~b zpQ2)*V*TdwjFOtHvV|;OsiDqHi=6%)o4b!)x$)%9pGTsE z-JL={-Ffv+T87W(Xpooq<`r*VzWQcgBN$$`u}f>-ZQI1BB8ykN*=e4rIsJx9>z}*o zo~|9I;xof literal 6800 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 bZ{))kUKf3&OJKYIX#&)hwUM=oHWB{^`tN`> diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index b62650e25e52e65b1d975717a89be22aa01e6924..4d6372eebdb28e45604e46eeda8dd24651419bc0 100644 GIT binary patch literal 1443 zcmb`G{WsKk6vsdJTdFg%tJav9_E4vzrOaqkWF|A724Nly!y+?N9`YV6wZ}5(X(D_N(?!*n3`|_r0Hc?=PQw&*vnU?QTFY zB_MsH|!j$PP;I}?dppoE_gA(4uc!jV&0!l7_;&p2^pxNo>PEcNJv za5_RT$o2Mf!<+r?&EbHH6nMoTsDOa;mN(wv8RNsHpG)`^ymG-S5By8=l9iVXzN_eG%Xg2@Xeq76tTZ*dGh~Lo9vl;Zfs+W#BydUw zCkZ$o1LqWQO$FC9aKlLl*7x9^0q%0}$OMlp@Kk_jHXOjofdePND+j!A{q!8~Jn+s3 z?~~w@4?egS02}8NuulUA=L~QQfm;MzCGd)XhiftT;+zFO&JVyp2mBww?;QByS_1w! zrQlx%{^cMj0|Bo1FjwY@Q8?Hx0cIPF*@-ZRFpPc#bBw{5@tD(5%sClzIfl8WU~V#u zm5Q;_F!wa$BSpqhN>W@2De?TKWR*!ujY;Yylk_X5#~V!L*Gw~;$%4Q8~Mad z@`-kG?yb$a9cHIApZDVZ^U6Xkp<*4rU82O7%}0jjHlK{id@?-wpN*fCHXyXh(bLt* zPc}H-x0e4E&nQ>y%B-(EL=9}RyC%MyX=upHuFhAk&MLbsF0LP-q`XnH78@fT+pKPW zu72MW`|?8ht^tz$iC}ZwLp4tB;Q49K!QCF3@!iB1qOI=?w z7In!}F~ij(18UYUjnbmC!qKhPo%24?8U1x{7o(+?^Zu0Hx81|FuS?bJ0jgBhEMzf< zCgUq7r2OCB(`XkKcN-TL>u5y#dD6D!)5W?`O5)V^>jb)P)GBdy%t$uUMpf$SNV31$ zb||OojAbvMP?T@$h_ZiFLFVHDmbyMhJF|-_)HX3%m=CDI+ID$0^C>kzxprBW)hw(v zr!Gmda);ICoQyhV_oP5+C%?jcG8v+D@9f?Dk*!BxY}dazmrT@64UrP3hlslANK)bq z$67n83eh}OeW&SV@HG95P|bjfqJ7gw$e+`Hxo!4cx`jdK1bJ>YDSpGKLPZ^1cv$ek zIB?0S<#tX?SJCLWdMd{-ME?$hc7A$zBOdIJ)4!KcAwb=VMov)nK;9z>x~rfT1>dS+ zZ6#`2v@`jgbqq)P22H)Tx2CpmM^o1$B+xT6`(v%5xJ(?j#>Q$+rx_R|7TzDZe{J6q zG1*EcU%tE?!kO%^M;3aM6JN*LAKUVb^xz8-Pxo#jR5(-KBeLJvA@-gxNHx0M-ZJLl z;#JwQoh~9V?`UVo#}{6ka@II>++D@%KqGpMdlQ}?9E*wFcf5(#XQnP$Dk5~%iX^>f z%$y;?M0BLp{O3a(-4A?ewryHrrD%cx#Q^%KY1H zNre$ve+vceSLZcNY4U(RBX&)oZn*Py()h)XkE?PL$!bNb{N5FVI2Y%LKEm%yvpyTP z(1P?z~7YxD~Rf<(a@_y` literal 9606 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 Lt6Cp4Y$N^$dv^+> diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 0000000..06952be --- /dev/null +++ b/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml index 696e7d1..399f698 100644 --- a/android/app/src/profile/AndroidManifest.xml +++ b/android/app/src/profile/AndroidManifest.xml @@ -1,6 +1,6 @@ - - diff --git a/android/build.gradle b/android/build.gradle index 07d2fe3..e41fdbf 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,3 +1,7 @@ +plugins { + id "dev.flutter.flutter-gradle-plugin" +} + buildscript { ext.kotlin_version = '1.7.0' repositories { @@ -26,6 +30,6 @@ subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { - delete rootProject.buildDir -} +tasks.register("clean", Delete) { + delete rootProject.layout.buildDirectory +} \ No newline at end of file diff --git a/android/gradle.properties b/android/gradle.properties index a673820..f018a61 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,4 +1,3 @@ -org.gradle.jvmargs=-Xmx1536M +org.gradle.jvmargs=-Xmx8G -XX:MaxMetaspaceSize=4G -XX:ReservedCodeCacheSize=512m -XX:+HeapDumpOnOutOfMemoryError android.useAndroidX=true android.enableJetifier=true -android.enableR8=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index ffed3a2..ac3b479 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-all.zip diff --git a/android/settings.gradle b/android/settings.gradle index 44e62bc..41ce158 100644 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,11 +1,25 @@ -include ':app' +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + }() -def localPropertiesFile = new File(rootProject.projectDir, "local.properties") -def properties = new Properties() + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") -assert localPropertiesFile.exists() -localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} -def flutterSdkPath = properties.getProperty("flutter.sdk") -assert flutterSdkPath != null, "flutter.sdk not set in local.properties" -apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "8.9.1" apply false + id "org.jetbrains.kotlin.android" version "2.1.0" apply false +} + +include ":app" \ No newline at end of file diff --git a/assets/article/article.html b/assets/article/article.html index 938b45a..eb6b6b1 100644 --- a/assets/article/article.html +++ b/assets/article/article.html @@ -5,7 +5,7 @@ + content="default-src 'none'; script-src 'self'; img-src http: https: data:; style-src 'self' 'unsafe-inline'; font-src 'self' http://127.0.0.1:9000; frame-src http: https:; media-src http: https:; connect-src https: http:"> Article diff --git a/assets/article/article.js b/assets/article/article.js index b71bc03..65b5572 100644 --- a/assets/article/article.js +++ b/assets/article/article.js @@ -12,6 +12,27 @@ async function getArticle(url) { } } document.documentElement.style.fontSize = get("s") + "px" +let fontFamily = get("f") +if (fontFamily && fontFamily !== "System") { + let fontPath = get("fp") + if (!fontPath) { + // Built-in fonts served from bundled assets + var builtInFonts = { + 'OpenSans': 'fonts/OpenSans-Regular.ttf', + 'Roboto': 'fonts/Roboto-Regular.ttf', + 'SourceSerif': 'fonts/SourceSerif-Regular.ttf' + } + if (builtInFonts[fontFamily]) { + fontPath = builtInFonts[fontFamily] + } + } + if (fontPath) { + var style = document.createElement('style') + style.textContent = '@font-face { font-family: "' + fontFamily + '"; src: url("' + fontPath + '"); }' + document.head.appendChild(style) + } + document.documentElement.style.fontFamily = '"' + fontFamily + '", sans-serif' +} let theme = get("t") if (theme !== null) document.documentElement.classList.add(theme === "1" ? "light" : "dark") let url = get("u") diff --git a/ios/Flutter/ephemeral/flutter_lldb_helper.py b/ios/Flutter/ephemeral/flutter_lldb_helper.py new file mode 100644 index 0000000..a88caf9 --- /dev/null +++ b/ios/Flutter/ephemeral/flutter_lldb_helper.py @@ -0,0 +1,32 @@ +# +# Generated file, do not edit. +# + +import lldb + +def handle_new_rx_page(frame: lldb.SBFrame, bp_loc, extra_args, intern_dict): + """Intercept NOTIFY_DEBUGGER_ABOUT_RX_PAGES and touch the pages.""" + base = frame.register["x0"].GetValueAsAddress() + page_len = frame.register["x1"].GetValueAsUnsigned() + + # Note: NOTIFY_DEBUGGER_ABOUT_RX_PAGES will check contents of the + # first page to see if handled it correctly. This makes diagnosing + # misconfiguration (e.g. missing breakpoint) easier. + data = bytearray(page_len) + data[0:8] = b'IHELPED!' + + error = lldb.SBError() + frame.GetThread().GetProcess().WriteMemory(base, data, error) + if not error.Success(): + print(f'Failed to write into {base}[+{page_len}]', error) + return + +def __lldb_init_module(debugger: lldb.SBDebugger, _): + target = debugger.GetDummyTarget() + # Caveat: must use BreakpointCreateByRegEx here and not + # BreakpointCreateByName. For some reasons callback function does not + # get carried over from dummy target for the later. + bp = target.BreakpointCreateByRegex("^NOTIFY_DEBUGGER_ABOUT_RX_PAGES$") + bp.SetScriptCallbackFunction('{}.handle_new_rx_page'.format(__name__)) + bp.SetAutoContinue(True) + print("-- LLDB integration loaded --") diff --git a/ios/Flutter/ephemeral/flutter_lldbinit b/ios/Flutter/ephemeral/flutter_lldbinit new file mode 100644 index 0000000..e3ba6fb --- /dev/null +++ b/ios/Flutter/ephemeral/flutter_lldbinit @@ -0,0 +1,5 @@ +# +# Generated file, do not edit. +# + +command script import --relative-to-command-file flutter_lldb_helper.py diff --git a/lib/l10n/intl_de.arb b/lib/l10n/intl_de.arb index 0b5429d..b3ec8ba 100644 --- a/lib/l10n/intl_de.arb +++ b/lib/l10n/intl_de.arb @@ -47,6 +47,16 @@ "openMenu": "Menü offenen", "openExternal": "Extern öffnen", "fontSize": "Schriftgröße", + "fontFamily": "Schriftart", + "systemFont": "Systemschrift", + "uploadCustomFont": "Eigene Schrift hochladen", + "selectFontFamily": "Schriftart auswählen", + "fontUploaded": "Schrift hochgeladen", + "customFontUploaded": "Eigene Schrift wurde erfolgreich hochgeladen.", + "fontUploadError": "Fehler beim Hochladen der Schrift", + "fontSettings": "Schrift-Einstellungen", + "deleteFont": "Schrift löschen", + "deleteFontConfirm": "Sind Sie sicher, dass Sie diese Schrift löschen möchten?", "edit": "Editieren", "name": "Name", "icon": "Icon", diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 03f431b..0d9d9a0 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -47,6 +47,16 @@ "openMenu": "Open menu", "openExternal": "Open externally", "fontSize": "Font size", + "fontFamily": "Font Family", + "systemFont": "System Font", + "uploadCustomFont": "Upload Custom Font", + "selectFontFamily": "Select Font Family", + "fontUploaded": "Font Uploaded", + "customFontUploaded": "Custom font has been uploaded successfully.", + "fontUploadError": "Failed to upload font", + "fontSettings": "Font Settings", + "deleteFont": "Delete Font", + "deleteFontConfirm": "Are you sure you want to delete this custom font?", "edit": "Edit", "name": "Name", "icon": "Icon", diff --git a/lib/l10n/intl_es.arb b/lib/l10n/intl_es.arb index b692d77..bb3cd7c 100644 --- a/lib/l10n/intl_es.arb +++ b/lib/l10n/intl_es.arb @@ -47,6 +47,16 @@ "openMenu": "Abrir menú", "openExternal": "Abrir externamente", "fontSize": "Tamaño de fuente", + "fontFamily": "Familia de fuentes", + "systemFont": "Fuente del sistema", + "uploadCustomFont": "Subir fuente personalizada", + "selectFontFamily": "Seleccionar familia de fuentes", + "fontUploaded": "Fuente subida", + "customFontUploaded": "La fuente personalizada se ha subido correctamente.", + "fontUploadError": "Error al subir la fuente", + "fontSettings": "Configuración de fuentes", + "deleteFont": "Eliminar fuente", + "deleteFontConfirm": "¿Está seguro de que desea eliminar esta fuente personalizada?", "edit": "Editar", "name": "Nombre", "icon": "Icono", diff --git a/lib/l10n/intl_fr.arb b/lib/l10n/intl_fr.arb index 0a5b578..d077cd5 100644 --- a/lib/l10n/intl_fr.arb +++ b/lib/l10n/intl_fr.arb @@ -47,6 +47,16 @@ "openMenu": "Ouvrir le menu", "openExternal": "Ouvrir dans un nouvel onglet", "fontSize": "Taille de police", + "fontFamily": "Police de caractères", + "systemFont": "Police système", + "uploadCustomFont": "Téléverser une police personnalisée", + "selectFontFamily": "Sélectionner la police", + "fontUploaded": "Police téléversée", + "customFontUploaded": "La police personnalisée a été téléversée avec succès.", + "fontUploadError": "Échec du téléversement de la police", + "fontSettings": "Paramètres de police", + "deleteFont": "Supprimer la police", + "deleteFontConfirm": "Êtes-vous sûr de vouloir supprimer cette police personnalisée ?", "edit": "Editer", "name": "Nom", "icon": "Icon", diff --git a/lib/l10n/intl_hr.arb b/lib/l10n/intl_hr.arb index 3880a14..9d61275 100644 --- a/lib/l10n/intl_hr.arb +++ b/lib/l10n/intl_hr.arb @@ -47,6 +47,16 @@ "openMenu": "Otvori izbornik", "openExternal": "Otvori u vanjskoj aplikaciji", "fontSize": "Veličina fonta", + "fontFamily": "Obitelj fontova", + "systemFont": "Sistemski font", + "uploadCustomFont": "Učitaj prilagođeni font", + "selectFontFamily": "Odaberi obitelj fontova", + "fontUploaded": "Font učitan", + "customFontUploaded": "Prilagođeni font je uspješno učitan.", + "fontUploadError": "Pogreška pri učitavanju fonta", + "fontSettings": "Postavke fontova", + "deleteFont": "Izbriši font", + "deleteFontConfirm": "Jeste li sigurni da želite izbrisati ovaj prilagođeni font?", "edit": "Uredi", "name": "Naziv", "icon": "Ikona", diff --git a/lib/l10n/intl_pt.arb b/lib/l10n/intl_pt.arb index 5064a76..0bbea62 100644 --- a/lib/l10n/intl_pt.arb +++ b/lib/l10n/intl_pt.arb @@ -47,6 +47,16 @@ "openMenu": "Abrir menu", "openExternal": "Abrir externamente", "fontSize": "Tamanho da fonte", + "fontFamily": "Família da fonte", + "systemFont": "Fonte do sistema", + "uploadCustomFont": "Enviar fonte personalizada", + "selectFontFamily": "Selecionar família da fonte", + "fontUploaded": "Fonte enviada", + "customFontUploaded": "A fonte personalizada foi enviada com sucesso.", + "fontUploadError": "Falha ao enviar a fonte", + "fontSettings": "Configurações de fonte", + "deleteFont": "Excluir fonte", + "deleteFontConfirm": "Tem certeza de que deseja excluir esta fonte personalizada?", "edit": "Editar", "name": "Nome", "icon": "ícone", diff --git a/lib/l10n/intl_tr.arb b/lib/l10n/intl_tr.arb index 5705f90..0bfe598 100644 --- a/lib/l10n/intl_tr.arb +++ b/lib/l10n/intl_tr.arb @@ -47,6 +47,16 @@ "openMenu": "Menüyü aç", "openExternal": "Harici olarak aç", "fontSize": "Yazı boyutu", + "fontFamily": "Yazı tipi ailesi", + "systemFont": "Sistem yazı tipi", + "uploadCustomFont": "Özel yazı tipi yükle", + "selectFontFamily": "Yazı tipi ailesi seç", + "fontUploaded": "Yazı tipi yüklendi", + "customFontUploaded": "Özel yazı tipi başarıyla yüklendi.", + "fontUploadError": "Yazı tipi yüklenemedi", + "fontSettings": "Yazı tipi ayarları", + "deleteFont": "Yazı tipini sil", + "deleteFontConfirm": "Bu özel yazı tipini silmek istediğinizden emin misiniz?", "edit": "Düzenle", "name": "İsim", "icon": "Simge", diff --git a/lib/l10n/intl_uk.arb b/lib/l10n/intl_uk.arb index 869926a..97b650f 100644 --- a/lib/l10n/intl_uk.arb +++ b/lib/l10n/intl_uk.arb @@ -47,6 +47,16 @@ "openMenu": "Відкрити меню", "openExternal": "Відкрити зовні", "fontSize": "Розмір шрифту", + "fontFamily": "Сімейство шрифтів", + "systemFont": "Системний шрифт", + "uploadCustomFont": "Завантажити власний шрифт", + "selectFontFamily": "Обрати сімейство шрифтів", + "fontUploaded": "Шрифт завантажено", + "customFontUploaded": "Власний шрифт успішно завантажено.", + "fontUploadError": "Не вдалося завантажити шрифт", + "fontSettings": "Налаштування шрифтів", + "deleteFont": "Видалити шрифт", + "deleteFontConfirm": "Ви впевнені, що хочете видалити цей власний шрифт?", "edit": "Редагувати", "name": "Назва", "icon": "Значок", diff --git a/lib/l10n/intl_zh.arb b/lib/l10n/intl_zh.arb index 4c7b165..fe3d64e 100644 --- a/lib/l10n/intl_zh.arb +++ b/lib/l10n/intl_zh.arb @@ -47,6 +47,16 @@ "openMenu": "打开菜单", "openExternal": "在外部打开", "fontSize": "字体大小", + "fontFamily": "字体", + "systemFont": "系统字体", + "uploadCustomFont": "上传自定义字体", + "selectFontFamily": "选择字体", + "fontUploaded": "字体已上传", + "customFontUploaded": "自定义字体上传成功。", + "fontUploadError": "字体上传失败", + "fontSettings": "字体设置", + "deleteFont": "删除字体", + "deleteFontConfirm": "确定要删除此自定义字体吗?", "edit": "编辑", "name": "名称", "icon": "图标", diff --git a/lib/models/global_model.dart b/lib/models/global_model.dart index 4e79f97..a53c7dc 100644 --- a/lib/models/global_model.dart +++ b/lib/models/global_model.dart @@ -14,6 +14,7 @@ class GlobalModel with ChangeNotifier { bool _syncOnStart = Store.sp.getBool(StoreKeys.SYNC_ON_START) ?? true; bool _inAppBrowser = Store.sp.getBool(StoreKeys.IN_APP_BROWSER) ?? Platform.isIOS; double _textScale = Store.sp.getDouble(StoreKeys.TEXT_SCALE); + String _fontFamily = Store.getFontFamily(); ThemeSetting get theme => _theme; set theme(ThemeSetting value) { @@ -67,4 +68,13 @@ class GlobalModel with ChangeNotifier { } } } + + String get fontFamily => _fontFamily; + set fontFamily(String value) { + if (value != _fontFamily) { + _fontFamily = value; + notifyListeners(); + Store.setFontFamily(value); + } + } } \ No newline at end of file diff --git a/lib/pages/article_page.dart b/lib/pages/article_page.dart index 972a481..0118e39 100644 --- a/lib/pages/article_page.dart +++ b/lib/pages/article_page.dart @@ -7,6 +7,7 @@ import 'package:fluent_reader_lite/models/items_model.dart'; import 'package:fluent_reader_lite/models/source.dart'; import 'package:fluent_reader_lite/models/sources_model.dart'; import 'package:fluent_reader_lite/utils/colors.dart'; +import 'package:fluent_reader_lite/utils/font_manager.dart'; import 'package:fluent_reader_lite/utils/global.dart'; import 'package:fluent_reader_lite/utils/store.dart'; import 'package:flutter/cupertino.dart'; @@ -94,7 +95,15 @@ class ArticlePageState extends State { h += '

'; h = Uri.encodeComponent(h); var s = Store.getArticleFontSize(); - localUrl += "?a=$a&h=$h&s=$s&u=${item.link}&m=${loadFull ? 1 : 0}"; + var f = Uri.encodeComponent(Global.globalModel.fontFamily); + localUrl += "?a=$a&h=$h&s=$s&f=$f&u=${item.link}&m=${loadFull ? 1 : 0}"; + // Pass custom font URL for non-built-in fonts + if (!FontManager.builtInFonts.contains(Global.globalModel.fontFamily)) { + final fontUrl = await FontManager.getCustomFontUrl(Global.globalModel.fontFamily); + if (fontUrl != null) { + localUrl += "&fp=${Uri.encodeComponent(fontUrl)}"; + } + } if (Platform.isAndroid || Global.globalModel.getBrightness() != null) { var brightness = Global.currentBrightness(context); localUrl += "&t=${brightness.index}"; diff --git a/lib/pages/settings/reading_page.dart b/lib/pages/settings/reading_page.dart index 07bdd29..c290a8c 100644 --- a/lib/pages/settings/reading_page.dart +++ b/lib/pages/settings/reading_page.dart @@ -3,7 +3,11 @@ import 'package:fluent_reader_lite/components/my_list_tile.dart'; import 'package:fluent_reader_lite/generated/l10n.dart'; import 'package:fluent_reader_lite/utils/colors.dart'; import 'package:fluent_reader_lite/utils/store.dart'; +import 'package:fluent_reader_lite/utils/global.dart'; +import 'package:fluent_reader_lite/utils/font_manager.dart'; import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:file_picker/file_picker.dart'; class ReadingPage extends StatefulWidget { @override @@ -12,6 +16,178 @@ class ReadingPage extends StatefulWidget { class _ReadingPageState extends State { int _fontSize = Store.getArticleFontSize(); + List _customFontNames = []; + List _availableFonts = []; + + @override + void initState() { + super.initState(); + _loadCustomFonts(); + } + + void _loadCustomFonts() async { + final customFonts = await FontManager.getInstalledCustomFonts(); + setState(() { + _customFontNames = customFonts; + _availableFonts = [...FontManager.builtInFonts, ...customFonts]; + }); + } + + void _showFontPicker(BuildContext context) { + showCupertinoModalPopup( + context: context, + builder: (context) => CupertinoActionSheet( + title: Text(S.of(context).selectFontFamily), + actions: _availableFonts.map((font) { + final isCustom = !FontManager.builtInFonts.contains(font); + final isSelected = Global.globalModel.fontFamily == font; + final isSystem = font == 'System'; + return CupertinoActionSheetAction( + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + FontManager.getFontDisplayName(font), + style: TextStyle( + fontFamily: isCustom || isSystem ? null : font, + fontWeight: isSelected ? FontWeight.bold : FontWeight.normal, + ), + ), + if (isSelected) Padding( + padding: EdgeInsets.only(left: 8), + child: Icon(Icons.done, size: 18, color: CupertinoColors.activeBlue), + ), + ], + ), + if (!isSystem && !isCustom) + Text( + 'The quick brown fox jumps over the lazy dog', + style: TextStyle( + fontFamily: font, + fontSize: 12, + color: CupertinoColors.systemGrey, + ), + ), + if (isCustom) + Text( + '(${S.of(context).uploadCustomFont})', + style: TextStyle( + fontSize: 12, + color: CupertinoColors.systemGrey, + ), + ), + ], + ), + onPressed: () { + Global.globalModel.fontFamily = font; + Navigator.pop(context); + setState(() {}); + }, + ); + }).toList(), + cancelButton: CupertinoActionSheetAction( + child: Text(S.of(context).cancel), + onPressed: () => Navigator.pop(context), + ), + ), + ); + } + + void _uploadCustomFont() async { + FilePickerResult? result = await FilePicker.platform.pickFiles( + type: FileType.custom, + allowedExtensions: ['ttf', 'otf', 'woff', 'woff2'], + ); + + if (result != null && result.files.single.path != null) { + try { + final sourcePath = result.files.single.path!; + final fileName = result.files.single.name; + + await FontManager.installCustomFont(sourcePath, fileName); + + final fontName = fileName.split('.').first; + Global.globalModel.fontFamily = fontName; + + _loadCustomFonts(); + + showCupertinoDialog( + context: context, + builder: (context) => CupertinoAlertDialog( + title: Text(S.of(context).fontUploaded), + content: Text(S.of(context).customFontUploaded), + actions: [ + CupertinoDialogAction( + child: Text('OK'), + onPressed: () => Navigator.pop(context), + ), + ], + ), + ); + } catch (e) { + showCupertinoDialog( + context: context, + builder: (context) => CupertinoAlertDialog( + title: Text(S.of(context).fontUploadError), + content: Text('$e'), + actions: [ + CupertinoDialogAction( + child: Text('OK'), + onPressed: () => Navigator.pop(context), + ), + ], + ), + ); + } + } + } + + void _confirmDeleteFont(BuildContext context, String fontName) { + showCupertinoDialog( + context: context, + builder: (context) => CupertinoAlertDialog( + title: Text(S.of(context).deleteFont), + content: Text(S.of(context).deleteFontConfirm), + actions: [ + CupertinoDialogAction( + child: Text(S.of(context).cancel), + onPressed: () => Navigator.pop(context), + ), + CupertinoDialogAction( + isDestructiveAction: true, + child: Text(S.of(context).confirm), + onPressed: () async { + Navigator.pop(context); + try { + await FontManager.removeCustomFont(fontName); + if (Global.globalModel.fontFamily == fontName) { + Global.globalModel.fontFamily = 'System'; + Store.sp.remove(StoreKeys.CUSTOM_FONT_PATH); + } + _loadCustomFonts(); + } catch (e) { + showCupertinoDialog( + context: context, + builder: (ctx) => CupertinoAlertDialog( + title: Text(S.of(ctx).fontUploadError), + content: Text('$e'), + actions: [ + CupertinoDialogAction( + child: Text('OK'), + onPressed: () => Navigator.pop(ctx), + ), + ], + ), + ); + } + }, + ), + ], + ), + ); + } @override Widget build(BuildContext context) { @@ -41,6 +217,28 @@ class _ReadingPageState extends State { withDivider: false, ), ], title: S.of(context).preferences), + ListTileGroup([ + MyListTile( + title: Text(S.of(context).fontFamily), + trailing: Text(FontManager.getFontDisplayName(Global.globalModel.fontFamily)), + onTap: () => _showFontPicker(context), + ), + MyListTile( + title: Text(S.of(context).uploadCustomFont), + trailing: Icon(CupertinoIcons.add), + onTap: _uploadCustomFont, + withDivider: _customFontNames.isNotEmpty, + ), + ..._customFontNames.map((fontName) => MyListTile( + title: Text(fontName), + trailing: GestureDetector( + onTap: () => _confirmDeleteFont(context, fontName), + child: Icon(CupertinoIcons.delete, color: CupertinoColors.destructiveRed, size: 20), + ), + trailingChevron: false, + withDivider: fontName != _customFontNames.last, + )), + ], title: S.of(context).fontSettings), ]), ); } diff --git a/lib/utils/font_manager.dart b/lib/utils/font_manager.dart new file mode 100644 index 0000000..4ef1c20 --- /dev/null +++ b/lib/utils/font_manager.dart @@ -0,0 +1,107 @@ +import 'dart:io'; +import 'package:path_provider/path_provider.dart'; + +class FontManager { + static const supportedExtensions = ['.ttf', '.otf', '.woff', '.woff2']; + static const builtInFonts = ['System', 'OpenSans', 'Roboto', 'SourceSerif']; + + static Future getFontsDirectory() async { + final directory = await getApplicationDocumentsDirectory(); + final fontsDir = Directory('${directory.path}/fonts'); + if (!await fontsDir.exists()) { + await fontsDir.create(recursive: true); + } + return fontsDir; + } + + static Future installCustomFont(String sourcePath, String fileName) async { + try { + final fontsDir = await getFontsDirectory(); + final sourceFile = File(sourcePath); + + // Basic validation: fonts should be > 1KB and < 50MB + final fileSize = await sourceFile.length(); + if (fileSize < 1024 || fileSize > 50 * 1024 * 1024) { + throw Exception('Invalid font file size'); + } + + final targetPath = '${fontsDir.path}/$fileName'; + final targetFile = await sourceFile.copy(targetPath); + return targetFile.path; + } catch (e) { + throw Exception('Failed to install custom font: $e'); + } + } + + static Future> getInstalledCustomFonts() async { + try { + final fontsDir = await getFontsDirectory(); + final files = await fontsDir.list().toList(); + return files + .where((file) => file is File && + supportedExtensions.any((ext) => file.path.toLowerCase().endsWith(ext))) + .map((file) { + final fileName = file.path.split(Platform.pathSeparator).last; + return fileName.split('.').first; + }) + .toList(); + } catch (e) { + return []; + } + } + + /// Get the full file name (with extension) for a given font name + static Future getFontFileName(String fontName) async { + final fontsDir = await getFontsDirectory(); + final files = await fontsDir.list().toList(); + for (final file in files) { + if (file is File) { + final fileName = file.path.split(Platform.pathSeparator).last; + final nameWithoutExt = fileName.split('.').first; + if (nameWithoutExt == fontName) { + return fileName; + } + } + } + return null; + } + + /// Get the local server URL for a custom font + static Future getCustomFontUrl(String fontName) async { + final fileName = await getFontFileName(fontName); + if (fileName == null) return null; + return 'http://127.0.0.1:9000/custom-fonts/${Uri.encodeComponent(fileName)}'; + } + + static Future removeCustomFont(String fontName) async { + try { + final fontsDir = await getFontsDirectory(); + final files = await fontsDir.list().toList(); + for (final file in files) { + if (file is File) { + final fileName = file.path.split(Platform.pathSeparator).last; + final nameWithoutExt = fileName.split('.').first; + if (nameWithoutExt == fontName) { + await file.delete(); + break; + } + } + } + } catch (e) { + throw Exception('Failed to remove custom font: $e'); + } + } + + static String getFontDisplayName(String fontFamily) { + switch (fontFamily) { + case 'System': + return 'System Font'; + case 'OpenSans': + return 'Open Sans'; + case 'SourceSerif': + return 'Source Serif'; + default: + return fontFamily; + } + } +} diff --git a/lib/utils/global.dart b/lib/utils/global.dart index ff10675..4e60331 100644 --- a/lib/utils/global.dart +++ b/lib/utils/global.dart @@ -1,3 +1,5 @@ +import 'dart:io'; + import 'package:fluent_reader_lite/models/feeds_model.dart'; import 'package:fluent_reader_lite/models/global_model.dart'; import 'package:fluent_reader_lite/models/groups_model.dart'; @@ -9,9 +11,10 @@ import 'package:fluent_reader_lite/models/services/greader.dart'; import 'package:fluent_reader_lite/models/sources_model.dart'; import 'package:fluent_reader_lite/models/sync_model.dart'; import 'package:fluent_reader_lite/utils/db.dart'; +import 'package:fluent_reader_lite/utils/font_manager.dart'; import 'package:fluent_reader_lite/utils/store.dart'; import 'package:flutter/cupertino.dart'; -import 'package:jaguar/serve/server.dart'; +import 'package:jaguar/jaguar.dart'; import 'package:jaguar_flutter_asset/jaguar_flutter_asset.dart'; import 'package:sqflite/sqflite.dart'; @@ -68,6 +71,32 @@ abstract class Global { ); server = Jaguar(address: "127.0.0.1",port: 9000); server.addRoute(serveFlutterAssets()); + + // Serve custom font files from app documents directory + final fontsDir = await FontManager.getFontsDirectory(); + server.get('/custom-fonts/:filename*', (ctx) async { + final filename = ctx.pathParams['filename']; + if (filename == null || filename.isEmpty) { + return Response(statusCode: 404); + } + // Security: only allow font file extensions + final lowerFilename = filename.toLowerCase(); + if (!FontManager.supportedExtensions.any((ext) => lowerFilename.endsWith(ext))) { + return Response(statusCode: 403); + } + final file = File('${fontsDir.path}/$filename'); + if (!await file.exists()) { + return Response(statusCode: 404); + } + String mimeType = 'application/octet-stream'; + if (lowerFilename.endsWith('.ttf')) mimeType = 'font/ttf'; + else if (lowerFilename.endsWith('.otf')) mimeType = 'font/otf'; + else if (lowerFilename.endsWith('.woff2')) mimeType = 'font/woff2'; + else if (lowerFilename.endsWith('.woff')) mimeType = 'font/woff'; + final bytes = await file.readAsBytes(); + return ByteResponse(body: bytes, mimeType: mimeType); + }); + await server.serve(); await sourcesModel.init(); await feedsModel.all.init(); diff --git a/lib/utils/store.dart b/lib/utils/store.dart index 9094d39..ff202de 100644 --- a/lib/utils/store.dart +++ b/lib/utils/store.dart @@ -30,6 +30,8 @@ abstract class StoreKeys { // Reading preferences static const ARTICLE_FONT_SIZE = "articleFontSize"; + static const FONT_FAMILY = "fontFamily"; + static const CUSTOM_FONT_PATH = "customFontPath"; // Syncing static const SYNC_SERVICE = "syncService"; @@ -124,4 +126,24 @@ class Store { static void setErrorLog(String value) { sp.setString(StoreKeys.ERROR_LOG, value); } + + static String getFontFamily() { + return sp.getString(StoreKeys.FONT_FAMILY) ?? "System"; + } + + static void setFontFamily(String value) { + sp.setString(StoreKeys.FONT_FAMILY, value); + } + + static String getCustomFontPath() { + return sp.getString(StoreKeys.CUSTOM_FONT_PATH); + } + + static void setCustomFontPath(String value) { + if (value == null) { + sp.remove(StoreKeys.CUSTOM_FONT_PATH); + } else { + sp.setString(StoreKeys.CUSTOM_FONT_PATH, value); + } + } } \ No newline at end of file diff --git a/pubspec.lock b/pubspec.lock index 7422ce0..4b0dc95 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -53,26 +53,26 @@ packages: dependency: transitive description: name: characters - sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.4.0" clock: dependency: transitive description: name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" collection: dependency: transitive description: name: collection - sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" url: "https://pub.dev" source: hosted - version: "1.17.0" + version: "1.19.1" crypto: dependency: "direct main" description: @@ -101,10 +101,10 @@ packages: dependency: transitive description: name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.3" ffi: dependency: transitive description: @@ -121,6 +121,14 @@ packages: url: "https://pub.dev" source: hosted version: "6.1.4" + file_picker: + dependency: "direct main" + description: + name: file_picker + sha256: "9d6e95ec73abbd31ec54d0e0df8a961017e165aba1395e462e5b31ea0c165daf" + url: "https://pub.dev" + source: hosted + version: "5.3.1" flutter: dependency: "direct main" description: flutter @@ -147,6 +155,14 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_plugin_android_lifecycle: + dependency: transitive + description: + name: flutter_plugin_android_lifecycle + sha256: b0694b7fb1689b0e6cc193b3f1fcac6423c4f93c74fb20b806c6b6f196db0c31 + url: "https://pub.dev" + source: hosted + version: "2.0.30" flutter_test: dependency: "direct dev" description: flutter @@ -193,10 +209,10 @@ packages: dependency: "direct main" description: name: intl - sha256: "910f85bce16fb5c6f614e117efa303e85a1731bb0081edf3604a2ae6e9a3cc91" + sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" url: "https://pub.dev" source: hosted - version: "0.17.0" + version: "0.20.2" jaguar: dependency: "direct main" description: @@ -221,14 +237,30 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.0" - js: + leak_tracker: dependency: transitive description: - name: js - sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" + name: leak_tracker + sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" url: "https://pub.dev" source: hosted - version: "0.6.5" + version: "11.0.2" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" + url: "https://pub.dev" + source: hosted + version: "3.0.10" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" + url: "https://pub.dev" + source: hosted + version: "3.0.2" logging: dependency: transitive description: @@ -249,26 +281,26 @@ packages: dependency: transitive description: name: matcher - sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 url: "https://pub.dev" source: hosted - version: "0.12.13" + version: "0.12.17" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.11.1" meta: dependency: transitive description: name: meta - sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.16.0" mime: dependency: transitive description: @@ -329,12 +361,12 @@ packages: dependency: "direct main" description: name: path - sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.9.1" path_provider: - dependency: transitive + dependency: "direct main" description: name: path_provider sha256: a1aa8aaa2542a6bc57e381f132af822420216c80d4781f7aa085ca3229208aaa @@ -497,7 +529,7 @@ packages: dependency: transitive description: flutter source: sdk - version: "0.0.99" + version: "0.0.0" source_span: dependency: transitive description: @@ -534,18 +566,18 @@ packages: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.12.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.4" string_scanner: dependency: transitive description: @@ -574,10 +606,10 @@ packages: dependency: transitive description: name: test_api - sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" url: "https://pub.dev" source: hosted - version: "0.4.16" + version: "0.7.6" tuple: dependency: "direct main" description: @@ -702,10 +734,18 @@ packages: dependency: transitive description: name: vector_math - sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.2.0" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60" + url: "https://pub.dev" + source: hosted + version: "15.0.2" webview_flutter: dependency: "direct main" description: @@ -755,5 +795,5 @@ packages: source: hosted version: "1.0.3" sdks: - dart: ">=2.19.0 <3.0.0" - flutter: ">=3.7.0" + dart: ">=3.8.0-0 <4.0.0" + flutter: ">=3.29.0" diff --git a/pubspec.yaml b/pubspec.yaml index 05ac0f8..702def4 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -18,7 +18,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.4+11 environment: - sdk: ">=2.7.0 <3.0.0" + sdk: ">=3.0.0 <4.0.0" dependencies: flutter: @@ -28,7 +28,7 @@ dependencies: provider: ^6.0.3 tuple: ^2.0.0 shared_preferences: ^2.0.15 - intl: ^0.17.0 + intl: 0.20.2 http: ^0.13.4 html: ^0.15.0 webview_flutter: ^3.0.4 @@ -47,6 +47,8 @@ dependencies: uni_links: ^0.5.1 modal_bottom_sheet: ^3.0.0-pre overlay_dialog: ^0.2.0 + file_picker: ^5.0.0 + path_provider: ^2.0.0 # The following adds the Cupertino Icons font to your application. @@ -72,6 +74,7 @@ flutter: assets: - assets/article/ - assets/icons/ + - assets/fonts/ # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/assets-and-images/#resolution-aware. @@ -79,25 +82,22 @@ flutter: # For details regarding adding assets from package dependencies, see # https://flutter.dev/assets-and-images/#from-packages - # To add custom fonts to your application, add a fonts section here, - # in this "flutter" section. Each entry in this list should have a - # "family" key with the font family name, and a "fonts" key with a - # list giving the asset and other descriptors for the font. For - # example: - # fonts: - # - family: Schyler - # fonts: - # - asset: fonts/Schyler-Regular.ttf - # - asset: fonts/Schyler-Italic.ttf - # style: italic - # - family: Trajan Pro - # fonts: - # - asset: fonts/TrajanPro.ttf - # - asset: fonts/TrajanPro_Bold.ttf - # weight: 700 - # - # For details regarding fonts from package dependencies, - # see https://flutter.dev/custom-fonts/#from-packages + fonts: + - family: OpenSans + fonts: + - asset: assets/fonts/OpenSans-Regular.ttf + - asset: assets/fonts/OpenSans-Bold.ttf + weight: 700 + - family: Roboto + fonts: + - asset: assets/fonts/Roboto-Regular.ttf + - asset: assets/fonts/Roboto-Bold.ttf + weight: 700 + - family: SourceSerif + fonts: + - asset: assets/fonts/SourceSerif-Regular.ttf + - asset: assets/fonts/SourceSerif-Bold.ttf + weight: 700 flutter_intl: enabled: true -- 2.38.5