snappymail/dev/View/Popup/Folder.js

59 lines
1.5 KiB
JavaScript
Raw Normal View History

2024-02-13 03:48:43 +08:00
import { AbstractViewPopup } from 'Knoin/AbstractViews';
2024-02-14 02:44:40 +08:00
import { addObservablesTo, koComputable } from 'External/ko';
2024-02-13 03:48:43 +08:00
import Remote from 'Remote/User/Fetch';
2024-02-13 17:44:38 +08:00
import { FolderUserStore } from 'Stores/User/Folder';
2024-02-13 03:48:43 +08:00
2024-02-14 02:44:40 +08:00
import { defaultOptionsAfterRender } from 'Common/Utils';
import { folderListOptionsBuilder } from 'Common/Folders';
2024-02-13 03:48:43 +08:00
export class FolderPopupView extends AbstractViewPopup {
constructor() {
super('Folder');
addObservablesTo(this, {
2024-02-14 02:44:40 +08:00
folder: null, // FolderModel
parentFolder: '',
name: '',
editing: false
2024-02-13 03:48:43 +08:00
});
2024-02-13 17:44:38 +08:00
this.ACLAllowed = FolderUserStore.hasCapability('ACL');
2024-02-13 03:48:43 +08:00
this.ACL = ko.observableArray();
2024-02-14 02:44:40 +08:00
this.parentFolderSelectList = koComputable(() =>
folderListOptionsBuilder(
[],
[['', '']],
oItem => oItem ? oItem.detailedName() : '',
item => !item.subFolders.allow
|| (FolderUserStore.namespace && !item.fullName.startsWith(FolderUserStore.namespace))
)
);
this.defaultOptionsAfterRender = defaultOptionsAfterRender;
2024-02-13 03:48:43 +08:00
}
afterHide() {
2024-02-14 02:44:40 +08:00
this.editing(false);
2024-02-13 03:48:43 +08:00
}
submitForm(form) {
2024-02-14 02:44:40 +08:00
this.folder().rename(this.name(), this.parentFolder());
2024-02-13 03:48:43 +08:00
console.dir({form});
this.close();
}
beforeShow(folder) {
this.ACL([]);
2024-02-13 17:44:38 +08:00
this.ACLAllowed && Remote.request('FolderACL', (iError, data) => {
2024-02-13 03:48:43 +08:00
if (!iError && data.Result) {
2024-02-13 17:44:38 +08:00
this.ACL(Object.values(data.Result));
2024-02-13 03:48:43 +08:00
}
}, {
folder: folder.fullName
});
2024-02-14 02:44:40 +08:00
this.editing(!folder.type() && folder.exists && folder.selectable());
this.name(folder.name()),
this.parentFolder(folder.parentName);
2024-02-13 17:44:38 +08:00
this.folder(folder);
2024-02-13 03:48:43 +08:00
}
}