replace vault by kasier

This commit is contained in:
m
2026-09-17 07:59:21 +02:00
parent cd4f0179fc
commit f29a3c3617
191 changed files with 956 additions and 927 deletions
+4
View File
@@ -7,6 +7,10 @@ backend/uploads/*
.env .env
backend/.env backend/.env
# Uploads locaux transitoires (racine / backend)
uploads/
backend/uploads/*
# Android / Gradle # Android / Gradle
mobile-kotlin/local.properties mobile-kotlin/local.properties
mobile-kotlin/.gradle/ mobile-kotlin/.gradle/
+17 -10
View File
@@ -1,4 +1,4 @@
# Pipeline GitLab pour VaultDrop — CI + Release. # Pipeline GitLab pour Kazier — CI + Release.
# #
# Prérequis runner : # Prérequis runner :
# - Un runner avec executor Docker pour les jobs d'images (postgres service, # - Un runner avec executor Docker pour les jobs d'images (postgres service,
@@ -28,6 +28,7 @@ variables:
ANDROID_IMAGE: "cimg/android:2024.01" ANDROID_IMAGE: "cimg/android:2024.01"
GRADLE_USER_HOME: "$CI_PROJECT_DIR/.gradle-home" GRADLE_USER_HOME: "$CI_PROJECT_DIR/.gradle-home"
CGO_ENABLED: "0" CGO_ENABLED: "0"
GLAB_VERSION: "1.118.0"
default: default:
interruptible: true interruptible: true
@@ -62,10 +63,10 @@ test-backend:
- name: $POSTGRES_IMAGE - name: $POSTGRES_IMAGE
alias: postgres alias: postgres
variables: variables:
POSTGRES_DB: vaultdrop_test POSTGRES_DB: kazier_test
POSTGRES_USER: vaultdrop POSTGRES_USER: kazier
POSTGRES_PASSWORD: vaultdrop POSTGRES_PASSWORD: kazier
TEST_DATABASE_URL: postgres://vaultdrop:vaultdrop@postgres:5432/vaultdrop_test?sslmode=disable TEST_DATABASE_URL: postgres://kazier:kazier@postgres:5432/kazier_test?sslmode=disable
script: script:
- mkdir -p .go-cache && export GOPATH="$CI_PROJECT_DIR/.go-cache" - mkdir -p .go-cache && export GOPATH="$CI_PROJECT_DIR/.go-cache"
- go mod download - go mod download
@@ -93,11 +94,11 @@ build-backend:
script: script:
- export VERSION=$(cat VERSION) - export VERSION=$(cat VERSION)
- mkdir -p backend/bin - mkdir -p backend/bin
- cd backend && CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags "-s -w -X main.version=$VERSION" -o bin/vaultdrop-server cmd/server/main.go - cd backend && CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags "-s -w -X main.version=$VERSION" -o bin/kazier-server cmd/server/main.go
- ./bin/vaultdrop-server --version - ./bin/kazier-server --version
artifacts: artifacts:
paths: paths:
- backend/bin/vaultdrop-server - backend/bin/kazier-server
expire_in: 1 week expire_in: 1 week
# --------------------------------------------------------------- docker ---- # --------------------------------------------------------------- docker ----
@@ -153,9 +154,15 @@ release-apk:
fi fi
- ./gradlew :app:assembleRelease -q - ./gradlew :app:assembleRelease -q
- cd "$CI_PROJECT_DIR" - cd "$CI_PROJECT_DIR"
- |
# glab : création de la GitLab Release + upload de l'APK en asset.
curl -sSLf \
"https://gitlab.com/gitlab-org/cli/-/releases/v${GLAB_VERSION}/downloads/glab_${GLAB_VERSION}_linux_amd64.tar.gz" \
| tar xz --strip-components=1 -C /usr/local/bin bin/glab
- glab --version
- export GITLAB_TOKEN="$GITLAB_API_TOKEN" - export GITLAB_TOKEN="$GITLAB_API_TOKEN"
- glab release create "v$VERSION" - glab release create "v$VERSION"
--name "VaultDrop v$VERSION" --name "Kazier v$VERSION"
--notes-file CHANGELOG.md --notes-file CHANGELOG.md
"mobile-kotlin/app/build/outputs/apk/release/app-release.apk" "mobile-kotlin/app/build/outputs/apk/release/app-release.apk"
needs: ["docker"] needs: ["docker"]
@@ -180,7 +187,7 @@ release-docker:
: "${DOCKERHUB_TOKEN:?DOCKERHUB_TOKEN manquant}" : "${DOCKERHUB_TOKEN:?DOCKERHUB_TOKEN manquant}"
: "${DOCKERHUB_NAMESPACE:?DOCKERHUB_NAMESPACE manquant}" : "${DOCKERHUB_NAMESPACE:?DOCKERHUB_NAMESPACE manquant}"
echo "$DOCKERHUB_TOKEN" | docker login -u "$DOCKERHUB_USER" --password-stdin docker.io echo "$DOCKERHUB_TOKEN" | docker login -u "$DOCKERHUB_USER" --password-stdin docker.io
IMAGE="$DOCKERHUB_NAMESPACE/vaultdrop" IMAGE="$DOCKERHUB_NAMESPACE/kazier"
docker tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_TAG" "$IMAGE:$CI_COMMIT_TAG" docker tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_TAG" "$IMAGE:$CI_COMMIT_TAG"
docker tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_TAG" "$IMAGE:latest" docker tag "$CI_REGISTRY_IMAGE:$CI_COMMIT_TAG" "$IMAGE:latest"
docker push "$IMAGE:$CI_COMMIT_TAG" docker push "$IMAGE:$CI_COMMIT_TAG"
+2 -2
View File
@@ -1,4 +1,4 @@
# VaultDrop # Kazier
## Project Status ## Project Status
@@ -50,7 +50,7 @@ Tests mobiles : JVM unit tests dans `app/src/test` (JUnit + Robolectric + Room i
## Frontend Structure (mobile-kotlin) ## Frontend Structure (mobile-kotlin)
- Entry point: `app/src/main/java/com/vaultdrop/mobile/VaultDropApplication.kt` (Hilt + `HiltWorkerFactory`) + `MainActivity.kt` (Hilt) ; navigation Compose dans `ui/navigation/` (`NavGraph.kt`, `VaultDropApp.kt`) - Entry point: `app/src/main/java/com/kazier/mobile/KazierApplication.kt` (Hilt + `HiltWorkerFactory`) + `MainActivity.kt` (Hilt) ; navigation Compose dans `ui/navigation/` (`NavGraph.kt`, `KazierApp.kt`)
- Data layer — `data/`: - Data layer — `data/`:
- `data/local/` — Room SQLite (DB `dot.db`, **version 7**, `Migrations.kt` : tables `folders`, `files`, `user_preferences`, `pending_operations`) : entités Folder/File/UserPreference/PendingOperation, DAO, tri (`FileOrdering`) ; flag `processed` sur `files` (mode review « traiter », local au device, **gate de sync** : un fichier pas encore traité n'est jamais poussé) ; outbox transactionnel `pending_operations` (v7) - `data/local/` — Room SQLite (DB `dot.db`, **version 7**, `Migrations.kt` : tables `folders`, `files`, `user_preferences`, `pending_operations`) : entités Folder/File/UserPreference/PendingOperation, DAO, tri (`FileOrdering`) ; flag `processed` sur `files` (mode review « traiter », local au device, **gate de sync** : un fichier pas encore traité n'est jamais poussé) ; outbox transactionnel `pending_operations` (v7)
- `data/remote/` — Retrofit/Moshi : `ApiService.kt` + `dto/Dtos.kt` = **contrat HTTP** (`{ data, meta }`, erreurs `{ error: { code, message } }`) ; `ApiClient.kt` normalise les réponses ; interceptors OkHttp (`AuthInterceptor`, `ServerUrlInterceptor`) - `data/remote/` — Retrofit/Moshi : `ApiService.kt` + `dto/Dtos.kt` = **contrat HTTP** (`{ data, meta }`, erreurs `{ error: { code, message } }`) ; `ApiClient.kt` normalise les réponses ; interceptors OkHttp (`AuthInterceptor`, `ServerUrlInterceptor`)
+4 -1
View File
@@ -1,10 +1,13 @@
# Changelog # Changelog
Toutes les modifications notables de VaultDrop sont documentées ici. Toutes les modifications notables de Kazier sont documentées ici.
Le format suit [Keep a Changelog](https://keepachangelog.com/fr/1.1.0/) et le versioning est [SemVer](https://semver.org/lang/fr/). Le format suit [Keep a Changelog](https://keepachangelog.com/fr/1.1.0/) et le versioning est [SemVer](https://semver.org/lang/fr/).
## [Unreleased] ## [Unreleased]
### Changé
- **Renommage : VaultDrop → Kazier.** Marque, package Android (`com.kazier.mobile`), module Go (`github.com/kazier/backend`), binaire/image `kazier-server`, creds Postgres par défaut. Le code interne `dot.db` est conservé.
### Ajouté ### Ajouté
- Pipeline de release CI (GitLab) : lint, tests backend/mobile, build Docker, signature APK release, publication GitLab Release + Docker Hub. - Pipeline de release CI (GitLab) : lint, tests backend/mobile, build Docker, signature APK release, publication GitLab Release + Docker Hub.
- `backend/Dockerfile` multi-stage : image de production avec Tesseract (fra+eng) embarqué, user non-root, labels OCI. - `backend/Dockerfile` multi-stage : image de production avec Tesseract (fra+eng) embarqué, user non-root, labels OCI.
+1 -1
View File
@@ -623,7 +623,7 @@ to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found. the "copyright" line and a pointer to where the full notice is found.
VaultDrop — personal document vault, local-first. Kazier — personal document vault, local-first.
Copyright (C) 2026 Thirdshop Copyright (C) 2026 Thirdshop
This program is free software: you can redistribute it and/or modify This program is free software: you can redistribute it and/or modify
+3 -3
View File
@@ -1,10 +1,10 @@
# VaultDrop # Kazier
VaultDrop est un coffre-fort de documents personnel, local-first. Le client Android reflète le SAF dans une base Room et pousse les métadonnées de ses mutations via un outbox transactionnel vers le serveur Go/PostgreSQL — pas d'upload physique, pas de cloud-dépendance. Kazier est un coffre-fort de documents personnel, local-first. Le client Android reflète le SAF dans une base Room et pousse les métadonnées de ses mutations via un outbox transactionnel vers le serveur Go/PostgreSQL — pas d'upload physique, pas de cloud-dépendance.
[![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](LICENSE) [![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-blue.svg)](LICENSE)
Disponible sur [thirdshop.fr](https://thirdshop.fr/en/applications/vault/) Disponible sur [thirdshop.fr](https://thirdshop.fr/en/applications/kazier/)
## Setup ## Setup
+1 -1
View File
@@ -2,7 +2,7 @@
# Serveur # Serveur
PORT=8080 PORT=8080
DATABASE_URL=postgres://vaultdrop:vaultdrop@localhost:5432/vaultdrop_dev?sslmode=disable DATABASE_URL=postgres://kazier:kazier@localhost:5432/kazier_dev?sslmode=disable
UPLOAD_DIR=./uploads UPLOAD_DIR=./uploads
MAX_FILE_SIZE_MB=50 MAX_FILE_SIZE_MB=50
OCR_LANG=fra+eng OCR_LANG=fra+eng
+9 -9
View File
@@ -14,7 +14,7 @@ ARG VERSION
RUN CGO_ENABLED=0 GOOS=linux go build \ RUN CGO_ENABLED=0 GOOS=linux go build \
-trimpath \ -trimpath \
-ldflags "-s -w -X main.version=${VERSION}" \ -ldflags "-s -w -X main.version=${VERSION}" \
-o /out/vaultdrop-server \ -o /out/kazier-server \
./cmd/server/main.go ./cmd/server/main.go
# --- runtime: mince, Tesseract (fra+eng) embarqué pour l'OCR --- # --- runtime: mince, Tesseract (fra+eng) embarqué pour l'OCR ---
@@ -30,30 +30,30 @@ WORKDIR /app
ARG VERSION ARG VERSION
ARG BUILD_DATE ARG BUILD_DATE
LABEL org.opencontainers.image.title="vaultdrop-server" \ LABEL org.opencontainers.image.title="kazier-server" \
org.opencontainers.image.description="VaultDrop backend API (Go/Gin + PostgreSQL) — local-first document vault" \ org.opencontainers.image.description="Kazier backend API (Go/Gin + PostgreSQL) — local-first document vault" \
org.opencontainers.image.version="${VERSION}" \ org.opencontainers.image.version="${VERSION}" \
org.opencontainers.image.licenses="AGPL-3.0-only" \ org.opencontainers.image.licenses="AGPL-3.0-only" \
org.opencontainers.image.source="https://gitlab.com/thirdshop-org/dot" \ org.opencontainers.image.source="https://gitlab.com/thirdshop-org/dot" \
org.opencontainers.image.url="https://thirdshop.fr/en/applications/vault/" \ org.opencontainers.image.url="https://thirdshop.fr/en/applications/kazier/" \
org.opencontainers.image.created="${BUILD_DATE}" \ org.opencontainers.image.created="${BUILD_DATE}" \
org.opencontainers.image.revision="" org.opencontainers.image.revision=""
COPY --from=builder /out/vaultdrop-server /usr/local/bin/vaultdrop-server COPY --from=builder /out/kazier-server /usr/local/bin/kazier-server
# UPLOAD_DIR persistant, user non-root # UPLOAD_DIR persistant, user non-root
RUN mkdir -p /app/uploads \ RUN mkdir -p /app/uploads \
&& adduser -D -H -u 10001 vaultdrop \ && adduser -D -H -u 10001 kazier \
&& chown vaultdrop:vaultdrop /app/uploads && chown kazier:kazier /app/uploads
VOLUME /app/uploads VOLUME /app/uploads
ENV PORT=8080 \ ENV PORT=8080 \
UPLOAD_DIR=/app/uploads UPLOAD_DIR=/app/uploads
USER vaultdrop USER kazier
EXPOSE 8080 EXPOSE 8080
HEALTHCHECK --interval=30s --timeout=3s --retries=3 \ HEALTHCHECK --interval=30s --timeout=3s --retries=3 \
CMD wget -q -O - http://127.0.0.1:8080/api/v1/health || exit 1 CMD wget -q -O - http://127.0.0.1:8080/api/v1/health || exit 1
ENTRYPOINT ["vaultdrop-server"] ENTRYPOINT ["kazier-server"]
+8 -8
View File
@@ -12,13 +12,13 @@ import (
"time" "time"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/vaultdrop/backend/config" "github.com/kazier/backend/config"
"github.com/vaultdrop/backend/db" "github.com/kazier/backend/db"
"github.com/vaultdrop/backend/handlers" "github.com/kazier/backend/handlers"
"github.com/vaultdrop/backend/ocr" "github.com/kazier/backend/ocr"
"github.com/vaultdrop/backend/pkg/auth" "github.com/kazier/backend/pkg/auth"
"github.com/vaultdrop/backend/repository" "github.com/kazier/backend/repository"
"github.com/vaultdrop/backend/service" "github.com/kazier/backend/service"
) )
var version = "dev" var version = "dev"
@@ -31,7 +31,7 @@ func newRouter() *gin.Engine {
func main() { func main() {
if len(os.Args) > 1 && os.Args[1] == "--version" { if len(os.Args) > 1 && os.Args[1] == "--version" {
fmt.Printf("vaultdrop-server %s\n", version) fmt.Printf("kazier-server %s\n", version)
os.Exit(0) os.Exit(0)
} }
+1 -1
View File
@@ -4,7 +4,7 @@ import (
"fmt" "fmt"
"testing" "testing"
"github.com/vaultdrop/backend/models" "github.com/kazier/backend/models"
) )
func TestUserCreation(t *testing.T) { func TestUserCreation(t *testing.T) {
+1 -1
View File
@@ -41,7 +41,7 @@ func LoadApplicationConfig() (*ApplicationConfig, error) {
return &ApplicationConfig{ return &ApplicationConfig{
Port: port, Port: port,
DatabaseURL: get("DATABASE_URL", "postgres://vaultdrop:vaultdrop@localhost:5432/vaultdrop_dev?sslmode=disable"), DatabaseURL: get("DATABASE_URL", "postgres://kazier:kazier@localhost:5432/kazier_dev?sslmode=disable"),
UploadDir: get("UPLOAD_DIR", "./uploads"), UploadDir: get("UPLOAD_DIR", "./uploads"),
MaxFileSizeMB: int64(maxSize), MaxFileSizeMB: int64(maxSize),
OcrLang: get("OCR_LANG", "fra+eng"), OcrLang: get("OCR_LANG", "fra+eng"),
+1 -1
View File
@@ -28,7 +28,7 @@ func TestLoadApplicationDefaults(t *testing.T) {
if cfg.MaxFileSizeMB != 50 { if cfg.MaxFileSizeMB != 50 {
t.Errorf("MaxFileSizeMB = %d, attendu 50", cfg.MaxFileSizeMB) t.Errorf("MaxFileSizeMB = %d, attendu 50", cfg.MaxFileSizeMB)
} }
if cfg.DatabaseURL != "postgres://vaultdrop:vaultdrop@localhost:5432/vaultdrop_dev?sslmode=disable" { if cfg.DatabaseURL != "postgres://kazier:kazier@localhost:5432/kazier_dev?sslmode=disable" {
t.Errorf("DatabaseURL défaut inattendu: %q", cfg.DatabaseURL) t.Errorf("DatabaseURL défaut inattendu: %q", cfg.DatabaseURL)
} }
if cfg.UploadDir != "./uploads" { if cfg.UploadDir != "./uploads" {
+1 -1
View File
@@ -9,7 +9,7 @@ import (
_ "github.com/lib/pq" _ "github.com/lib/pq"
) )
const defaultTestDatabaseURL = "postgres://vaultdrop:vaultdrop@localhost:5432/vaultdrop_migrations_test?sslmode=disable" const defaultTestDatabaseURL = "postgres://kazier:kazier@localhost:5432/kazier_migrations_test?sslmode=disable"
func testDatabaseURL(t *testing.T) string { func testDatabaseURL(t *testing.T) string {
t.Helper() t.Helper()
+2 -2
View File
@@ -10,7 +10,7 @@ import (
"github.com/lib/pq" "github.com/lib/pq"
"github.com/vaultdrop/backend/db" "github.com/kazier/backend/db"
) )
// OpenTestDatabase ensures the test database exists, resets its schema, runs // OpenTestDatabase ensures the test database exists, resets its schema, runs
@@ -27,7 +27,7 @@ func OpenTestDatabase(t *testing.T, databaseURL string) *sql.DB {
databaseURL = os.Getenv("TEST_DATABASE_URL") databaseURL = os.Getenv("TEST_DATABASE_URL")
} }
if databaseURL == "" { if databaseURL == "" {
databaseURL = "postgres://vaultdrop:vaultdrop@localhost:5432/vaultdrop_test?sslmode=disable" databaseURL = "postgres://kazier:kazier@localhost:5432/kazier_test?sslmode=disable"
} }
// Postgres joignable ? (sinon on skippe, sans être gênés par l'existence // Postgres joignable ? (sinon on skippe, sans être gênés par l'existence
+1 -1
View File
@@ -1,4 +1,4 @@
module github.com/vaultdrop/backend module github.com/kazier/backend
go 1.26.4 go 1.26.4
+5 -5
View File
@@ -8,11 +8,11 @@ import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/vaultdrop/backend/pkg/api" "github.com/kazier/backend/pkg/api"
"github.com/vaultdrop/backend/pkg/auth" "github.com/kazier/backend/pkg/auth"
"github.com/vaultdrop/backend/pkg/passwd" "github.com/kazier/backend/pkg/passwd"
"github.com/vaultdrop/backend/repository" "github.com/kazier/backend/repository"
"github.com/vaultdrop/backend/service" "github.com/kazier/backend/service"
) )
type LoginRequest struct { type LoginRequest struct {
+7 -7
View File
@@ -9,17 +9,17 @@ import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/vaultdrop/backend/dbtest" "github.com/kazier/backend/dbtest"
"github.com/vaultdrop/backend/pkg/auth" "github.com/kazier/backend/pkg/auth"
"github.com/vaultdrop/backend/pkg/passwd" "github.com/kazier/backend/pkg/passwd"
"github.com/vaultdrop/backend/repository" "github.com/kazier/backend/repository"
"github.com/vaultdrop/backend/service" "github.com/kazier/backend/service"
) )
const authTestURL = "postgres://vaultdrop:vaultdrop@localhost:5432/vaultdrop_handlers_auth_test?sslmode=disable" const authTestURL = "postgres://kazier:kazier@localhost:5432/kazier_handlers_auth_test?sslmode=disable"
const ( const (
authTestPassword = "vaultdrop-test-password" authTestPassword = "kazier-test-password"
authTestDevice = "0123456789abcdef0123456789abcdef" authTestDevice = "0123456789abcdef0123456789abcdef"
) )
+1 -1
View File
@@ -4,7 +4,7 @@ import (
"regexp" "regexp"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/vaultdrop/backend/pkg/api" "github.com/kazier/backend/pkg/api"
) )
var deviceIDPattern = regexp.MustCompile(`^[0-9a-f]{32}$`) var deviceIDPattern = regexp.MustCompile(`^[0-9a-f]{32}$`)
+1 -1
View File
@@ -7,7 +7,7 @@ import (
"strings" "strings"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/vaultdrop/backend/pkg/api" "github.com/kazier/backend/pkg/api"
) )
func intParam(value string, fallback int) int { func intParam(value string, fallback int) int {
+7 -7
View File
@@ -11,15 +11,15 @@ import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/vaultdrop/backend/dbtest" "github.com/kazier/backend/dbtest"
"github.com/vaultdrop/backend/handlers" "github.com/kazier/backend/handlers"
"github.com/vaultdrop/backend/pkg/auth" "github.com/kazier/backend/pkg/auth"
"github.com/vaultdrop/backend/pkg/passwd" "github.com/kazier/backend/pkg/passwd"
"github.com/vaultdrop/backend/repository" "github.com/kazier/backend/repository"
"github.com/vaultdrop/backend/service" "github.com/kazier/backend/service"
) )
const handlersTestURL = "postgres://vaultdrop:vaultdrop@localhost:5432/vaultdrop_handlers_test?sslmode=disable" const handlersTestURL = "postgres://kazier:kazier@localhost:5432/kazier_handlers_test?sslmode=disable"
type envelope struct { type envelope struct {
Data json.RawMessage `json:"data"` Data json.RawMessage `json:"data"`
+1 -1
View File
@@ -2,7 +2,7 @@ package handlers
import ( import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/vaultdrop/backend/pkg/api" "github.com/kazier/backend/pkg/api"
) )
func Health(c *gin.Context) { func Health(c *gin.Context) {
+3 -3
View File
@@ -6,9 +6,9 @@ import (
"strings" "strings"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/vaultdrop/backend/pkg/api" "github.com/kazier/backend/pkg/api"
"github.com/vaultdrop/backend/pkg/auth" "github.com/kazier/backend/pkg/auth"
"github.com/vaultdrop/backend/repository" "github.com/kazier/backend/repository"
) )
const ( const (
+2 -2
View File
@@ -5,8 +5,8 @@ import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/vaultdrop/backend/pkg/api" "github.com/kazier/backend/pkg/api"
"github.com/vaultdrop/backend/repository" "github.com/kazier/backend/repository"
) )
type ocrJobRequest struct { type ocrJobRequest struct {
+5 -5
View File
@@ -11,11 +11,11 @@ import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/vaultdrop/backend/dbtest" "github.com/kazier/backend/dbtest"
"github.com/vaultdrop/backend/handlers" "github.com/kazier/backend/handlers"
"github.com/vaultdrop/backend/pkg/auth" "github.com/kazier/backend/pkg/auth"
"github.com/vaultdrop/backend/repository" "github.com/kazier/backend/repository"
"github.com/vaultdrop/backend/service" "github.com/kazier/backend/service"
) )
type stubEngine struct { type stubEngine struct {
+1 -1
View File
@@ -5,7 +5,7 @@ import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/vaultdrop/backend/pkg/api" "github.com/kazier/backend/pkg/api"
) )
// RegisterRoutes wires the full /api/v1 surface (public + protected). // RegisterRoutes wires the full /api/v1 surface (public + protected).
+2 -2
View File
@@ -5,8 +5,8 @@ import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/vaultdrop/backend/pkg/api" "github.com/kazier/backend/pkg/api"
"github.com/vaultdrop/backend/repository" "github.com/kazier/backend/repository"
) )
// ShareLinkGet resolves a public share link without authentication // ShareLinkGet resolves a public share link without authentication
+1 -1
View File
@@ -5,7 +5,7 @@ import (
"net/http" "net/http"
"testing" "testing"
"github.com/vaultdrop/backend/repository" "github.com/kazier/backend/repository"
) )
func TestShareLinkPublicResolution(t *testing.T) { func TestShareLinkPublicResolution(t *testing.T) {
+3 -3
View File
@@ -4,9 +4,9 @@ import (
"errors" "errors"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/vaultdrop/backend/pkg/api" "github.com/kazier/backend/pkg/api"
"github.com/vaultdrop/backend/repository" "github.com/kazier/backend/repository"
"github.com/vaultdrop/backend/service" "github.com/kazier/backend/service"
) )
// Store is the business layer used by handlers; set once at startup // Store is the business layer used by handlers; set once at startup
+2 -2
View File
@@ -5,8 +5,8 @@ import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"github.com/vaultdrop/backend/pkg/api" "github.com/kazier/backend/pkg/api"
"github.com/vaultdrop/backend/service" "github.com/kazier/backend/service"
) )
type syncOpsRequest struct { type syncOpsRequest struct {
+1 -1
View File
@@ -6,7 +6,7 @@ import (
"net/http" "net/http"
"testing" "testing"
"github.com/vaultdrop/backend/repository" "github.com/kazier/backend/repository"
) )
func syncOpsBody(ops []map[string]any) []byte { func syncOpsBody(ops []map[string]any) []byte {
+1 -1
View File
@@ -35,7 +35,7 @@ var (
// quand même contre ce hash pour que le délai de réponse soit identique à un // quand même contre ce hash pour que le délai de réponse soit identique à un
// « mauvais mot de passe ». // « mauvais mot de passe ».
var dummyHash = func() string { var dummyHash = func() string {
h, err := Hash("vaultdrop-constantime-dummy") h, err := Hash("kazier-constantime-dummy")
if err != nil { if err != nil {
panic(fmt.Sprintf("passwd: impossible de pré-hacher le dummy: %v", err)) panic(fmt.Sprintf("passwd: impossible de pré-hacher le dummy: %v", err))
} }
+1 -1
View File
@@ -3,7 +3,7 @@ package repository
import ( import (
"testing" "testing"
"github.com/vaultdrop/backend/dbtest" "github.com/kazier/backend/dbtest"
) )
func newTestDevices(t *testing.T) *Devices { func newTestDevices(t *testing.T) *Devices {
+1 -1
View File
@@ -5,7 +5,7 @@ import (
"testing" "testing"
"time" "time"
"github.com/vaultdrop/backend/dbtest" "github.com/kazier/backend/dbtest"
) )
func newTestRepo(t *testing.T) *Repository { func newTestRepo(t *testing.T) *Repository {
+1 -1
View File
@@ -5,7 +5,7 @@ import (
"errors" "errors"
"testing" "testing"
"github.com/vaultdrop/backend/dbtest" "github.com/kazier/backend/dbtest"
) )
func newTestOperations(t *testing.T) (*Operations, *Devices) { func newTestOperations(t *testing.T) (*Operations, *Devices) {
+2 -2
View File
@@ -5,10 +5,10 @@ import (
"testing" "testing"
"time" "time"
"github.com/vaultdrop/backend/dbtest" "github.com/kazier/backend/dbtest"
) )
const repositoryTestURL = "postgres://vaultdrop:vaultdrop@localhost:5432/vaultdrop_repository_test?sslmode=disable" const repositoryTestURL = "postgres://kazier:kazier@localhost:5432/kazier_repository_test?sslmode=disable"
func newTestResources(t *testing.T) *Resources { func newTestResources(t *testing.T) *Resources {
t.Helper() t.Helper()
+1 -1
View File
@@ -4,7 +4,7 @@ import (
"errors" "errors"
"testing" "testing"
"github.com/vaultdrop/backend/dbtest" "github.com/kazier/backend/dbtest"
) )
func newTestUsers(t *testing.T) *Users { func newTestUsers(t *testing.T) *Users {
+2 -2
View File
@@ -5,8 +5,8 @@ import (
"fmt" "fmt"
"strings" "strings"
"github.com/vaultdrop/backend/pkg/passwd" "github.com/kazier/backend/pkg/passwd"
"github.com/vaultdrop/backend/repository" "github.com/kazier/backend/repository"
) )
// ErrAdminRequired : base vide et identifiants admin absents → le serveur // ErrAdminRequired : base vide et identifiants admin absents → le serveur
+2 -2
View File
@@ -4,8 +4,8 @@ import (
"errors" "errors"
"testing" "testing"
"github.com/vaultdrop/backend/pkg/passwd" "github.com/kazier/backend/pkg/passwd"
"github.com/vaultdrop/backend/repository" "github.com/kazier/backend/repository"
) )
func TestEnsureAdminCreatesFirstAdmin(t *testing.T) { func TestEnsureAdminCreatesFirstAdmin(t *testing.T) {
+1 -1
View File
@@ -1,6 +1,6 @@
package service package service
import "github.com/vaultdrop/backend/models" import "github.com/kazier/backend/models"
func (s *Services) CreateFolder(folderName string, destination *models.Document) (*models.Document, error) { func (s *Services) CreateFolder(folderName string, destination *models.Document) (*models.Document, error) {
+1 -1
View File
@@ -4,7 +4,7 @@ import (
"errors" "errors"
"fmt" "fmt"
"github.com/vaultdrop/backend/models" "github.com/kazier/backend/models"
) )
func (s *Services) MoveDocumentIntoDocument(from *models.Document, to *models.Document) error { func (s *Services) MoveDocumentIntoDocument(from *models.Document, to *models.Document) error {
+1 -1
View File
@@ -3,7 +3,7 @@ package service
import ( import (
"testing" "testing"
"github.com/vaultdrop/backend/models" "github.com/kazier/backend/models"
) )
func TestMoveDocument(t *testing.T) { func TestMoveDocument(t *testing.T) {
+2 -2
View File
@@ -9,8 +9,8 @@ import (
"sync" "sync"
"time" "time"
"github.com/vaultdrop/backend/ocr" "github.com/kazier/backend/ocr"
"github.com/vaultdrop/backend/repository" "github.com/kazier/backend/repository"
) )
const ( const (
+2 -2
View File
@@ -9,8 +9,8 @@ import (
"testing" "testing"
"time" "time"
"github.com/vaultdrop/backend/ocr" "github.com/kazier/backend/ocr"
"github.com/vaultdrop/backend/repository" "github.com/kazier/backend/repository"
) )
// stubEngine again (package service) — même contrat que handlers/ocr_test. // stubEngine again (package service) — même contrat que handlers/ocr_test.
+1 -1
View File
@@ -10,7 +10,7 @@ import (
"strings" "strings"
"time" "time"
"github.com/vaultdrop/backend/repository" "github.com/kazier/backend/repository"
) )
// ErrFileTooLarge signals an upload above MaxFileSize. // ErrFileTooLarge signals an upload above MaxFileSize.
+1 -1
View File
@@ -8,7 +8,7 @@ import (
"path/filepath" "path/filepath"
"testing" "testing"
"github.com/vaultdrop/backend/repository" "github.com/kazier/backend/repository"
) )
func multipartFileHeader(t *testing.T, filename string, content []byte) *multipart.FileHeader { func multipartFileHeader(t *testing.T, filename string, content []byte) *multipart.FileHeader {
+1 -1
View File
@@ -1,6 +1,6 @@
package service package service
import "github.com/vaultdrop/backend/models" import "github.com/kazier/backend/models"
type Services struct { type Services struct {
ConnectedUser *models.User ConnectedUser *models.User
+1 -1
View File
@@ -6,7 +6,7 @@ import (
"regexp" "regexp"
"time" "time"
"github.com/vaultdrop/backend/repository" "github.com/kazier/backend/repository"
) )
var resourceIDPattern = regexp.MustCompile(`^[0-9a-f]{32}$`) var resourceIDPattern = regexp.MustCompile(`^[0-9a-f]{32}$`)
+3 -3
View File
@@ -6,11 +6,11 @@ import (
"testing" "testing"
"time" "time"
"github.com/vaultdrop/backend/dbtest" "github.com/kazier/backend/dbtest"
"github.com/vaultdrop/backend/repository" "github.com/kazier/backend/repository"
) )
const serviceTestURL = "postgres://vaultdrop:vaultdrop@localhost:5432/vaultdrop_service_test?sslmode=disable" const serviceTestURL = "postgres://kazier:kazier@localhost:5432/kazier_service_test?sslmode=disable"
// newServiceStore returns a Resources service over a fresh migrated test DB. // newServiceStore returns a Resources service over a fresh migrated test DB.
func newServiceStore(t *testing.T) *Resources { func newServiceStore(t *testing.T) *Resources {
+1 -1
View File
@@ -3,7 +3,7 @@ package service
import ( import (
"fmt" "fmt"
"github.com/vaultdrop/backend/models" "github.com/kazier/backend/models"
) )
func (s *Services) UploadDocument(file *string, destination *models.Document) error { func (s *Services) UploadDocument(file *string, destination *models.Document) error {
+5 -5
View File
@@ -4,14 +4,14 @@ services:
ports: ports:
- "5432:5432" - "5432:5432"
environment: environment:
POSTGRES_DB: ${POSTGRES_DB:-vaultdrop_dev} POSTGRES_DB: ${POSTGRES_DB:-kazier_dev}
POSTGRES_USER: ${POSTGRES_USER:-vaultdrop} POSTGRES_USER: ${POSTGRES_USER:-kazier}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-vaultdrop} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-kazier}
volumes: volumes:
- postgres-data:/var/lib/postgresql/data - postgres-data:/var/lib/postgresql/data
restart: unless-stopped restart: unless-stopped
healthcheck: healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-vaultdrop}"] test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-kazier}"]
interval: 10s interval: 10s
timeout: 5s timeout: 5s
retries: 5 retries: 5
@@ -26,7 +26,7 @@ services:
- "${PORT:-8080}:8080" - "${PORT:-8080}:8080"
environment: environment:
PORT: 8080 PORT: 8080
DATABASE_URL: postgres://${POSTGRES_USER:-vaultdrop}:${POSTGRES_PASSWORD:-vaultdrop}@postgres:5432/${POSTGRES_DB:-vaultdrop_dev}?sslmode=disable DATABASE_URL: postgres://${POSTGRES_USER:-kazier}:${POSTGRES_PASSWORD:-kazier}@postgres:5432/${POSTGRES_DB:-kazier_dev}?sslmode=disable
UPLOAD_DIR: /app/uploads UPLOAD_DIR: /app/uploads
MAX_FILE_SIZE_MB: ${MAX_FILE_SIZE_MB:-50} MAX_FILE_SIZE_MB: ${MAX_FILE_SIZE_MB:-50}
OCR_LANG: ${OCR_LANG:-fra+eng} OCR_LANG: ${OCR_LANG:-fra+eng}
+1 -1
View File
@@ -1,4 +1,4 @@
# VaultDrop — Contrat API V1 (autoritatif) # Kazier — Contrat API V1 (autoritatif)
Status : **autoritatif**. Le client mobile Kotlin est la source de vérité : `data/remote/ApiService.kt` + `data/remote/dto/Dtos.kt` (contrat Retrofit/Moshi) sont implémentés ; le serveur Go doit les matcher exactement (méthode + path + enveloppe), il ne re-négocie pas. Document consolidé depuis le client — toute divergence de ce doc doit être portée dans le client d'abord. Status : **autoritatif**. Le client mobile Kotlin est la source de vérité : `data/remote/ApiService.kt` + `data/remote/dto/Dtos.kt` (contrat Retrofit/Moshi) sont implémentés ; le serveur Go doit les matcher exactement (méthode + path + enveloppe), il ne re-négocie pas. Document consolidé depuis le client — toute divergence de ce doc doit être portée dans le client d'abord.
+5 -5
View File
@@ -41,7 +41,7 @@ run = '''
set -euo pipefail set -euo pipefail
VERSION=$(cat VERSION) VERSION=$(cat VERSION)
mkdir -p backend/bin mkdir -p backend/bin
cd backend && go build -ldflags "-X main.version=$VERSION" -o bin/vaultdrop-server cmd/server/main.go cd backend && go build -ldflags "-X main.version=$VERSION" -o bin/kazier-server cmd/server/main.go
cd ../mobile-kotlin && ./gradlew :app:assembleDebug -q cd ../mobile-kotlin && ./gradlew :app:assembleDebug -q
''' '''
@@ -53,7 +53,7 @@ cd backend && staticcheck ./...
cd ../mobile-kotlin && ./gradlew :app:lint -q cd ../mobile-kotlin && ./gradlew :app:lint -q
''' '''
[tasks.build:release] [tasks."build:release"]
description = "Build signed release APK (assembleRelease)" description = "Build signed release APK (assembleRelease)"
dir = "mobile-kotlin" dir = "mobile-kotlin"
run = ''' run = '''
@@ -68,7 +68,7 @@ fi
echo "APK : app/build/outputs/apk/release/app-release.apk" echo "APK : app/build/outputs/apk/release/app-release.apk"
''' '''
[tasks.docker:build] [tasks."docker:build"]
description = "Build the backend Docker image (tagged with VERSION)" description = "Build the backend Docker image (tagged with VERSION)"
run = ''' run = '''
set -euo pipefail set -euo pipefail
@@ -76,9 +76,9 @@ VERSION=$(cat VERSION)
docker build \\ docker build \\
--build-arg VERSION="$VERSION" \\ --build-arg VERSION="$VERSION" \\
--build-arg BUILD_DATE="$(date -u +%Y-%m-%dT%H:%M:%SZ)" \\ --build-arg BUILD_DATE="$(date -u +%Y-%m-%dT%H:%M:%SZ)" \\
-t vaultdrop-server:"$VERSION" \\ -t kazier-server:"$VERSION" \\
./backend ./backend
echo "Image : vaultdrop-server:$VERSION" echo "Image : kazier-server:$VERSION"
''' '''
[tasks.release] [tasks.release]
+8 -8
View File
@@ -9,10 +9,10 @@ plugins {
} }
// Source unique de vérité : VERSION à la racine du dépôt (ex. 0.1.0). // Source unique de vérité : VERSION à la racine du dépôt (ex. 0.1.0).
val vaultVersion: String = rootProject.file("../VERSION").readText().trim() val kazierVersion: String = rootProject.file("../VERSION").readText().trim()
val vaultVersionCode: Int = run { val kazierVersionCode: Int = run {
val parts = vaultVersion.split('.').map { it.toInt() } val parts = kazierVersion.split('.').map { it.toInt() }
check(parts.size == 3) { "VERSION doit être major.minor.patch, reçu: $vaultVersion" } check(parts.size == 3) { "VERSION doit être major.minor.patch, reçu: $kazierVersion" }
parts[0] * 1_000_000 + parts[1] * 1_000 + parts[2] parts[0] * 1_000_000 + parts[1] * 1_000 + parts[2]
} }
@@ -24,18 +24,18 @@ val signingProps = Properties().apply {
} }
android { android {
namespace = "com.vaultdrop.mobile" namespace = "com.kazier.mobile"
compileSdk = 35 compileSdk = 35
defaultConfig { defaultConfig {
applicationId = "com.vaultdrop.mobile" applicationId = "com.kazier.mobile"
minSdk = 26 minSdk = 26
// targetSdk 35 exige des .so alignés en 16K ; les libs précompilées // targetSdk 35 exige des .so alignés en 16K ; les libs précompilées
// OpenCV/CameraX sont en 4K (warning de compatibilité sur devices // OpenCV/CameraX sont en 4K (warning de compatibilité sur devices
// 16K-pages). On reste en 34 tant qu'elles ne sont pas mises à jour. // 16K-pages). On reste en 34 tant qu'elles ne sont pas mises à jour.
targetSdk = 34 targetSdk = 34
versionCode = vaultVersionCode versionCode = kazierVersionCode
versionName = vaultVersion versionName = kazierVersion
// OpenCV natif : on conserve uniquement les ABIs ciblés // OpenCV natif : on conserve uniquement les ABIs ciblés
// (arm64 = devices, x86_64 = émulateur) pour garder l'APK raisonnable. // (arm64 = devices, x86_64 = émulateur) pour garder l'APK raisonnable.
+4 -2
View File
@@ -2,13 +2,15 @@
# Alternative CI : mêmes valeurs via les variables d'environnement SIGNING_*. # Alternative CI : mêmes valeurs via les variables d'environnement SIGNING_*.
# #
# 1. Générer un keystore (ne jamais le committer, garder en lieu sûr) : # 1. Générer un keystore (ne jamais le committer, garder en lieu sûr) :
# keytool -genkey -v -keystore release.keystore -alias vaultdrop \ # keytool -genkey -v -keystore release.keystore -alias kazier \
# -keyalg RSA -keysize 2048 -validity 10000 # -keyalg RSA -keysize 2048 -validity 10000
# Note : un keystore existant garde SON alias d'origine (ex. vaultdrop) —
# reporter alors la même valeur dans keyAlias ci-dessous.
# 2. Renseigner les valeurs ci-dessous. # 2. Renseigner les valeurs ci-dessous.
# #
# storeFile est relatif au répertoire du module app/ (mobile-kotlin/app). # storeFile est relatif au répertoire du module app/ (mobile-kotlin/app).
storeFile=release.keystore storeFile=release.keystore
storePassword=CHANGE_ME storePassword=CHANGE_ME
keyAlias=vaultdrop keyAlias=kazier
keyPassword=CHANGE_ME keyPassword=CHANGE_ME
@@ -10,17 +10,17 @@
android:required="false" /> android:required="false" />
<application <application
android:name=".VaultDropApplication" android:name=".KazierApplication"
android:allowBackup="true" android:allowBackup="true"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:label="@string/app_name" android:label="@string/app_name"
android:supportsRtl="true" android:supportsRtl="true"
android:usesCleartextTraffic="true" android:usesCleartextTraffic="true"
android:theme="@style/Theme.VaultDrop"> android:theme="@style/Theme.Kazier">
<!-- HiltWorkerFactory : désactive l'initialisation WorkManager par <!-- HiltWorkerFactory : désactive l'initialisation WorkManager par
défaut (androidx.startup) pour que Configuration.Provider défaut (androidx.startup) pour que Configuration.Provider
(VaultDropApplication) soit honoré — sinon le @HiltWorker ne peut (KazierApplication) soit honoré — sinon le @HiltWorker ne peut
pas être instancié (NoSuchMethodException). --> pas être instancié (NoSuchMethodException). -->
<provider <provider
android:name="androidx.startup.InitializationProvider" android:name="androidx.startup.InitializationProvider"
@@ -36,7 +36,7 @@
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:exported="true" android:exported="true"
android:theme="@style/Theme.VaultDrop"> android:theme="@style/Theme.Kazier">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile package com.kazier.mobile
import android.app.Application import android.app.Application
import androidx.hilt.work.HiltWorkerFactory import androidx.hilt.work.HiltWorkerFactory
@@ -8,7 +8,7 @@ import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject
@HiltAndroidApp @HiltAndroidApp
class VaultDropApplication : Application(), Configuration.Provider { class KazierApplication : Application(), Configuration.Provider {
@Inject @Inject
lateinit var workerFactory: HiltWorkerFactory lateinit var workerFactory: HiltWorkerFactory
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile package com.kazier.mobile
import android.os.Bundle import android.os.Bundle
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
@@ -7,9 +7,9 @@ import androidx.activity.enableEdgeToEdge
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import com.vaultdrop.mobile.domain.ThemePreferenceStore import com.kazier.mobile.domain.ThemePreferenceStore
import com.vaultdrop.mobile.ui.navigation.VaultDropApp import com.kazier.mobile.ui.navigation.KazierApp
import com.vaultdrop.mobile.ui.theme.VaultDropTheme import com.kazier.mobile.ui.theme.KazierTheme
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject import javax.inject.Inject
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@@ -28,8 +28,8 @@ class MainActivity : ComponentActivity() {
setContent { setContent {
val theme by themePreferenceStore.theme.collectAsStateWithLifecycle() val theme by themePreferenceStore.theme.collectAsStateWithLifecycle()
VaultDropTheme(theme = theme) { KazierTheme(theme = theme) {
VaultDropApp() KazierApp()
} }
} }
} }
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.auth package com.kazier.mobile.auth
import android.content.Context import android.content.Context
import android.content.SharedPreferences import android.content.SharedPreferences
@@ -6,7 +6,7 @@ import androidx.security.crypto.EncryptedSharedPreferences
import androidx.security.crypto.MasterKeys import androidx.security.crypto.MasterKeys
import com.squareup.moshi.JsonAdapter import com.squareup.moshi.JsonAdapter
import com.squareup.moshi.Moshi import com.squareup.moshi.Moshi
import com.vaultdrop.mobile.data.remote.dto.UserDto import com.kazier.mobile.data.remote.dto.UserDto
import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
@@ -56,8 +56,8 @@ class SecureTokenStore @Inject constructor(
} }
companion object { companion object {
private const val FILE_NAME = "vaultdrop_secure" private const val FILE_NAME = "kazier_secure"
private const val KEY_TOKEN = "vaultdrop.auth_token" private const val KEY_TOKEN = "kazier.auth_token"
private const val KEY_ACCOUNT = "vaultdrop.account" private const val KEY_ACCOUNT = "kazier.account"
} }
} }
@@ -1,10 +1,10 @@
package com.vaultdrop.mobile.auth package com.kazier.mobile.auth
import com.vaultdrop.mobile.data.remote.ApiClient import com.kazier.mobile.data.remote.ApiClient
import com.vaultdrop.mobile.data.remote.dto.LoginResponseDto import com.kazier.mobile.data.remote.dto.LoginResponseDto
import com.vaultdrop.mobile.domain.ActiveUserStore import com.kazier.mobile.domain.ActiveUserStore
import com.vaultdrop.mobile.domain.DeviceIdentity import com.kazier.mobile.domain.DeviceIdentity
import com.vaultdrop.mobile.domain.LocalModeStore import com.kazier.mobile.domain.LocalModeStore
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
@@ -30,7 +30,7 @@ class SessionManager @Inject constructor(
return AuthSession(token = token, user = user) return AuthSession(token = token, user = user)
} }
suspend fun save(token: String, user: com.vaultdrop.mobile.data.remote.dto.UserDto) { suspend fun save(token: String, user: com.kazier.mobile.data.remote.dto.UserDto) {
secureTokenStore.save(token, user) secureTokenStore.save(token, user)
activeUserStore.set(user.id) activeUserStore.set(user.id)
localModeStore.clear() localModeStore.clear()
@@ -52,5 +52,5 @@ class SessionManager @Inject constructor(
data class AuthSession( data class AuthSession(
val token: String, val token: String,
val user: com.vaultdrop.mobile.data.remote.dto.UserDto, val user: com.kazier.mobile.data.remote.dto.UserDto,
) )
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.auth package com.kazier.mobile.auth
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
@@ -1,18 +1,18 @@
package com.vaultdrop.mobile.data.local package com.kazier.mobile.data.local
import androidx.room.Database import androidx.room.Database
import androidx.room.RoomDatabase import androidx.room.RoomDatabase
import com.vaultdrop.mobile.data.local.dao.FileDao import com.kazier.mobile.data.local.dao.FileDao
import com.vaultdrop.mobile.data.local.dao.FolderDao import com.kazier.mobile.data.local.dao.FolderDao
import com.vaultdrop.mobile.data.local.dao.PendingOperationDao import com.kazier.mobile.data.local.dao.PendingOperationDao
import com.vaultdrop.mobile.data.local.dao.ScanDao import com.kazier.mobile.data.local.dao.ScanDao
import com.vaultdrop.mobile.data.local.dao.UserPreferenceDao import com.kazier.mobile.data.local.dao.UserPreferenceDao
import com.vaultdrop.mobile.data.local.entity.FileEntity import com.kazier.mobile.data.local.entity.FileEntity
import com.vaultdrop.mobile.data.local.entity.FolderEntity import com.kazier.mobile.data.local.entity.FolderEntity
import com.vaultdrop.mobile.data.local.entity.PendingOperationEntity import com.kazier.mobile.data.local.entity.PendingOperationEntity
import com.vaultdrop.mobile.data.local.entity.ScanPageEntity import com.kazier.mobile.data.local.entity.ScanPageEntity
import com.vaultdrop.mobile.data.local.entity.ScanSessionEntity import com.kazier.mobile.data.local.entity.ScanSessionEntity
import com.vaultdrop.mobile.data.local.entity.UserPreferenceEntity import com.kazier.mobile.data.local.entity.UserPreferenceEntity
/* /*
* DB SQLite locale, `dot.db` (même nom que la version Expo). * DB SQLite locale, `dot.db` (même nom que la version Expo).
@@ -1,6 +1,6 @@
package com.vaultdrop.mobile.data.local package com.kazier.mobile.data.local
import com.vaultdrop.mobile.data.local.entity.FileEntity import com.kazier.mobile.data.local.entity.FileEntity
/** Date de référence d'un fichier : modification SAF quand dispo, sinon ajout local. */ /** Date de référence d'un fichier : modification SAF quand dispo, sinon ajout local. */
val FileEntity.referenceDate: Long val FileEntity.referenceDate: Long
@@ -1,9 +1,9 @@
package com.vaultdrop.mobile.data.local.dao package com.kazier.mobile.data.local.dao
import androidx.room.Dao import androidx.room.Dao
import androidx.room.Query import androidx.room.Query
import androidx.room.Upsert import androidx.room.Upsert
import com.vaultdrop.mobile.data.local.entity.FileEntity import com.kazier.mobile.data.local.entity.FileEntity
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
@Dao @Dao
@@ -1,11 +1,11 @@
package com.vaultdrop.mobile.data.local.dao package com.kazier.mobile.data.local.dao
import androidx.room.Dao import androidx.room.Dao
import androidx.room.Insert import androidx.room.Insert
import androidx.room.OnConflictStrategy import androidx.room.OnConflictStrategy
import androidx.room.Query import androidx.room.Query
import androidx.room.Upsert import androidx.room.Upsert
import com.vaultdrop.mobile.data.local.entity.FolderEntity import com.kazier.mobile.data.local.entity.FolderEntity
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
@Dao @Dao
@@ -1,9 +1,9 @@
package com.vaultdrop.mobile.data.local.dao package com.kazier.mobile.data.local.dao
import androidx.room.Dao import androidx.room.Dao
import androidx.room.Insert import androidx.room.Insert
import androidx.room.Query import androidx.room.Query
import com.vaultdrop.mobile.data.local.entity.PendingOperationEntity import com.kazier.mobile.data.local.entity.PendingOperationEntity
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
@Dao @Dao
@@ -1,11 +1,11 @@
package com.vaultdrop.mobile.data.local.dao package com.kazier.mobile.data.local.dao
import androidx.room.Dao import androidx.room.Dao
import androidx.room.Insert import androidx.room.Insert
import androidx.room.Query import androidx.room.Query
import androidx.room.Update import androidx.room.Update
import com.vaultdrop.mobile.data.local.entity.ScanPageEntity import com.kazier.mobile.data.local.entity.ScanPageEntity
import com.vaultdrop.mobile.data.local.entity.ScanSessionEntity import com.kazier.mobile.data.local.entity.ScanSessionEntity
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
/** Persistance des sessions de scan (appareil photo) — local uniquement. */ /** Persistance des sessions de scan (appareil photo) — local uniquement. */
@@ -1,11 +1,11 @@
package com.vaultdrop.mobile.data.local.dao package com.kazier.mobile.data.local.dao
import androidx.room.Dao import androidx.room.Dao
import androidx.room.Insert import androidx.room.Insert
import androidx.room.OnConflictStrategy import androidx.room.OnConflictStrategy
import androidx.room.Query import androidx.room.Query
import androidx.room.Upsert import androidx.room.Upsert
import com.vaultdrop.mobile.data.local.entity.UserPreferenceEntity import com.kazier.mobile.data.local.entity.UserPreferenceEntity
@Dao @Dao
interface UserPreferenceDao { interface UserPreferenceDao {
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.data.local.entity package com.kazier.mobile.data.local.entity
import androidx.room.ColumnInfo import androidx.room.ColumnInfo
import androidx.room.Entity import androidx.room.Entity
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.data.local.entity package com.kazier.mobile.data.local.entity
import androidx.room.ColumnInfo import androidx.room.ColumnInfo
import androidx.room.Entity import androidx.room.Entity
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.data.local.entity package com.kazier.mobile.data.local.entity
import androidx.room.ColumnInfo import androidx.room.ColumnInfo
import androidx.room.Entity import androidx.room.Entity
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.data.local.entity package com.kazier.mobile.data.local.entity
import androidx.room.ColumnInfo import androidx.room.ColumnInfo
import androidx.room.Entity import androidx.room.Entity
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.data.local.entity package com.kazier.mobile.data.local.entity
import androidx.room.ColumnInfo import androidx.room.ColumnInfo
import androidx.room.Entity import androidx.room.Entity
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.data.local.entity package com.kazier.mobile.data.local.entity
import androidx.room.ColumnInfo import androidx.room.ColumnInfo
import androidx.room.Entity import androidx.room.Entity
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.data.local.migration package com.kazier.mobile.data.local.migration
import androidx.room.migration.Migration import androidx.room.migration.Migration
import androidx.sqlite.db.SupportSQLiteDatabase import androidx.sqlite.db.SupportSQLiteDatabase
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.data.preferences package com.kazier.mobile.data.preferences
import android.content.Context import android.content.Context
import android.content.SharedPreferences import android.content.SharedPreferences
@@ -7,7 +7,7 @@ import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
/** /**
* Racine VaultDrop : le dossier SAF unique et obligatoire choisi au premier * Racine Kazier : le dossier SAF unique et obligatoire choisi au premier
* lancement. Tous les exports (assemblage PDF) y sont écrits directement, * lancement. Tous les exports (assemblage PDF) y sont écrits directement,
* sans sélecteur la permission persistante sur l'arbre est acquise à ce * sans sélecteur la permission persistante sur l'arbre est acquise à ce
* moment-. * moment-.
@@ -31,7 +31,7 @@ class DefaultRootStore @Inject constructor(
} }
companion object { companion object {
private const val FILE_NAME = "vaultdrop_prefs" private const val FILE_NAME = "kazier_prefs"
private const val KEY_ROOT_RESOURCE_ID = "vaultdrop.default_root_resource_id" private const val KEY_ROOT_RESOURCE_ID = "kazier.default_root_resource_id"
} }
} }
@@ -1,22 +1,22 @@
package com.vaultdrop.mobile.data.remote package com.kazier.mobile.data.remote
import com.squareup.moshi.JsonAdapter import com.squareup.moshi.JsonAdapter
import com.squareup.moshi.Moshi import com.squareup.moshi.Moshi
import com.vaultdrop.mobile.data.remote.dto.ApiEnvelope import com.kazier.mobile.data.remote.dto.ApiEnvelope
import com.vaultdrop.mobile.data.remote.dto.ApiErrorEnvelope import com.kazier.mobile.data.remote.dto.ApiErrorEnvelope
import com.vaultdrop.mobile.data.remote.dto.DeviceRegistrationDto import com.kazier.mobile.data.remote.dto.DeviceRegistrationDto
import com.vaultdrop.mobile.data.remote.dto.FileDto import com.kazier.mobile.data.remote.dto.FileDto
import com.vaultdrop.mobile.data.remote.dto.FileOcrDto import com.kazier.mobile.data.remote.dto.FileOcrDto
import com.vaultdrop.mobile.data.remote.dto.FolderDto import com.kazier.mobile.data.remote.dto.FolderDto
import com.vaultdrop.mobile.data.remote.dto.LoginRequestDto import com.kazier.mobile.data.remote.dto.LoginRequestDto
import com.vaultdrop.mobile.data.remote.dto.LoginResponseDto import com.kazier.mobile.data.remote.dto.LoginResponseDto
import com.vaultdrop.mobile.data.remote.dto.OcrJobDto import com.kazier.mobile.data.remote.dto.OcrJobDto
import com.vaultdrop.mobile.data.remote.dto.OcrSubmitDto import com.kazier.mobile.data.remote.dto.OcrSubmitDto
import com.vaultdrop.mobile.data.remote.dto.ResolvedUserDto import com.kazier.mobile.data.remote.dto.ResolvedUserDto
import com.vaultdrop.mobile.data.remote.dto.ResourcePermissionDto import com.kazier.mobile.data.remote.dto.ResourcePermissionDto
import com.vaultdrop.mobile.data.remote.dto.SyncOpDto import com.kazier.mobile.data.remote.dto.SyncOpDto
import com.vaultdrop.mobile.data.remote.dto.SyncOpsRequest import com.kazier.mobile.data.remote.dto.SyncOpsRequest
import com.vaultdrop.mobile.data.remote.dto.SyncOpsResult import com.kazier.mobile.data.remote.dto.SyncOpsResult
import okhttp3.MultipartBody import okhttp3.MultipartBody
import okhttp3.MediaType.Companion.toMediaType import okhttp3.MediaType.Companion.toMediaType
import okhttp3.RequestBody import okhttp3.RequestBody
@@ -1,18 +1,18 @@
package com.vaultdrop.mobile.data.remote package com.kazier.mobile.data.remote
import com.vaultdrop.mobile.data.remote.dto.ApiEnvelope import com.kazier.mobile.data.remote.dto.ApiEnvelope
import com.vaultdrop.mobile.data.remote.dto.DeviceRegistrationDto import com.kazier.mobile.data.remote.dto.DeviceRegistrationDto
import com.vaultdrop.mobile.data.remote.dto.FileDto import com.kazier.mobile.data.remote.dto.FileDto
import com.vaultdrop.mobile.data.remote.dto.FileOcrDto import com.kazier.mobile.data.remote.dto.FileOcrDto
import com.vaultdrop.mobile.data.remote.dto.FolderDto import com.kazier.mobile.data.remote.dto.FolderDto
import com.vaultdrop.mobile.data.remote.dto.LoginRequestDto import com.kazier.mobile.data.remote.dto.LoginRequestDto
import com.vaultdrop.mobile.data.remote.dto.LoginResponseDto import com.kazier.mobile.data.remote.dto.LoginResponseDto
import com.vaultdrop.mobile.data.remote.dto.OcrJobDto import com.kazier.mobile.data.remote.dto.OcrJobDto
import com.vaultdrop.mobile.data.remote.dto.OcrSubmitDto import com.kazier.mobile.data.remote.dto.OcrSubmitDto
import com.vaultdrop.mobile.data.remote.dto.ResolvedUserDto import com.kazier.mobile.data.remote.dto.ResolvedUserDto
import com.vaultdrop.mobile.data.remote.dto.ResourcePermissionDto import com.kazier.mobile.data.remote.dto.ResourcePermissionDto
import com.vaultdrop.mobile.data.remote.dto.SyncOpsRequest import com.kazier.mobile.data.remote.dto.SyncOpsRequest
import com.vaultdrop.mobile.data.remote.dto.SyncOpsResult import com.kazier.mobile.data.remote.dto.SyncOpsResult
import okhttp3.MultipartBody import okhttp3.MultipartBody
import okhttp3.RequestBody import okhttp3.RequestBody
import retrofit2.Response import retrofit2.Response
@@ -1,10 +1,10 @@
package com.vaultdrop.mobile.data.remote package com.kazier.mobile.data.remote
import okhttp3.Interceptor import okhttp3.Interceptor
import okhttp3.Response import okhttp3.Response
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
import com.vaultdrop.mobile.auth.TokenProvider import com.kazier.mobile.auth.TokenProvider
/** /**
* Injecte `Authorization: Bearer <token>` sur chaque requête si un token est * Injecte `Authorization: Bearer <token>` sur chaque requête si un token est
@@ -1,6 +1,6 @@
package com.vaultdrop.mobile.data.remote package com.kazier.mobile.data.remote
import com.vaultdrop.mobile.domain.ServerConfigStore import com.kazier.mobile.domain.ServerConfigStore
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
import okhttp3.HttpUrl.Companion.toHttpUrl import okhttp3.HttpUrl.Companion.toHttpUrl
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.data.remote.dto package com.kazier.mobile.data.remote.dto
import com.squareup.moshi.Json import com.squareup.moshi.Json
@@ -1,8 +1,8 @@
package com.vaultdrop.mobile.data.repository package com.kazier.mobile.data.repository
import com.vaultdrop.mobile.data.remote.ApiClient import com.kazier.mobile.data.remote.ApiClient
import com.vaultdrop.mobile.data.remote.dto.LoginResponseDto import com.kazier.mobile.data.remote.dto.LoginResponseDto
import com.vaultdrop.mobile.domain.DeviceIdentity import com.kazier.mobile.domain.DeviceIdentity
import timber.log.Timber import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
@@ -1,15 +1,15 @@
package com.vaultdrop.mobile.data.repository package com.kazier.mobile.data.repository
import androidx.room.withTransaction import androidx.room.withTransaction
import com.vaultdrop.mobile.data.local.AppDatabase import com.kazier.mobile.data.local.AppDatabase
import com.vaultdrop.mobile.data.local.dao.FileDao import com.kazier.mobile.data.local.dao.FileDao
import com.vaultdrop.mobile.data.local.entity.FileEntity import com.kazier.mobile.data.local.entity.FileEntity
import com.vaultdrop.mobile.data.local.entity.FileStatus import com.kazier.mobile.data.local.entity.FileStatus
import com.vaultdrop.mobile.data.remote.ApiClient import com.kazier.mobile.data.remote.ApiClient
import com.vaultdrop.mobile.data.remote.dto.FileDto import com.kazier.mobile.data.remote.dto.FileDto
import com.vaultdrop.mobile.domain.GenerateId import com.kazier.mobile.domain.GenerateId
import com.vaultdrop.mobile.domain.SyncPlacement import com.kazier.mobile.domain.SyncPlacement
import com.vaultdrop.mobile.domain.computeCategory import com.kazier.mobile.domain.computeCategory
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
@@ -1,15 +1,15 @@
package com.vaultdrop.mobile.data.repository package com.kazier.mobile.data.repository
import androidx.room.withTransaction import androidx.room.withTransaction
import com.vaultdrop.mobile.data.local.AppDatabase import com.kazier.mobile.data.local.AppDatabase
import com.vaultdrop.mobile.data.local.dao.FolderDao import com.kazier.mobile.data.local.dao.FolderDao
import com.vaultdrop.mobile.data.local.entity.FolderEntity import com.kazier.mobile.data.local.entity.FolderEntity
import com.vaultdrop.mobile.data.local.entity.FolderStatus import com.kazier.mobile.data.local.entity.FolderStatus
import com.vaultdrop.mobile.data.remote.ApiClient import com.kazier.mobile.data.remote.ApiClient
import com.vaultdrop.mobile.data.remote.dto.FolderDto import com.kazier.mobile.data.remote.dto.FolderDto
import com.vaultdrop.mobile.domain.DeviceIdentity import com.kazier.mobile.domain.DeviceIdentity
import com.vaultdrop.mobile.domain.GenerateId import com.kazier.mobile.domain.GenerateId
import com.vaultdrop.mobile.domain.SyncPlacement import com.kazier.mobile.domain.SyncPlacement
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
@@ -1,15 +1,15 @@
package com.vaultdrop.mobile.data.repository package com.kazier.mobile.data.repository
import android.content.ContentResolver import android.content.ContentResolver
import android.content.Context import android.content.Context
import android.net.Uri import android.net.Uri
import androidx.core.net.toUri import androidx.core.net.toUri
import com.vaultdrop.mobile.data.local.dao.FileDao import com.kazier.mobile.data.local.dao.FileDao
import com.vaultdrop.mobile.data.local.entity.FileEntity import com.kazier.mobile.data.local.entity.FileEntity
import com.vaultdrop.mobile.data.remote.ApiClient import com.kazier.mobile.data.remote.ApiClient
import com.vaultdrop.mobile.data.remote.ApiException import com.kazier.mobile.data.remote.ApiException
import com.vaultdrop.mobile.data.remote.dto.OcrJobDto import com.kazier.mobile.data.remote.dto.OcrJobDto
import com.vaultdrop.mobile.data.remote.dto.OcrJobStatus import com.kazier.mobile.data.remote.dto.OcrJobStatus
import dagger.hilt.android.qualifiers.ApplicationContext import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import okhttp3.MediaType import okhttp3.MediaType
@@ -1,13 +1,13 @@
package com.vaultdrop.mobile.data.repository package com.kazier.mobile.data.repository
import com.squareup.moshi.JsonAdapter import com.squareup.moshi.JsonAdapter
import com.squareup.moshi.Moshi import com.squareup.moshi.Moshi
import com.squareup.moshi.Types import com.squareup.moshi.Types
import com.vaultdrop.mobile.data.local.dao.PendingOperationDao import com.kazier.mobile.data.local.dao.PendingOperationDao
import com.vaultdrop.mobile.data.local.entity.PendingOpStatus import com.kazier.mobile.data.local.entity.PendingOpStatus
import com.vaultdrop.mobile.data.local.entity.PendingOperationEntity import com.kazier.mobile.data.local.entity.PendingOperationEntity
import com.vaultdrop.mobile.data.local.entity.PendingOperationType import com.kazier.mobile.data.local.entity.PendingOperationType
import com.vaultdrop.mobile.domain.GenerateId import com.kazier.mobile.domain.GenerateId
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
@@ -1,13 +1,13 @@
package com.vaultdrop.mobile.data.repository package com.kazier.mobile.data.repository
import androidx.room.withTransaction import androidx.room.withTransaction
import com.vaultdrop.mobile.data.local.AppDatabase import com.kazier.mobile.data.local.AppDatabase
import com.vaultdrop.mobile.data.local.dao.ScanDao import com.kazier.mobile.data.local.dao.ScanDao
import com.vaultdrop.mobile.data.local.entity.ScanPageEntity import com.kazier.mobile.data.local.entity.ScanPageEntity
import com.vaultdrop.mobile.data.local.entity.ScanPageStatus import com.kazier.mobile.data.local.entity.ScanPageStatus
import com.vaultdrop.mobile.data.local.entity.ScanSessionEntity import com.kazier.mobile.data.local.entity.ScanSessionEntity
import com.vaultdrop.mobile.data.local.entity.ScanSessionStatus import com.kazier.mobile.data.local.entity.ScanSessionStatus
import com.vaultdrop.mobile.domain.GenerateId import com.kazier.mobile.domain.GenerateId
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
@@ -1,15 +1,15 @@
package com.vaultdrop.mobile.data.repository package com.kazier.mobile.data.repository
import androidx.room.withTransaction import androidx.room.withTransaction
import com.vaultdrop.mobile.data.local.AppDatabase import com.kazier.mobile.data.local.AppDatabase
import com.vaultdrop.mobile.data.local.dao.FileDao import com.kazier.mobile.data.local.dao.FileDao
import com.vaultdrop.mobile.data.local.dao.FolderDao import com.kazier.mobile.data.local.dao.FolderDao
import com.vaultdrop.mobile.data.local.entity.FileEntity import com.kazier.mobile.data.local.entity.FileEntity
import com.vaultdrop.mobile.data.local.entity.FolderEntity import com.kazier.mobile.data.local.entity.FolderEntity
import com.vaultdrop.mobile.data.remote.ApiClient import com.kazier.mobile.data.remote.ApiClient
import com.vaultdrop.mobile.data.remote.dto.ResourcePermissionDto import com.kazier.mobile.data.remote.dto.ResourcePermissionDto
import com.vaultdrop.mobile.domain.DeviceIdentity import com.kazier.mobile.domain.DeviceIdentity
import com.vaultdrop.mobile.domain.SyncPlacement import com.kazier.mobile.domain.SyncPlacement
import timber.log.Timber import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.di package com.kazier.mobile.di
import dagger.Module import dagger.Module
import dagger.hilt.InstallIn import dagger.hilt.InstallIn
@@ -1,14 +1,14 @@
package com.vaultdrop.mobile.di package com.kazier.mobile.di
import android.content.Context import android.content.Context
import androidx.room.Room import androidx.room.Room
import com.vaultdrop.mobile.data.local.AppDatabase import com.kazier.mobile.data.local.AppDatabase
import com.vaultdrop.mobile.data.local.dao.FileDao import com.kazier.mobile.data.local.dao.FileDao
import com.vaultdrop.mobile.data.local.dao.FolderDao import com.kazier.mobile.data.local.dao.FolderDao
import com.vaultdrop.mobile.data.local.dao.PendingOperationDao import com.kazier.mobile.data.local.dao.PendingOperationDao
import com.vaultdrop.mobile.data.local.dao.ScanDao import com.kazier.mobile.data.local.dao.ScanDao
import com.vaultdrop.mobile.data.local.dao.UserPreferenceDao import com.kazier.mobile.data.local.dao.UserPreferenceDao
import com.vaultdrop.mobile.data.local.migration.Migrations import com.kazier.mobile.data.local.migration.Migrations
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides
import dagger.hilt.InstallIn import dagger.hilt.InstallIn
@@ -1,11 +1,11 @@
package com.vaultdrop.mobile.di package com.kazier.mobile.di
import com.squareup.moshi.Moshi import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
import com.vaultdrop.mobile.BuildConfig import com.kazier.mobile.BuildConfig
import com.vaultdrop.mobile.data.remote.ApiService import com.kazier.mobile.data.remote.ApiService
import com.vaultdrop.mobile.data.remote.AuthInterceptor import com.kazier.mobile.data.remote.AuthInterceptor
import com.vaultdrop.mobile.data.remote.ServerUrlInterceptor import com.kazier.mobile.data.remote.ServerUrlInterceptor
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides
import dagger.hilt.InstallIn import dagger.hilt.InstallIn
@@ -80,5 +80,5 @@ object NetworkModule {
fun provideApiService(retrofit: Retrofit): ApiService = fun provideApiService(retrofit: Retrofit): ApiService =
retrofit.create(ApiService::class.java) retrofit.create(ApiService::class.java)
private const val PLACEHOLDER_BASE_URL = "http://vaultdrop.invalid/" private const val PLACEHOLDER_BASE_URL = "http://kazier.invalid/"
} }
@@ -1,7 +1,7 @@
package com.vaultdrop.mobile.domain package com.kazier.mobile.domain
import com.vaultdrop.mobile.data.local.dao.UserPreferenceDao import com.kazier.mobile.data.local.dao.UserPreferenceDao
import com.vaultdrop.mobile.data.local.entity.UserPreferenceEntity import com.kazier.mobile.data.local.entity.UserPreferenceEntity
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
@@ -1,7 +1,7 @@
package com.vaultdrop.mobile.domain package com.kazier.mobile.domain
import com.vaultdrop.mobile.data.local.dao.UserPreferenceDao import com.kazier.mobile.data.local.dao.UserPreferenceDao
import com.vaultdrop.mobile.data.local.entity.UserPreferenceEntity import com.kazier.mobile.data.local.entity.UserPreferenceEntity
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.domain package com.kazier.mobile.domain
enum class FileCategory { enum class FileCategory {
PDF, PDF,
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.domain package com.kazier.mobile.domain
import java.security.SecureRandom import java.security.SecureRandom
import javax.inject.Inject import javax.inject.Inject
@@ -1,13 +1,13 @@
package com.vaultdrop.mobile.domain package com.kazier.mobile.domain
import com.vaultdrop.mobile.data.local.dao.UserPreferenceDao import com.kazier.mobile.data.local.dao.UserPreferenceDao
import com.vaultdrop.mobile.data.local.entity.UserPreferenceEntity import com.kazier.mobile.data.local.entity.UserPreferenceEntity
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton
/** /**
* Drapeau « mode local » (on utilise l'app sans compte) persisté en * Drapeau « mode local » (on utilise l'app sans compte) persisté en
* `user_preferences`. Permet de restaurer [com.vaultdrop.mobile.ui.auth.AuthState.Local] * `user_preferences`. Permet de restaurer [com.kazier.mobile.ui.auth.AuthState.Local]
* au redémarrage au lieu de retomber sur la page de connexion. * au redémarrage au lieu de retomber sur la page de connexion.
*/ */
@Singleton @Singleton
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.domain package com.kazier.mobile.domain
/** Clés de `user_preferences` — miroir de `services/db/schema.ts`. */ /** Clés de `user_preferences` — miroir de `services/db/schema.ts`. */
object PrefKeys { object PrefKeys {
@@ -1,7 +1,7 @@
package com.vaultdrop.mobile.domain package com.kazier.mobile.domain
import com.vaultdrop.mobile.data.local.dao.UserPreferenceDao import com.kazier.mobile.data.local.dao.UserPreferenceDao
import com.vaultdrop.mobile.data.local.entity.UserPreferenceEntity import com.kazier.mobile.data.local.entity.UserPreferenceEntity
import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicBoolean
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Named import javax.inject.Named
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.domain package com.kazier.mobile.domain
/** /**
* Règle de placement d'une ressource (`sync_status`), partagée entre files et * Règle de placement d'une ressource (`sync_status`), partagée entre files et
@@ -1,4 +1,4 @@
package com.vaultdrop.mobile.domain package com.kazier.mobile.domain
/** /**
* Préférence d'affichage de la page Réglages, persistée dans `user_preferences`. * Préférence d'affichage de la page Réglages, persistée dans `user_preferences`.
@@ -1,7 +1,7 @@
package com.vaultdrop.mobile.domain package com.kazier.mobile.domain
import com.vaultdrop.mobile.data.local.dao.UserPreferenceDao import com.kazier.mobile.data.local.dao.UserPreferenceDao
import com.vaultdrop.mobile.data.local.entity.UserPreferenceEntity import com.kazier.mobile.data.local.entity.UserPreferenceEntity
import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicBoolean
import javax.inject.Inject import javax.inject.Inject
import javax.inject.Singleton import javax.inject.Singleton

Some files were not shown because too many files have changed in this diff Show More