Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@
"epubcfi",
"fimber",
"Fimber",
"flutterreadium",
"imgref",
"jsonable",
"kotlin",
Expand Down
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ Key scripts (run from repo root):

### Android

- **Kotlin formatting**: after writing or editing any Kotlin file, run `ktlint --format` on it. The `standard:package-name` violation (underscores in `dk.nota.flutter_readium`) is pre-existing and cannot be auto-corrected — ignore it. All other violations must be resolved before committing.
- **Kotlin formatting**: after writing or editing any Kotlin file, run `ktlint --format` on it. All violations must be resolved before committing.
- **Android log messages**: every `PluginLog.*` call in Kotlin must start with `::functionName` (double colon, then the exact name of the enclosing function). For lambdas, use the name of the enclosing named function. Example: `Log.d(TAG, "::goBackward. Navigator not ready.")`. Single-colon or missing prefixes are bugs; wrong function names from copy-paste are also bugs.
- **Android navigator null guard**: every `suspend` function that needs the navigator must capture it as a local variable with a `?: run { }` early-return guard, then wrap direct navigator calls in `return withContext(coroutineContext) { }`. Functions that only call other wrapper functions (e.g. `evaluateJavascript`) do not need their own guard or `withContext` — delegate instead. Example:
```kotlin
Expand Down
4 changes: 2 additions & 2 deletions flutter_readium/android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ plugins {
id 'org.jetbrains.kotlin.plugin.serialization' version '2.3.21'
}

group 'dk.nota.flutter_readium'
group 'dk.nota.flutterreadium'
version '1.0-SNAPSHOT'

rootProject.allprojects {
Expand All @@ -36,7 +36,7 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget

android {
if (project.android.hasProperty('namespace')) {
namespace 'dk.nota.flutter_readium'
namespace 'dk.nota.flutterreadium'
}

compileOptions {
Expand Down
2 changes: 1 addition & 1 deletion flutter_readium/android/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="dk.nota.flutter_readium">
package="dk.nota.flutterreadium">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dk.nota.flutter_readium
package dk.nota.flutterreadium

enum class ControlPanelInfoType {
STANDARD,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dk.nota.flutter_readium
package dk.nota.flutterreadium

import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.Flow
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dk.nota.flutter_readium
package dk.nota.flutterreadium

import kotlinx.serialization.Serializable
import org.json.JSONObject
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dk.nota.flutter_readium
package dk.nota.flutterreadium

import android.graphics.Color
import android.os.Parcelable
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dk.nota.flutter_readium
package dk.nota.flutterreadium

import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dk.nota.flutter_readium
package dk.nota.flutterreadium

import org.readium.adapter.pdfium.navigator.PdfiumPreferences
import org.readium.r2.navigator.preferences.Axis
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dk.nota.flutter_readium
package dk.nota.flutterreadium

import android.content.Context
import io.flutter.embedding.engine.plugins.FlutterPlugin
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dk.nota.flutter_readium
package dk.nota.flutterreadium

import kotlinx.serialization.Serializable
import org.json.JSONObject
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dk.nota.flutter_readium
package dk.nota.flutterreadium

import androidx.fragment.app.Fragment
import androidx.lifecycle.DefaultLifecycleObserver
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dk.nota.flutter_readium
package dk.nota.flutterreadium

/*
* Modified version of kotlin-toolkit's example app MediaService.
Expand Down Expand Up @@ -328,7 +328,7 @@ class PluginMediaService :
}

companion object {
const val SERVICE_INTERFACE = "dk.nota.flutter_readium.MediaService"
const val SERVICE_INTERFACE = "dk.nota.flutterreadium.MediaService"

fun start(application: Application) {
val intent = intent(application)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* available in the top-level LICENSE file of the project.
*/

package dk.nota.flutter_readium
package dk.nota.flutterreadium

import android.app.Application
import kotlinx.coroutines.*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
@file:OptIn(ExperimentalReadiumApi::class)

package dk.nota.flutter_readium
package dk.nota.flutterreadium

import dk.nota.flutter_readium.models.TextSearchResult
import dk.nota.flutterreadium.models.TextSearchResult
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel
import kotlinx.coroutines.CoroutineScope
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* available in the top-level LICENSE file of the project.
*/

package dk.nota.flutter_readium
package dk.nota.flutterreadium

import org.readium.navigator.media.audio.AudioEngine
import org.readium.navigator.media.audio.AudioNavigatorFactory
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
@file:OptIn(ExperimentalReadiumApi::class, ExperimentalReadiumApi::class)

package dk.nota.flutter_readium
package dk.nota.flutterreadium

import androidx.core.graphics.toColorInt
import dk.nota.flutter_readium.models.FlutterMediaOverlay
import dk.nota.flutter_readium.models.FlutterMediaOverlayItem
import dk.nota.flutter_readium.models.GuidedNavigationDocument
import dk.nota.flutter_readium.models.guidedNavigationMediaType
import dk.nota.flutter_readium.models.toMediaOverlays
import dk.nota.flutterreadium.models.FlutterMediaOverlay
import dk.nota.flutterreadium.models.FlutterMediaOverlayItem
import dk.nota.flutterreadium.models.GuidedNavigationDocument
import dk.nota.flutterreadium.models.guidedNavigationMediaType
import dk.nota.flutterreadium.models.toMediaOverlays
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.async
import kotlinx.coroutines.awaitAll
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dk.nota.flutter_readium
package dk.nota.flutterreadium

import android.util.Log

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dk.nota.flutter_readium
package dk.nota.flutterreadium

import android.app.Activity
import android.app.Application
Expand All @@ -8,20 +8,20 @@ import android.view.ViewGroup
import androidx.fragment.app.FragmentManager
import androidx.savedstate.SavedStateRegistry
import androidx.savedstate.SavedStateRegistryOwner
import dk.nota.flutter_readium.events.ReadiumError
import dk.nota.flutter_readium.events.ReadiumErrorEventChannel
import dk.nota.flutter_readium.events.ReadiumReaderStatus
import dk.nota.flutter_readium.events.ReadiumReaderStatusEventChannel
import dk.nota.flutter_readium.events.TextLocatorEventChannel
import dk.nota.flutter_readium.events.TimedBasedStateEventChannel
import dk.nota.flutter_readium.models.ReadiumTimebasedState
import dk.nota.flutter_readium.navigators.AudiobookNavigator
import dk.nota.flutter_readium.navigators.EpubNavigator
import dk.nota.flutter_readium.navigators.FlutterVisualNavigator
import dk.nota.flutter_readium.navigators.PdfNavigator
import dk.nota.flutter_readium.navigators.SyncAudiobookNavigator
import dk.nota.flutter_readium.navigators.TTSNavigator
import dk.nota.flutter_readium.navigators.TimebasedNavigator
import dk.nota.flutterreadium.events.ReadiumError
import dk.nota.flutterreadium.events.ReadiumErrorEventChannel
import dk.nota.flutterreadium.events.ReadiumReaderStatus
import dk.nota.flutterreadium.events.ReadiumReaderStatusEventChannel
import dk.nota.flutterreadium.events.TextLocatorEventChannel
import dk.nota.flutterreadium.events.TimedBasedStateEventChannel
import dk.nota.flutterreadium.models.ReadiumTimebasedState
import dk.nota.flutterreadium.navigators.AudiobookNavigator
import dk.nota.flutterreadium.navigators.EpubNavigator
import dk.nota.flutterreadium.navigators.FlutterVisualNavigator
import dk.nota.flutterreadium.navigators.PdfNavigator
import dk.nota.flutterreadium.navigators.SyncAudiobookNavigator
import dk.nota.flutterreadium.navigators.TTSNavigator
import dk.nota.flutterreadium.navigators.TimebasedNavigator
import io.flutter.plugin.common.BinaryMessenger
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
Expand Down Expand Up @@ -74,7 +74,7 @@ import kotlin.time.Duration

private const val TAG = "ReadiumReader"

private const val stateKey = "dk.nota.flutter_readium.ReadiumReaderState"
private const val stateKey = "dk.nota.flutterreadium.ReadiumReaderState"

private const val currentPublicationUrlKey = "currentPublicationUrl"
private const val ttsEnabledKey = "ttsEnabled"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dk.nota.flutter_readium
package dk.nota.flutterreadium

import io.flutter.plugin.common.BinaryMessenger
import io.flutter.plugin.common.MethodChannel
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dk.nota.flutter_readium
package dk.nota.flutterreadium

import android.content.Context
import io.flutter.plugin.common.BinaryMessenger
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dk.nota.flutter_readium
package dk.nota.flutterreadium

import android.content.Context
import android.content.ContextWrapper
Expand All @@ -10,12 +10,12 @@ import android.widget.LinearLayout
import android.widget.LinearLayout.generateViewId
import androidx.fragment.app.FragmentActivity
import androidx.fragment.app.commitNow
import dk.nota.flutter_readium.events.ReadiumError
import dk.nota.flutter_readium.events.ReadiumReaderStatus
import dk.nota.flutter_readium.fragments.EpubReaderFragment
import dk.nota.flutter_readium.fragments.PdfReaderFragment
import dk.nota.flutter_readium.models.PageInformation
import dk.nota.flutter_readium.navigators.EpubNavigator
import dk.nota.flutterreadium.events.ReadiumError
import dk.nota.flutterreadium.events.ReadiumReaderStatus
import dk.nota.flutterreadium.fragments.EpubReaderFragment
import dk.nota.flutterreadium.fragments.PdfReaderFragment
import dk.nota.flutterreadium.models.PageInformation
import dk.nota.flutterreadium.navigators.EpubNavigator
import io.flutter.plugin.common.BinaryMessenger
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dk.nota.flutter_readium
package dk.nota.flutterreadium

/**
* Represents a configured selection action from Dart.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dk.nota.flutter_readium
package dk.nota.flutterreadium

import android.app.Activity
import android.app.Application
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dk.nota.flutter_readium.events
package dk.nota.flutterreadium.events

import io.flutter.plugin.common.BinaryMessenger
import io.flutter.plugin.common.EventChannel
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package dk.nota.flutter_readium.events
package dk.nota.flutterreadium.events

import dk.nota.flutter_readium.PluginLog
import dk.nota.flutter_readium.PublicationError
import dk.nota.flutterreadium.PluginLog
import dk.nota.flutterreadium.PublicationError
import io.flutter.plugin.common.BinaryMessenger
import kotlinx.coroutines.launch
import kotlinx.serialization.Serializable
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package dk.nota.flutter_readium.events
package dk.nota.flutterreadium.events

import dk.nota.flutter_readium.PluginLog
import dk.nota.flutterreadium.PluginLog
import io.flutter.plugin.common.BinaryMessenger
import kotlinx.coroutines.launch
import kotlinx.serialization.SerialName
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dk.nota.flutter_readium.events
package dk.nota.flutterreadium.events

import io.flutter.plugin.common.BinaryMessenger
import kotlinx.coroutines.launch
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package dk.nota.flutter_readium.events
package dk.nota.flutterreadium.events

import dk.nota.flutter_readium.jsonEncode
import dk.nota.flutter_readium.models.ReadiumTimebasedState
import dk.nota.flutterreadium.jsonEncode
import dk.nota.flutterreadium.models.ReadiumTimebasedState
import io.flutter.plugin.common.BinaryMessenger
import kotlinx.coroutines.launch

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package dk.nota.flutter_readium.fragments
package dk.nota.flutterreadium.fragments

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import dk.nota.flutter_readium.models.ReaderViewModel
import dk.nota.flutter_readium.PluginLog
import dk.nota.flutterreadium.models.ReaderViewModel
import dk.nota.flutterreadium.PluginLog
import org.readium.r2.navigator.Navigator
import org.readium.r2.shared.publication.Locator

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package dk.nota.flutter_readium.fragments
package dk.nota.flutterreadium.fragments

import android.os.Bundle
import android.view.ActionMode
Expand All @@ -7,15 +7,15 @@ import android.view.MenuItem
import android.view.View
import androidx.fragment.app.commitNow
import androidx.lifecycle.lifecycleScope
import dk.nota.flutter_readium.FlutterEpubPreferences
import dk.nota.flutter_readium.PluginLog
import dk.nota.flutter_readium.R
import dk.nota.flutter_readium.ReadiumReader
import dk.nota.flutter_readium.isFixed
import dk.nota.flutter_readium.models.EpubReaderViewModel
import dk.nota.flutter_readium.models.ViewPortSize
import dk.nota.flutter_readium.progression
import dk.nota.flutter_readium.withMainContext
import dk.nota.flutterreadium.FlutterEpubPreferences
import dk.nota.flutterreadium.PluginLog
import dk.nota.flutterreadium.R
import dk.nota.flutterreadium.ReadiumReader
import dk.nota.flutterreadium.isFixed
import dk.nota.flutterreadium.models.EpubReaderViewModel
import dk.nota.flutterreadium.models.ViewPortSize
import dk.nota.flutterreadium.progression
import dk.nota.flutterreadium.withMainContext
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.launch
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
package dk.nota.flutter_readium.fragments
package dk.nota.flutterreadium.fragments

import android.os.Bundle
import android.util.Log
import android.view.View
import androidx.fragment.app.commitNow
import androidx.lifecycle.lifecycleScope
import dk.nota.flutter_readium.R
import dk.nota.flutter_readium.ReadiumReader
import dk.nota.flutter_readium.models.PdfReaderViewModel
import dk.nota.flutterreadium.R
import dk.nota.flutterreadium.ReadiumReader
import dk.nota.flutterreadium.models.PdfReaderViewModel
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.MainScope
Expand Down Expand Up @@ -66,7 +66,7 @@ class PdfReaderFragment :

/**
* Synchronous wrappers around the navigator's `go*` methods so the
* surrounding [dk.nota.flutter_readium.navigators.PdfNavigator] can await
* surrounding [dk.nota.flutterreadium.navigators.PdfNavigator] can await
* fragment-startup before calling.
*/
fun goBackward(animated: Boolean): Boolean {
Expand Down
Loading