1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-08-27 03:01:26 +00:00
seahub/frontend/src/metadata/context.js
shenzheng-1 066c43dec9
remove photo (#7208)
* remove photo

* update

* update

* update

* update

* update

* update

---------

Co-authored-by: zheng.shen <zheng.shen@seafile.com>
2024-12-23 14:28:02 +08:00

279 lines
7.0 KiB
JavaScript

import metadataAPI from './api';
import tagsAPI from '../tag/api';
import {
PRIVATE_COLUMN_KEYS, EDITABLE_DATA_PRIVATE_COLUMN_KEYS, EDITABLE_PRIVATE_COLUMN_KEYS, DELETABLE_PRIVATE_COLUMN_KEY,
FACE_RECOGNITION_VIEW_ID,
} from './constants';
import LocalStorage from './utils/local-storage';
import EventBus from '../components/common/event-bus';
import { username, lang } from '../utils/constants';
class Context {
constructor() {
this.settings = { lang };
this.metadataAPI = null;
this.tagsAPI = null;
this.localStorage = null;
this.eventBus = null;
this.hasInit = false;
this.permission = 'r';
this.collaboratorsCache = {};
}
async init(settings) {
if (this.hasInit) return;
// init settings
this.settings = { ...this.settings, ...settings };
// init API
const { repoInfo } = this.settings;
this.metadataAPI = metadataAPI;
this.tagsAPI = tagsAPI;
// init localStorage
const { repoID, viewID } = this.settings;
const localStorageName = viewID ? `sf-metadata-${repoID}-${viewID}` : `sf-metadata-${repoID}`;
this.localStorage = new LocalStorage(localStorageName);
const eventBus = new EventBus();
this.eventBus = eventBus;
this.permission = repoInfo.permission !== 'admin' && repoInfo.permission !== 'rw' ? 'r' : 'rw';
this.hasInit = true;
}
destroy = () => {
this.settings = {};
this.metadataAPI = null;
this.tagsAPI = null;
this.localStorage = null;
this.eventBus = null;
this.hasInit = false;
this.permission = 'r';
};
getSetting = (key) => {
if (this.settings[key] === false) return this.settings[key];
return this.settings[key] || '';
};
setSetting = (key, value) => {
this.settings[key] = value;
};
getUsername = () => {
return username;
};
// collaborators
getCollaborators = () => {
const repoID = this.settings['repoID'];
return this.metadataAPI.getCollaborators(repoID);
};
// metadata
getMetadata = (params) => {
if (!this.metadataAPI) return null;
const repoID = this.settings['repoID'];
const { view_id, start, limit } = params;
if (view_id === FACE_RECOGNITION_VIEW_ID) {
return this.metadataAPI.getFaceData(repoID, start, limit);
}
return this.metadataAPI.getMetadata(repoID, params);
};
getViews = () => {
const repoID = this.settings['repoID'];
return this.metadataAPI.listViews(repoID);
};
getView = (viewId) => {
const repoID = this.settings['repoID'];
return this.metadataAPI.getView(repoID, viewId);
};
getPermission = () => {
return this.permission;
};
canModify = () => {
if (this.permission === 'r') return false;
return true;
};
canModifyRow = (row) => {
if (this.permission === 'r') return false;
return true;
};
checkCanDeleteRow = () => {
if (this.permission === 'r') return false;
return true;
};
canModifyRows = () => {
if (this.permission === 'r') return false;
return true;
};
canDuplicateRow = () => {
if (this.permission === 'r') return false;
const viewId = this.getSetting('viewID');
return viewId !== FACE_RECOGNITION_VIEW_ID;
};
canModifyColumn = (column) => {
if (this.permission === 'r') return false;
const { editable } = column;
if (!editable) return false;
if (PRIVATE_COLUMN_KEYS.includes(column.key) && !EDITABLE_PRIVATE_COLUMN_KEYS.includes(column.key)) return false;
return true;
};
canRenameColumn = (column) => {
if (this.permission === 'r') return false;
if (PRIVATE_COLUMN_KEYS.includes(column.key)) return false;
return true;
};
canModifyColumnData = (column) => {
if (this.permission === 'r') return false;
const { key } = column;
if (PRIVATE_COLUMN_KEYS.includes(key)) return EDITABLE_DATA_PRIVATE_COLUMN_KEYS.includes(key);
return true;
};
canDeleteColumn = (column) => {
if (this.permission === 'r') return false;
const { key } = column;
if (PRIVATE_COLUMN_KEYS.includes(key)) return DELETABLE_PRIVATE_COLUMN_KEY.includes(key);
return true;
};
canModifyColumnOrder = () => {
if (this.permission === 'r') return false;
return true;
};
canModifyView = (view) => {
if (this.permission === 'r') return false;
return true;
};
canRemovePhotoFromPeople = () => {
const viewId = this.getSetting('viewID');
return viewId === FACE_RECOGNITION_VIEW_ID;
};
restoreRows = () => {
// todo
};
updateRows = () => {
// todo
};
lockRowViaButton = () => {
// todo
};
updateRowViaButton = () => {
// todo
};
// column
insertColumn = (repoId, name, type, { key, data }) => {
return this.metadataAPI.insertColumn(repoId, name, type, { key, data });
};
deleteColumn = (repoId, columnKey) => {
return this.metadataAPI.deleteColumn(repoId, columnKey);
};
renameColumn = (repoId, columnKey, name) => {
return this.metadataAPI.renameColumn(repoId, columnKey, name);
};
modifyColumnData = (repoId, columnKey, data) => {
return this.metadataAPI.modifyColumnData(repoId, columnKey, data);
};
// record
modifyRecord = (repoId, recordId, update) => {
return this.metadataAPI.modifyRecord(repoId, { recordId }, update);
};
modifyRecords = (repoId, recordsData, isCopyPaste) => {
return this.metadataAPI.modifyRecords(repoId, recordsData, isCopyPaste);
};
batchDeleteFiles = (repoId, fileNames) => {
return this.metadataAPI.batchDeleteFiles(repoId, fileNames);
};
// view
modifyView = (repoId, viewId, viewData) => {
return this.metadataAPI.modifyView(repoId, viewId, viewData);
};
getRowsByIds = () => {
// todo
};
// ai
generateDescription = (filePath) => {
const repoID = this.settings['repoID'];
return this.metadataAPI.generateDescription(repoID, filePath);
};
imageCaption = (filePath) => {
const repoID = this.settings['repoID'];
const lang = this.settings['lang'];
return this.metadataAPI.imageCaption(repoID, filePath, lang);
};
generateFileTags = (filePath) => {
const repoID = this.settings['repoID'];
return this.metadataAPI.generateFileTags(repoID, filePath);
};
ocr = (filePath) => {
const repoID = this.settings['repoID'];
return this.metadataAPI.ocr(repoID, filePath);
};
extractFileDetails = (objIds) => {
const repoID = this.settings['repoID'];
return this.metadataAPI.extractFileDetails(repoID, objIds);
};
// face api
renamePeople = (recordId, name) => {
const repoID = this.settings['repoID'];
return this.metadataAPI.renamePeople(repoID, recordId, name);
};
getPeoplePhotos = (recordId, start, limit) => {
const repoID = this.settings['repoID'];
return this.metadataAPI.getPeoplePhotos(repoID, recordId, start, limit);
};
removePeoplePhotos = (recordId, photoIds) => {
const repoID = this.settings['repoID'];
return this.metadataAPI.removePeoplePhotos(repoID, recordId, photoIds);
};
// file tag
updateFileTags = (data) => {
const repoID = this.settings['repoID'];
return this.tagsAPI.updateFileTags(repoID, data);
};
}
export default Context;