diff --git a/public/assets/lib/store.js b/public/assets/lib/store.js
index e22df458..a5ee21b1 100644
--- a/public/assets/lib/store.js
+++ b/public/assets/lib/store.js
@@ -3,7 +3,8 @@ export function settingsGet(initialValues, prefix = "") {
let currentSettings = {};
Object.keys(initialValues).forEach((key) => {
const settingsKey = prefix ? `${prefix}_${key}` : key;
- currentSettings[key] = raw[settingsKey];
+ if (settingsKey in raw) currentSettings[key] = raw[settingsKey];
+ else currentSettings[key] = initialValues[key];
});
return currentSettings;
}
diff --git a/public/assets/pages/filespage/ctrl_submenu.js b/public/assets/pages/filespage/ctrl_submenu.js
index 70df225b..7f8167d2 100644
--- a/public/assets/pages/filespage/ctrl_submenu.js
+++ b/public/assets/pages/filespage/ctrl_submenu.js
@@ -134,32 +134,31 @@ function componentLeft(render, { $scroll }) {
onClick(qs($page, `[data-action="tag"]`)).pipe(rxjs.tap(() => {
componentTag(createModal(modalOpt));
})),
- onClick(qs($page, `[data-action="rename"]`)).pipe(
- rxjs.mergeMap(() => componentRename(
+ onClick(qs($page, `[data-action="rename"]`)).pipe(rxjs.mergeMap(() => {
+ const path = expandSelection()[0].path;
+ return rxjs.from(componentRename(
createModal(modalOpt),
- basename(expandSelection()[0].path.replace(new RegExp("/$"), "")),
- )),
- rxjs.mergeMap((val) => { // TODO: migrate to transcient impl
- const path = expandSelection()[0].path;
+ basename(path.replace(new RegExp("/$"), "")),
+ )).pipe(rxjs.mergeMap((val) => {
const [basepath, filename] = extractPath(path);
clearSelection();
clearCache(path);
clearCache(basepath + val);
return mv(path, basepath + val);
- }),
- ),
- onClick(qs($page, `[data-action="delete"]`)).pipe(
- rxjs.mergeMap(() => componentDelete(
+ }));
+ })),
+ onClick(qs($page, `[data-action="delete"]`)).pipe(rxjs.mergeMap(() => {
+ const path = expandSelection()[0].path;
+ return rxjs.from(componentDelete(
createModal(modalOpt),
- basename(expandSelection()[0].path.replace(new RegExp("/$"), "")).substr(0, 15),
- )),
- rxjs.mergeMap((val) => { // TODO: migrate to transcient impl
+ basename(path.replace(new RegExp("/$"), "")).substr(0, 15),
+ )).pipe(rxjs.mergeMap(() =>{
const selection = expandSelection()[0].path;
clearSelection();
- clearCache(selection);
+ clearCache(path);
return rm(selection);
- }),
- ),
+ }));
+ })),
)),
));
@@ -174,14 +173,16 @@ function componentLeft(render, { $scroll }) {
`))),
rxjs.mergeMap(($page) => rxjs.merge(
- onClick(qs($page, `[data-action="delete"]`)).pipe(
- rxjs.mergeMap(() => componentDelete(createModal(modalOpt), "remove")),
- rxjs.mergeMap((val) => {
- const selections = expandSelection().map(({ path }) => path);
+ onClick(qs($page, `[data-action="delete"]`)).pipe(rxjs.mergeMap(() => {
+ const paths = expandSelection().map(({ path }) => path);
+ return rxjs.from(componentDelete(
+ createModal(modalOpt),
+ "remove",
+ )).pipe(rxjs.mergeMap((val) => {
clearSelection();
- return rm(...selections);
- }),
- ),
+ return rm(...paths);
+ }));
+ })),
)),
));
}
@@ -203,9 +204,20 @@ function componentRight(render) {
rxjs.share(),
);
+ const defaultLayout = (view) => {
+ switch (view) {
+ case "grid": return ``;
+ case "list": return `
`;
+ default: throw new Error("NOT_IMPLEMENTED");
+ }
+ };
+ const defaultSort = () => {
+ return `
`;
+ };
effect(getSelection$().pipe(
rxjs.filter((selections) => selections.length === 0),
- rxjs.map(() => render(createFragment(`
+ rxjs.mergeMap(() => getState$().pipe(rxjs.first())),
+ rxjs.map(({ view, sort }) => render(createFragment(`