diff --git a/android/app/build.gradle b/android/app/build.gradle index 1304c9d4ee..b74a0b2720 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -1,5 +1,8 @@ apply plugin: 'com.android.application' +apply from: 'capacitor.build.gradle' +apply plugin: 'kotlin-android' + android { namespace "com.logseq.app" compileSdkVersion rootProject.ext.compileSdkVersion @@ -11,8 +14,8 @@ android { versionName "0.11.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" aaptOptions { - // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. - // Default: https://android.googlesource.com/platform/frameworks/base/+/282e181b58cf72b6ca770dc7ca5f91f135444502/tools/aapt/AaptAssets.cpp#61 + // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. + // Default: https://android.googlesource.com/platform/frameworks/base/+/282e181b58cf72b6ca770dc7ca5f91f135444502/tools/aapt/AaptAssets.cpp#61 ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~' } } @@ -22,10 +25,14 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } + + kotlinOptions { + jvmTarget = '21' + } } repositories { - flatDir{ + flatDir { dirs '../capacitor-cordova-android-plugins/src/main/libs', 'libs' } } @@ -43,13 +50,11 @@ dependencies { implementation project(':capacitor-cordova-android-plugins') } -apply from: 'capacitor.build.gradle' - try { def servicesJSON = file('google-services.json') if (servicesJSON.text) { apply plugin: 'com.google.gms.google-services' } -} catch(Exception e) { +} catch (Exception e) { logger.warn("google-services.json not found, google-services plugin not applied. Push Notifications won't work") } diff --git a/android/app/capacitor.build.gradle b/android/app/capacitor.build.gradle index 7a7d6c0539..6c8858f80e 100644 --- a/android/app/capacitor.build.gradle +++ b/android/app/capacitor.build.gradle @@ -1,14 +1,15 @@ // DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN android { - compileOptions { - sourceCompatibility JavaVersion.VERSION_21 - targetCompatibility JavaVersion.VERSION_21 - } + compileOptions { + sourceCompatibility JavaVersion.VERSION_21 + targetCompatibility JavaVersion.VERSION_21 + } } apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle" dependencies { + implementation 'androidx.core:core-ktx:1.16.0' implementation project(':capacitor-action-sheet') implementation project(':capacitor-app') implementation project(':capacitor-camera') @@ -21,7 +22,6 @@ dependencies { implementation project(':capacitor-status-bar') implementation project(':capawesome-capacitor-background-task') implementation project(':capgo-capacitor-navigation-bar') - implementation project(':logseq-capacitor-file-sync') implementation project(':capacitor-voice-recorder') implementation project(':send-intent') implementation project(':jcesarmobile-ssl-skip') @@ -30,5 +30,5 @@ dependencies { if (hasProperty('postBuildExtras')) { - postBuildExtras() + postBuildExtras() } diff --git a/android/app/src/main/assets/capacitor.plugins.json b/android/app/src/main/assets/capacitor.plugins.json index 3be563a510..cb6b48cd80 100644 --- a/android/app/src/main/assets/capacitor.plugins.json +++ b/android/app/src/main/assets/capacitor.plugins.json @@ -47,10 +47,6 @@ "pkg": "@capgo/capacitor-navigation-bar", "classpath": "ee.forgr.capacitor_navigation_bar.NavigationBarPlugin" }, - { - "pkg": "@logseq/capacitor-file-sync", - "classpath": "com.logseq.app.filesync.FileSyncPlugin" - }, { "pkg": "capacitor-voice-recorder", "classpath": "com.tchvu3.capacitorvoicerecorder.VoiceRecorder" diff --git a/android/app/src/main/java/com/logseq/app/MainActivity.java b/android/app/src/main/java/com/logseq/app/MainActivity.java index 6ea8ff0862..acdef0a406 100644 --- a/android/app/src/main/java/com/logseq/app/MainActivity.java +++ b/android/app/src/main/java/com/logseq/app/MainActivity.java @@ -13,7 +13,8 @@ public class MainActivity extends BridgeActivity { @Override public void onCreate(Bundle savedInstanceState) { registerPlugin(FolderPicker.class); - registerPlugin(FsWatcher.class); + registerPlugin(UILocal.class); + super.onCreate(savedInstanceState); new Timer().schedule(new TimerTask() { @@ -27,7 +28,6 @@ public class MainActivity extends BridgeActivity { }); } }, 5000); - } @Override @@ -51,6 +51,4 @@ public class MainActivity extends BridgeActivity { }); } } - - } diff --git a/android/build.gradle b/android/build.gradle index c6bd5595f2..77a2715b02 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -2,6 +2,9 @@ buildscript { + ext { + kotlin_version = '2.1.21' + } repositories { google() jcenter() @@ -10,6 +13,7 @@ buildscript { dependencies { classpath 'com.android.tools.build:gradle:8.7.2' classpath 'com.google.gms:google-services:4.4.2' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files diff --git a/android/capacitor.settings.gradle b/android/capacitor.settings.gradle index 91c6275bf6..fa7b47c7fa 100644 --- a/android/capacitor.settings.gradle +++ b/android/capacitor.settings.gradle @@ -38,9 +38,6 @@ project(':capawesome-capacitor-background-task').projectDir = new File('../node_ include ':capgo-capacitor-navigation-bar' project(':capgo-capacitor-navigation-bar').projectDir = new File('../node_modules/@capgo/capacitor-navigation-bar/android') -include ':logseq-capacitor-file-sync' -project(':logseq-capacitor-file-sync').projectDir = new File('../node_modules/@logseq/capacitor-file-sync/android') - include ':capacitor-voice-recorder' project(':capacitor-voice-recorder').projectDir = new File('../node_modules/capacitor-voice-recorder/android') diff --git a/capacitor.config.ts b/capacitor.config.ts index da2db75d8c..69fb96a24c 100644 --- a/capacitor.config.ts +++ b/capacitor.config.ts @@ -1,16 +1,14 @@ import { CapacitorConfig } from '@capacitor/cli' -import fs from 'fs' +import * as fs from 'fs' const version = fs.readFileSync('static/package.json', 'utf8').match(/"version": "(.*?)"/)?.at(1) ?? '0.0.0' const config: CapacitorConfig = { appId: 'com.logseq.app', appName: 'Logseq', - bundledWebRuntime: false, webDir: 'public', loggingBehavior: 'debug', server: { - // https://capacitorjs.com/docs/updating/5-0#update-androidscheme androidScheme: 'http', }, plugins: { @@ -38,11 +36,6 @@ const config: CapacitorConfig = { ios: { scheme: 'Logseq', appendUserAgent: `Logseq/${version} (iOS)` - }, - cordova: { - staticPlugins: [ - '@logseq/capacitor-file-sync', // AgeEncryption requires static link - ] } } diff --git a/src/main/capacitor/app.cljs b/src/main/capacitor/app.cljs index 4c778f71c5..e24484ece7 100644 --- a/src/main/capacitor/app.cljs +++ b/src/main/capacitor/app.cljs @@ -19,6 +19,7 @@ [frontend.db.utils :as db-util] [frontend.date :as frontend-date] [frontend.handler.repo :as repo-handler] + [frontend.mobile.util :as mobile-util] [goog.date :as gdate] [logseq.db :as ldb] [capacitor.pages.settings :as settings])) @@ -204,19 +205,26 @@ (ionic/ion-button {:size "small" :fill "clear" :on-click (fn [] - (ui/open-modal! - (fn [{:keys [close!]}] - (ionic/ion-datetime - {:presentation "date" - :onIonChange (fn [^js e] - (let [val (.-value (.-detail e))] - (let [page-name (frontend-date/journal-name (gdate/Date. (js/Date. val))) - nav-to-journal! #(pages-util/nav-to-block! % {:reload-pages! (fn [] ())})] - (if-let [journal (handler/local-page page-name)] - (nav-to-journal! journal) - (-> (handler/ (handler/ (.showDatePicker mobile-util/ui-local) + (p/then (fn [^js e] (some-> e (.-value) (apply-date!))))) + + (ui/open-modal! + (fn [{:keys [close!]}] + (ionic/ion-datetime + {:presentation "date" + :onIonChange (fn [^js e] + (let [val (.-value (.-detail e))] + (apply-date! val) + (close!)))}))))))} [:span {:slot "icon-only"} (ionic/tabler-icon "calendar-month" {:size 22})]) (ionic/ion-button {:fill "clear"} @@ -224,7 +232,7 @@ {:routerDirection "forward" :class "w-full" :component settings/page} - (ionic/tabler-icon "dots-circle-horizontal" {:size 24})))))) + [:span {:slot "icon-only"} (ionic/tabler-icon "dots-circle-horizontal" {:size 24})]))))) ;; main content (if db-restoring? diff --git a/src/main/frontend/mobile/util.cljs b/src/main/frontend/mobile/util.cljs index 6d03b220c0..94a1946a34 100644 --- a/src/main/frontend/mobile/util.cljs +++ b/src/main/frontend/mobile/util.cljs @@ -22,6 +22,7 @@ (.convertFileSrc Capacitor path-str)) (defonce folder-picker (registerPlugin "FolderPicker")) +(defonce ui-local (registerPlugin "UILocal")) (when (native-ios?) (defonce ios-utils (registerPlugin "Utils")))