rename to papercrate
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
# Paperless-NEO
|
# Papercrate
|
||||||
|
|
||||||
## Backend Integration Tests
|
## Backend Integration Tests
|
||||||
|
|
||||||
@@ -6,7 +6,7 @@ Integration tests require a running Postgres instance (and, optionally, Quickwit
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker compose -f docker-compose.test.yml up -d
|
docker compose -f docker-compose.test.yml up -d
|
||||||
export TEST_DATABASE_URL=postgres://paperless:paperless_test@localhost:5433/paperless_test
|
export TEST_DATABASE_URL=postgres://papercrate:papercrate_test@localhost:5433/papercrate_test
|
||||||
# optional, enables Quickwit indexing jobs
|
# optional, enables Quickwit indexing jobs
|
||||||
export QUICKWIT_ENDPOINT=http://localhost:7280
|
export QUICKWIT_ENDPOINT=http://localhost:7280
|
||||||
export QUICKWIT_INDEX=documents
|
export QUICKWIT_INDEX=documents
|
||||||
@@ -34,20 +34,20 @@ The backend container image ships the `diesel` CLI, so schema migrations can be
|
|||||||
apiVersion: batch/v1
|
apiVersion: batch/v1
|
||||||
kind: Job
|
kind: Job
|
||||||
metadata:
|
metadata:
|
||||||
name: paperless-migrate
|
name: papercrate-migrate
|
||||||
spec:
|
spec:
|
||||||
template:
|
template:
|
||||||
spec:
|
spec:
|
||||||
restartPolicy: OnFailure
|
restartPolicy: OnFailure
|
||||||
containers:
|
containers:
|
||||||
- name: migrate
|
- name: migrate
|
||||||
image: ghcr.io/example/paperless-backend:<TAG>
|
image: ghcr.io/example/papercrate-backend:<TAG>
|
||||||
command: ["/usr/local/bin/diesel", "migration", "run"]
|
command: ["/usr/local/bin/diesel", "migration", "run"]
|
||||||
env:
|
env:
|
||||||
- name: DATABASE_URL
|
- name: DATABASE_URL
|
||||||
valueFrom:
|
valueFrom:
|
||||||
secretKeyRef:
|
secretKeyRef:
|
||||||
name: paperless-db
|
name: papercrate-db
|
||||||
key: DATABASE_URL
|
key: DATABASE_URL
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
Generated
+1
-1
@@ -2108,7 +2108,7 @@ dependencies = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "paperless-backend"
|
name = "papercrate-backend"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "paperless-backend"
|
name = "papercrate-backend"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -19,7 +19,7 @@ COPY migrations ./migrations
|
|||||||
COPY tests ./tests
|
COPY tests ./tests
|
||||||
COPY diesel.toml ./
|
COPY diesel.toml ./
|
||||||
|
|
||||||
RUN cargo build --release --bin paperless-backend --bin worker
|
RUN cargo build --release --bin papercrate-backend --bin worker
|
||||||
RUN cargo install diesel_cli --no-default-features --features postgres
|
RUN cargo install diesel_cli --no-default-features --features postgres
|
||||||
|
|
||||||
FROM debian:bookworm-slim AS runtime
|
FROM debian:bookworm-slim AS runtime
|
||||||
@@ -35,8 +35,8 @@ RUN apt-get update \
|
|||||||
&& rm -rf /var/lib/apt/lists/* \
|
&& rm -rf /var/lib/apt/lists/* \
|
||||||
&& useradd --system --create-home --uid 10001 appuser
|
&& useradd --system --create-home --uid 10001 appuser
|
||||||
|
|
||||||
COPY --from=builder /app/target/release/paperless-backend /usr/local/bin/paperless-backend
|
COPY --from=builder /app/target/release/papercrate-backend /usr/local/bin/papercrate-backend
|
||||||
COPY --from=builder /app/target/release/worker /usr/local/bin/paperless-worker
|
COPY --from=builder /app/target/release/worker /usr/local/bin/papercrate-worker
|
||||||
COPY --from=builder /usr/local/cargo/bin/diesel /usr/local/bin/diesel
|
COPY --from=builder /usr/local/cargo/bin/diesel /usr/local/bin/diesel
|
||||||
COPY migrations ./migrations
|
COPY migrations ./migrations
|
||||||
COPY diesel.toml ./
|
COPY diesel.toml ./
|
||||||
@@ -45,4 +45,4 @@ ENV RUST_LOG=info
|
|||||||
USER appuser
|
USER appuser
|
||||||
EXPOSE 3000
|
EXPOSE 3000
|
||||||
|
|
||||||
ENTRYPOINT ["/usr/local/bin/paperless-backend"]
|
ENTRYPOINT ["/usr/local/bin/papercrate-backend"]
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ use std::env;
|
|||||||
use anyhow::{Context, Result};
|
use anyhow::{Context, Result};
|
||||||
use diesel::prelude::*;
|
use diesel::prelude::*;
|
||||||
|
|
||||||
use paperless_backend::{
|
use papercrate_backend::{
|
||||||
config::AppConfig,
|
config::AppConfig,
|
||||||
db,
|
db,
|
||||||
models::DocumentAsset,
|
models::DocumentAsset,
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ use std::{sync::Arc, time::Duration};
|
|||||||
use tokio::signal;
|
use tokio::signal;
|
||||||
use tracing_subscriber::EnvFilter;
|
use tracing_subscriber::EnvFilter;
|
||||||
|
|
||||||
use paperless_backend::{
|
use papercrate_backend::{
|
||||||
auth::jwt::JwtService, config::AppConfig, db, default_handlers, s3::build_client,
|
auth::jwt::JwtService, config::AppConfig, db, default_handlers, s3::build_client,
|
||||||
state::AppState, storage::S3Storage, Worker,
|
state::AppState, storage::S3Storage, Worker,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -35,15 +35,15 @@ impl AppConfig {
|
|||||||
.parse()
|
.parse()
|
||||||
.context("SERVER_PORT must be a valid u16")?;
|
.context("SERVER_PORT must be a valid u16")?;
|
||||||
let jwt_secret = env::var("JWT_SECRET").context("JWT_SECRET must be set")?;
|
let jwt_secret = env::var("JWT_SECRET").context("JWT_SECRET must be set")?;
|
||||||
let jwt_issuer = env::var("JWT_ISSUER").unwrap_or_else(|_| "paperless-neo".to_string());
|
let jwt_issuer = env::var("JWT_ISSUER").unwrap_or_else(|_| "papercrate".to_string());
|
||||||
let jwt_audience =
|
let jwt_audience =
|
||||||
env::var("JWT_AUDIENCE").unwrap_or_else(|_| "paperless-neo-clients".to_string());
|
env::var("JWT_AUDIENCE").unwrap_or_else(|_| "papercrate-clients".to_string());
|
||||||
let jwt_expiry_minutes = env::var("JWT_EXPIRY_MINUTES")
|
let jwt_expiry_minutes = env::var("JWT_EXPIRY_MINUTES")
|
||||||
.unwrap_or_else(|_| "60".to_string())
|
.unwrap_or_else(|_| "60".to_string())
|
||||||
.parse()
|
.parse()
|
||||||
.context("JWT_EXPIRY_MINUTES must be an integer")?;
|
.context("JWT_EXPIRY_MINUTES must be an integer")?;
|
||||||
let download_token_audience = env::var("DOWNLOAD_TOKEN_AUDIENCE")
|
let download_token_audience = env::var("DOWNLOAD_TOKEN_AUDIENCE")
|
||||||
.unwrap_or_else(|_| "paperless-neo-download".to_string());
|
.unwrap_or_else(|_| "papercrate-download".to_string());
|
||||||
let download_token_expiry_minutes = env::var("DOWNLOAD_TOKEN_EXPIRY_MINUTES")
|
let download_token_expiry_minutes = env::var("DOWNLOAD_TOKEN_EXPIRY_MINUTES")
|
||||||
.unwrap_or_else(|_| "60".to_string())
|
.unwrap_or_else(|_| "60".to_string())
|
||||||
.parse()
|
.parse()
|
||||||
|
|||||||
+7
-7
@@ -5,13 +5,13 @@ use tokio::net::TcpListener;
|
|||||||
use tower::make::Shared;
|
use tower::make::Shared;
|
||||||
use tracing_subscriber::EnvFilter;
|
use tracing_subscriber::EnvFilter;
|
||||||
|
|
||||||
use paperless_backend::auth::jwt::JwtService;
|
use papercrate_backend::auth::jwt::JwtService;
|
||||||
use paperless_backend::config::AppConfig;
|
use papercrate_backend::config::AppConfig;
|
||||||
use paperless_backend::db;
|
use papercrate_backend::db;
|
||||||
use paperless_backend::routes;
|
use papercrate_backend::routes;
|
||||||
use paperless_backend::s3::build_client;
|
use papercrate_backend::s3::build_client;
|
||||||
use paperless_backend::state::AppState;
|
use papercrate_backend::state::AppState;
|
||||||
use paperless_backend::storage::S3Storage;
|
use papercrate_backend::storage::S3Storage;
|
||||||
|
|
||||||
#[tokio::main]
|
#[tokio::main]
|
||||||
async fn main() -> anyhow::Result<()> {
|
async fn main() -> anyhow::Result<()> {
|
||||||
|
|||||||
+10
-10
@@ -14,13 +14,13 @@ use diesel::PgConnection;
|
|||||||
use diesel_migrations::{embed_migrations, EmbeddedMigrations, MigrationHarness};
|
use diesel_migrations::{embed_migrations, EmbeddedMigrations, MigrationHarness};
|
||||||
use http_body_util::BodyExt;
|
use http_body_util::BodyExt;
|
||||||
use once_cell::sync::Lazy;
|
use once_cell::sync::Lazy;
|
||||||
use paperless_backend::auth::jwt::JwtService;
|
use papercrate_backend::auth::jwt::JwtService;
|
||||||
use paperless_backend::config::AppConfig;
|
use papercrate_backend::config::AppConfig;
|
||||||
use paperless_backend::db::{self, PgPool};
|
use papercrate_backend::db::{self, PgPool};
|
||||||
use paperless_backend::models::{Job, NewUser};
|
use papercrate_backend::models::{Job, NewUser};
|
||||||
use paperless_backend::routes;
|
use papercrate_backend::routes;
|
||||||
use paperless_backend::state::AppState;
|
use papercrate_backend::state::AppState;
|
||||||
use paperless_backend::storage::ObjectStorage;
|
use papercrate_backend::storage::ObjectStorage;
|
||||||
use rand::rngs::OsRng;
|
use rand::rngs::OsRng;
|
||||||
use serde::Serialize;
|
use serde::Serialize;
|
||||||
use tokio::sync::Mutex;
|
use tokio::sync::Mutex;
|
||||||
@@ -183,7 +183,7 @@ impl TestApp {
|
|||||||
password_hash,
|
password_hash,
|
||||||
role,
|
role,
|
||||||
};
|
};
|
||||||
diesel::insert_into(paperless_backend::schema::users::table)
|
diesel::insert_into(papercrate_backend::schema::users::table)
|
||||||
.values(&user)
|
.values(&user)
|
||||||
.execute(conn)
|
.execute(conn)
|
||||||
.context("failed to insert user")?;
|
.context("failed to insert user")?;
|
||||||
@@ -225,7 +225,7 @@ impl TestApp {
|
|||||||
#[allow(dead_code)]
|
#[allow(dead_code)]
|
||||||
pub async fn clear_jobs(&self) -> Result<()> {
|
pub async fn clear_jobs(&self) -> Result<()> {
|
||||||
self.with_conn(|conn| {
|
self.with_conn(|conn| {
|
||||||
use paperless_backend::schema::jobs::dsl::jobs as jobs_table;
|
use papercrate_backend::schema::jobs::dsl::jobs as jobs_table;
|
||||||
diesel::delete(jobs_table)
|
diesel::delete(jobs_table)
|
||||||
.execute(conn)
|
.execute(conn)
|
||||||
.context("failed to clear jobs")?;
|
.context("failed to clear jobs")?;
|
||||||
@@ -238,7 +238,7 @@ impl TestApp {
|
|||||||
pub async fn jobs_by_type(&self, ty: &str) -> Result<Vec<Job>> {
|
pub async fn jobs_by_type(&self, ty: &str) -> Result<Vec<Job>> {
|
||||||
let ty = ty.to_string();
|
let ty = ty.to_string();
|
||||||
self.with_conn(move |conn| {
|
self.with_conn(move |conn| {
|
||||||
use paperless_backend::schema::jobs::dsl::{
|
use papercrate_backend::schema::jobs::dsl::{
|
||||||
job_type as job_type_col, jobs as jobs_table,
|
job_type as job_type_col, jobs as jobs_table,
|
||||||
};
|
};
|
||||||
let rows = jobs_table
|
let rows = jobs_table
|
||||||
|
|||||||
@@ -2,15 +2,15 @@ services:
|
|||||||
postgres-test:
|
postgres-test:
|
||||||
image: postgres:16-alpine
|
image: postgres:16-alpine
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_USER: paperless
|
POSTGRES_USER: papercrate
|
||||||
POSTGRES_PASSWORD: paperless_test
|
POSTGRES_PASSWORD: papercrate_test
|
||||||
POSTGRES_DB: paperless_test
|
POSTGRES_DB: papercrate_test
|
||||||
ports:
|
ports:
|
||||||
- "5433:5432"
|
- "5433:5432"
|
||||||
tmpfs:
|
tmpfs:
|
||||||
- /var/lib/postgresql/data
|
- /var/lib/postgresql/data
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "pg_isready -U paperless"]
|
test: ["CMD-SHELL", "pg_isready -U papercrate"]
|
||||||
interval: 5s
|
interval: 5s
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 5
|
retries: 5
|
||||||
|
|||||||
+4
-4
@@ -2,16 +2,16 @@ services:
|
|||||||
postgres:
|
postgres:
|
||||||
image: postgres:16-alpine
|
image: postgres:16-alpine
|
||||||
environment:
|
environment:
|
||||||
POSTGRES_USER: paperless
|
POSTGRES_USER: papercrate
|
||||||
POSTGRES_PASSWORD: paperless_dev
|
POSTGRES_PASSWORD: papercrate_dev
|
||||||
POSTGRES_DB: paperless
|
POSTGRES_DB: papercrate
|
||||||
ports:
|
ports:
|
||||||
- "5432:5432"
|
- "5432:5432"
|
||||||
volumes:
|
volumes:
|
||||||
- postgres_data:/var/lib/postgresql/data
|
- postgres_data:/var/lib/postgresql/data
|
||||||
- ./backend/migrations:/docker-entrypoint-initdb.d
|
- ./backend/migrations:/docker-entrypoint-initdb.d
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "pg_isready -U paperless"]
|
test: ["CMD-SHELL", "pg_isready -U papercrate"]
|
||||||
interval: 5s
|
interval: 5s
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 5
|
retries: 5
|
||||||
|
|||||||
+2
-2
@@ -6,10 +6,10 @@ The backend integration tests talk to a real Postgres database. To spin up an ep
|
|||||||
docker compose -f docker-compose.test.yml up -d
|
docker compose -f docker-compose.test.yml up -d
|
||||||
```
|
```
|
||||||
|
|
||||||
This starts Postgres on port `5433` with the database/user both named `paperless` and password `paperless_test`. Point the test harness at it:
|
This starts Postgres on port `5433` with the database/user both named `papercrate` and password `papercrate_test`. Point the test harness at it:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
export TEST_DATABASE_URL=postgres://paperless:paperless_test@localhost:5433/paperless_test
|
export TEST_DATABASE_URL=postgres://papercrate:papercrate_test@localhost:5433/papercrate_test
|
||||||
```
|
```
|
||||||
|
|
||||||
Run the tests as usual:
|
Run the tests as usual:
|
||||||
|
|||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
# Paperless-NEO Frontend
|
# Papercrate Frontend
|
||||||
|
|
||||||
A minimal Webpack-powered SPA to interact with the Paperless-NEO Milestone 1 backend.
|
A minimal Webpack-powered SPA to interact with the Papercrate Milestone 1 backend.
|
||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
|
|||||||
Generated
+2
-2
@@ -1,11 +1,11 @@
|
|||||||
{
|
{
|
||||||
"name": "paperless-neo-frontend",
|
"name": "papercrate-frontend",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "paperless-neo-frontend",
|
"name": "papercrate-frontend",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "1.7.7",
|
"axios": "1.7.7",
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"name": "paperless-neo-frontend",
|
"name": "papercrate-frontend",
|
||||||
"version": "0.1.0",
|
"version": "0.1.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"description": "Rudimentary Webpack SPA for Paperless-NEO Milestone 1",
|
"description": "Rudimentary Webpack SPA for Papercrate Milestone 1",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "webpack serve --mode development --open",
|
"dev": "webpack serve --mode development --open",
|
||||||
"build": "webpack --mode production",
|
"build": "webpack --mode production",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>Paperless-NEO</title>
|
<title>Papercrate</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<main id="app"></main>
|
<main id="app"></main>
|
||||||
|
|||||||
+12
-12
@@ -28,7 +28,7 @@ const api = axios.create({
|
|||||||
withCredentials: true,
|
withCredentials: true,
|
||||||
});
|
});
|
||||||
|
|
||||||
const STORED_TOKEN = window.localStorage.getItem('paperless_token') || '';
|
const STORED_TOKEN = window.localStorage.getItem('papercrate_token') || '';
|
||||||
if (STORED_TOKEN) {
|
if (STORED_TOKEN) {
|
||||||
api.defaults.headers.common.Authorization = `Bearer ${STORED_TOKEN}`;
|
api.defaults.headers.common.Authorization = `Bearer ${STORED_TOKEN}`;
|
||||||
}
|
}
|
||||||
@@ -219,7 +219,7 @@ const DropOverlay = ({ active, folderName }) => (
|
|||||||
const LoginView = ({ onSubmit, status }) => (
|
const LoginView = ({ onSubmit, status }) => (
|
||||||
<div className="login-screen">
|
<div className="login-screen">
|
||||||
<div className="login-card">
|
<div className="login-card">
|
||||||
<h1>Paperless-NEO</h1>
|
<h1>Papercrate</h1>
|
||||||
<p>Authenticate to manage your documents.</p>
|
<p>Authenticate to manage your documents.</p>
|
||||||
<form onSubmit={onSubmit}>
|
<form onSubmit={onSubmit}>
|
||||||
<label htmlFor="username">Username</label>
|
<label htmlFor="username">Username</label>
|
||||||
@@ -1501,7 +1501,7 @@ const AppLayout = () => {
|
|||||||
const routeFolderId =
|
const routeFolderId =
|
||||||
folderMatch?.params?.folderId || nestedDocMatch?.params?.folderId || null;
|
folderMatch?.params?.folderId || nestedDocMatch?.params?.folderId || null;
|
||||||
const routeDocumentId = docMatch?.params?.documentId || null;
|
const routeDocumentId = docMatch?.params?.documentId || null;
|
||||||
const [token, setToken] = useState(() => window.localStorage.getItem('paperless_token') || '');
|
const [token, setToken] = useState(() => window.localStorage.getItem('papercrate_token') || '');
|
||||||
const [status, setStatus] = useState(null);
|
const [status, setStatus] = useState(null);
|
||||||
const setStatusMessage = useCallback((message, variant = 'info') => {
|
const setStatusMessage = useCallback((message, variant = 'info') => {
|
||||||
setStatus(message ? { message, variant } : null);
|
setStatus(message ? { message, variant } : null);
|
||||||
@@ -1621,10 +1621,10 @@ const AppLayout = () => {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (token) {
|
if (token) {
|
||||||
api.defaults.headers.common.Authorization = `Bearer ${token}`;
|
api.defaults.headers.common.Authorization = `Bearer ${token}`;
|
||||||
window.localStorage.setItem('paperless_token', token);
|
window.localStorage.setItem('papercrate_token', token);
|
||||||
} else {
|
} else {
|
||||||
delete api.defaults.headers.common.Authorization;
|
delete api.defaults.headers.common.Authorization;
|
||||||
window.localStorage.removeItem('paperless_token');
|
window.localStorage.removeItem('papercrate_token');
|
||||||
}
|
}
|
||||||
}, [token]);
|
}, [token]);
|
||||||
|
|
||||||
@@ -1969,7 +1969,7 @@ const AppLayout = () => {
|
|||||||
event.dataTransfer.effectAllowed = 'move';
|
event.dataTransfer.effectAllowed = 'move';
|
||||||
try {
|
try {
|
||||||
event.dataTransfer.setData(
|
event.dataTransfer.setData(
|
||||||
'application/x-paperless-doc-list',
|
'application/x-papercrate-doc-list',
|
||||||
JSON.stringify(selection),
|
JSON.stringify(selection),
|
||||||
);
|
);
|
||||||
} catch (
|
} catch (
|
||||||
@@ -2169,7 +2169,7 @@ const AppLayout = () => {
|
|||||||
setDraggedFolderId(folderId);
|
setDraggedFolderId(folderId);
|
||||||
event.dataTransfer.effectAllowed = 'move';
|
event.dataTransfer.effectAllowed = 'move';
|
||||||
try {
|
try {
|
||||||
event.dataTransfer.setData('application/x-paperless-folder', folderId);
|
event.dataTransfer.setData('application/x-papercrate-folder', folderId);
|
||||||
} catch (
|
} catch (
|
||||||
// eslint-disable-next-line no-empty
|
// eslint-disable-next-line no-empty
|
||||||
error
|
error
|
||||||
@@ -3465,8 +3465,8 @@ const AppLayout = () => {
|
|||||||
let folderSourceId = draggedFolderId;
|
let folderSourceId = draggedFolderId;
|
||||||
if (!folderSourceId) {
|
if (!folderSourceId) {
|
||||||
try {
|
try {
|
||||||
if (event.dataTransfer.types?.includes('application/x-paperless-folder')) {
|
if (event.dataTransfer.types?.includes('application/x-papercrate-folder')) {
|
||||||
folderSourceId = event.dataTransfer.getData('application/x-paperless-folder');
|
folderSourceId = event.dataTransfer.getData('application/x-papercrate-folder');
|
||||||
}
|
}
|
||||||
} catch (
|
} catch (
|
||||||
// eslint-disable-next-line no-empty
|
// eslint-disable-next-line no-empty
|
||||||
@@ -3494,7 +3494,7 @@ const AppLayout = () => {
|
|||||||
|
|
||||||
let docIds = [];
|
let docIds = [];
|
||||||
try {
|
try {
|
||||||
const raw = event.dataTransfer.getData('application/x-paperless-doc-list');
|
const raw = event.dataTransfer.getData('application/x-papercrate-doc-list');
|
||||||
if (raw) {
|
if (raw) {
|
||||||
const parsed = JSON.parse(raw);
|
const parsed = JSON.parse(raw);
|
||||||
if (Array.isArray(parsed)) {
|
if (Array.isArray(parsed)) {
|
||||||
@@ -3508,7 +3508,7 @@ const AppLayout = () => {
|
|||||||
|
|
||||||
if (!docIds.length) {
|
if (!docIds.length) {
|
||||||
try {
|
try {
|
||||||
const single = event.dataTransfer.getData('application/x-paperless-doc');
|
const single = event.dataTransfer.getData('application/x-papercrate-doc');
|
||||||
if (single) {
|
if (single) {
|
||||||
docIds = [single];
|
docIds = [single];
|
||||||
}
|
}
|
||||||
@@ -3901,7 +3901,7 @@ const AppLayout = () => {
|
|||||||
<header className="app-bar">
|
<header className="app-bar">
|
||||||
<div className="app-bar__main">
|
<div className="app-bar__main">
|
||||||
<div className="app-bar__meta">
|
<div className="app-bar__meta">
|
||||||
<h1>Paperless-NEO</h1>
|
<h1>Papercrate</h1>
|
||||||
<span className="app-bar__hint">
|
<span className="app-bar__hint">
|
||||||
{previewActive
|
{previewActive
|
||||||
? 'Viewing document preview. Press ← Back to return to the library.'
|
? 'Viewing document preview. Press ← Back to return to the library.'
|
||||||
|
|||||||
Reference in New Issue
Block a user