53e4f5afe6
Backend: new GET /api/photos endpoint with cursor-based pagination that queries image/video files sorted by EXIF captured_at (falling back to created_at), joining file_metadata for sort dates. Frontend: dense photo grid grouped by day with lazy-loaded thumbnails, IntersectionObserver infinite scroll, multi-select with batch download/delete, and a full-screen lightbox with prev/next navigation, EXIF metadata display, and download/favorite/delete toolbar. Includes navigation wiring, CSS (with dark theme), and i18n translations for all 9 locales.
32 lines
786 B
JavaScript
Executable File
32 lines
786 B
JavaScript
Executable File
/**
|
|
* OxiCloud - App state container
|
|
* Centralized mutable state for app and cached DOM references.
|
|
*/
|
|
|
|
window.app = {
|
|
currentView: 'grid',
|
|
currentPath: '',
|
|
currentFolder: null,
|
|
contextMenuTargetFolder: null,
|
|
contextMenuTargetFile: null,
|
|
selectedTargetFolderId: '',
|
|
moveDialogMode: 'file',
|
|
isFilesView: true,
|
|
isTrashView: false,
|
|
isSharedView: false,
|
|
isFavoritesView: false,
|
|
isRecentView: false,
|
|
isPhotosView: false,
|
|
currentSection: 'files',
|
|
isSearchMode: false,
|
|
shareDialogItem: null,
|
|
shareDialogItemType: null,
|
|
notificationShareUrl: null,
|
|
userHomeFolderId: null,
|
|
userHomeFolderName: null,
|
|
breadcrumbPath: [] // Array of {id, name} tracking folder navigation hierarchy
|
|
};
|
|
|
|
window.appElements = {
|
|
};
|