From 90125aa7b813f5f3bb8d7366e41719b951b165ce Mon Sep 17 00:00:00 2001
From: Pierre-Yves Nicolas <6371790+pynicolas@users.noreply.github.com>
Date: Tue, 18 Nov 2025 17:29:37 +0100
Subject: [PATCH] Reorg: move ImageRepository and PdfFileManager to data
---
app/src/main/java/org/fairscan/app/MainActivity.kt | 1 +
app/src/main/java/org/fairscan/app/MainViewModel.kt | 12 +++++-------
app/src/main/java/org/fairscan/app/PdfGeneration.kt | 1 +
.../org/fairscan/app/{ => data}/ImageRepository.kt | 5 ++---
.../org/fairscan/app/{ => data}/PdfFileManager.kt | 8 +++++++-
app/src/main/java/org/fairscan/app/ui/UiState.kt | 2 +-
.../main/java/org/fairscan/app/view/ExportScreen.kt | 2 +-
.../fairscan/app/{ => data}/ImageRepositoryTest.kt | 3 ++-
.../fairscan/app/{ => data}/PdfFileManagerTest.kt | 2 +-
9 files changed, 21 insertions(+), 15 deletions(-)
rename app/src/main/java/org/fairscan/app/{ => data}/ImageRepository.kt (98%)
rename app/src/main/java/org/fairscan/app/{ => data}/PdfFileManager.kt (95%)
rename app/src/test/java/org/fairscan/app/{ => data}/ImageRepositoryTest.kt (98%)
rename app/src/test/java/org/fairscan/app/{ => data}/PdfFileManagerTest.kt (99%)
diff --git a/app/src/main/java/org/fairscan/app/MainActivity.kt b/app/src/main/java/org/fairscan/app/MainActivity.kt
index 75d1e13..0b3c652 100644
--- a/app/src/main/java/org/fairscan/app/MainActivity.kt
+++ b/app/src/main/java/org/fairscan/app/MainActivity.kt
@@ -46,6 +46,7 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.suspendCancellableCoroutine
import kotlinx.coroutines.withContext
+import org.fairscan.app.data.GeneratedPdf
import org.fairscan.app.ui.theme.FairScanTheme
import org.fairscan.app.view.AboutScreen
import org.fairscan.app.view.CameraScreen
diff --git a/app/src/main/java/org/fairscan/app/MainViewModel.kt b/app/src/main/java/org/fairscan/app/MainViewModel.kt
index 97f3a5e..8005bef 100644
--- a/app/src/main/java/org/fairscan/app/MainViewModel.kt
+++ b/app/src/main/java/org/fairscan/app/MainViewModel.kt
@@ -39,6 +39,9 @@ import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
+import org.fairscan.app.data.GeneratedPdf
+import org.fairscan.app.data.ImageRepository
+import org.fairscan.app.data.PdfFileManager
import org.fairscan.app.data.recentDocumentsDataStore
import org.fairscan.app.domain.ImageSegmentationService
import org.fairscan.app.domain.detectDocumentQuad
@@ -71,7 +74,8 @@ class MainViewModel(
PdfFileManager(
File(context.cacheDir, "pdfs"),
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),
- AndroidPdfWriter()),
+ AndroidPdfWriter()
+ ),
context.recentDocumentsDataStore,
) as T
}
@@ -385,12 +389,6 @@ class MainViewModel(
}
}
-data class GeneratedPdf(
- val file: File,
- val sizeInBytes: Long,
- val pageCount: Int,
-)
-
// TODO Move somewhere else: ViewModel should not depend on that
data class PdfGenerationActions(
val startGeneration: () -> Unit,
diff --git a/app/src/main/java/org/fairscan/app/PdfGeneration.kt b/app/src/main/java/org/fairscan/app/PdfGeneration.kt
index 683a1ed..8ac8dc8 100644
--- a/app/src/main/java/org/fairscan/app/PdfGeneration.kt
+++ b/app/src/main/java/org/fairscan/app/PdfGeneration.kt
@@ -20,6 +20,7 @@ import com.tom_roush.pdfbox.pdmodel.PDPageContentStream
import com.tom_roush.pdfbox.pdmodel.PDPageContentStream.AppendMode
import com.tom_roush.pdfbox.pdmodel.common.PDRectangle
import com.tom_roush.pdfbox.pdmodel.graphics.image.JPEGFactory
+import org.fairscan.app.data.PdfWriter
import java.io.OutputStream
class AndroidPdfWriter : PdfWriter {
diff --git a/app/src/main/java/org/fairscan/app/ImageRepository.kt b/app/src/main/java/org/fairscan/app/data/ImageRepository.kt
similarity index 98%
rename from app/src/main/java/org/fairscan/app/ImageRepository.kt
rename to app/src/main/java/org/fairscan/app/data/ImageRepository.kt
index da816c9..45be75e 100644
--- a/app/src/main/java/org/fairscan/app/ImageRepository.kt
+++ b/app/src/main/java/org/fairscan/app/data/ImageRepository.kt
@@ -12,13 +12,12 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see .
*/
-package org.fairscan.app
+package org.fairscan.app.data
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.toImmutableList
import kotlinx.serialization.json.Json
-import org.fairscan.app.data.DocumentMetadata
-import org.fairscan.app.data.Page
+import org.fairscan.app.ImageTransformations
import java.io.File
const val SCAN_DIR_NAME = "scanned_pages"
diff --git a/app/src/main/java/org/fairscan/app/PdfFileManager.kt b/app/src/main/java/org/fairscan/app/data/PdfFileManager.kt
similarity index 95%
rename from app/src/main/java/org/fairscan/app/PdfFileManager.kt
rename to app/src/main/java/org/fairscan/app/data/PdfFileManager.kt
index 76bd8ee..5ab082f 100644
--- a/app/src/main/java/org/fairscan/app/PdfFileManager.kt
+++ b/app/src/main/java/org/fairscan/app/data/PdfFileManager.kt
@@ -12,12 +12,18 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see .
*/
-package org.fairscan.app
+package org.fairscan.app.data
import java.io.File
import java.io.FileOutputStream
import java.io.OutputStream
+data class GeneratedPdf(
+ val file: File,
+ val sizeInBytes: Long,
+ val pageCount: Int,
+)
+
fun interface PdfWriter {
fun writePdfFromJpegs(jpegs: Sequence, outputStream: OutputStream): Int
}
diff --git a/app/src/main/java/org/fairscan/app/ui/UiState.kt b/app/src/main/java/org/fairscan/app/ui/UiState.kt
index ea70277..250fce4 100644
--- a/app/src/main/java/org/fairscan/app/ui/UiState.kt
+++ b/app/src/main/java/org/fairscan/app/ui/UiState.kt
@@ -15,7 +15,7 @@
package org.fairscan.app.ui
import android.net.Uri
-import org.fairscan.app.GeneratedPdf
+import org.fairscan.app.data.GeneratedPdf
import java.io.File
data class PdfGenerationUiState(
diff --git a/app/src/main/java/org/fairscan/app/view/ExportScreen.kt b/app/src/main/java/org/fairscan/app/view/ExportScreen.kt
index 6a1fe04..72f30d0 100644
--- a/app/src/main/java/org/fairscan/app/view/ExportScreen.kt
+++ b/app/src/main/java/org/fairscan/app/view/ExportScreen.kt
@@ -66,7 +66,7 @@ import androidx.compose.ui.text.font.FontStyle
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.core.net.toUri
-import org.fairscan.app.GeneratedPdf
+import org.fairscan.app.data.GeneratedPdf
import org.fairscan.app.Navigation
import org.fairscan.app.PdfGenerationActions
import org.fairscan.app.R
diff --git a/app/src/test/java/org/fairscan/app/ImageRepositoryTest.kt b/app/src/test/java/org/fairscan/app/data/ImageRepositoryTest.kt
similarity index 98%
rename from app/src/test/java/org/fairscan/app/ImageRepositoryTest.kt
rename to app/src/test/java/org/fairscan/app/data/ImageRepositoryTest.kt
index 0b99b68..3989c25 100644
--- a/app/src/test/java/org/fairscan/app/ImageRepositoryTest.kt
+++ b/app/src/test/java/org/fairscan/app/data/ImageRepositoryTest.kt
@@ -12,9 +12,10 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see .
*/
-package org.fairscan.app
+package org.fairscan.app.data
import org.assertj.core.api.Assertions.assertThat
+import org.fairscan.app.ImageTransformations
import org.junit.Rule
import org.junit.Test
import org.junit.rules.TemporaryFolder
diff --git a/app/src/test/java/org/fairscan/app/PdfFileManagerTest.kt b/app/src/test/java/org/fairscan/app/data/PdfFileManagerTest.kt
similarity index 99%
rename from app/src/test/java/org/fairscan/app/PdfFileManagerTest.kt
rename to app/src/test/java/org/fairscan/app/data/PdfFileManagerTest.kt
index 0172a42..3d4e11c 100644
--- a/app/src/test/java/org/fairscan/app/PdfFileManagerTest.kt
+++ b/app/src/test/java/org/fairscan/app/data/PdfFileManagerTest.kt
@@ -12,7 +12,7 @@
* You should have received a copy of the GNU General Public License along with
* this program. If not, see .
*/
-package org.fairscan.app
+package org.fairscan.app.data
import org.assertj.core.api.Assertions.assertThat
import org.junit.Test