mirror of
https://github.com/ajurna/cbwebreader.git
synced 2026-11-02 10:36:55 +00:00
- Added a new `scan_directory` task to enable folder scans as asynchronous tasks while maintaining compatibility with the immediate backend. - Introduced the `reconcile` function, replacing `generate_directory` for improved separation of concerns between database writes and read operations. - Established a unique constraint on `Directory` (`one_directory_name_per_parent`) to prevent duplicate directories under the same parent. - Added a "Scan" button to the frontend for re-reading folders from disk, along with new task invocation endpoints in the API. - Updated tests across modules to validate the new `scan_directory` task, unique constraints, and database indexing logic. - Improved cleanup logic for stale files, directories, and thumbnails to handle concurrent operations efficiently. - Simplified `scan_comics` management command by removing user dependency and aligning it with the new `reconcile` function. - Enhanced frontend components (`TheComicReader`, `TheComicList`, and others) to include lifecycle method cleanups, prevent memory leaks, and handle task-based scans.
35 lines
1.1 KiB
JavaScript
35 lines
1.1 KiB
JavaScript
import * as Vue from 'vue'
|
|
import App from './App.vue'
|
|
import ToastPlugin from 'vue-toast-notification';
|
|
import 'vue-toast-notification/dist/theme-default.css';
|
|
|
|
import 'bootstrap/dist/css/bootstrap.min.css'
|
|
import 'bootstrap/js/dist/dropdown'
|
|
|
|
|
|
|
|
/* import the fontawesome core */
|
|
import { library } from '@fortawesome/fontawesome-svg-core'
|
|
|
|
/* import font awesome icon component */
|
|
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
|
|
|
|
/* import specific icons */
|
|
import {faBook, faBookOpen, faEdit, faTurnUp, faTimes, faCheck, faRefresh} from '@fortawesome/free-solid-svg-icons'
|
|
library.add(faBook, faBookOpen, faEdit, faTurnUp, faTimes, faCheck, faRefresh)
|
|
|
|
import router from './router'
|
|
import store from './store'
|
|
|
|
const app = Vue.createApp(App)
|
|
.use(ToastPlugin)
|
|
.use(store)
|
|
.use(router)
|
|
.component('font-awesome-icon', FontAwesomeIcon)
|
|
|
|
// Validate the cookie before the first navigation, so the router guards see the
|
|
// real session instead of whatever is left in localStorage.
|
|
store.dispatch('restoreSession').finally(() => {
|
|
app.mount('#app')
|
|
})
|