diff --git a/src/public/app/widgets/type_widgets/options/other/attachment_erasure_timeout.ts b/src/public/app/widgets/type_widgets/options/other/attachment_erasure_timeout.ts
index 48ce0cb0d..c384dce10 100644
--- a/src/public/app/widgets/type_widgets/options/other/attachment_erasure_timeout.ts
+++ b/src/public/app/widgets/type_widgets/options/other/attachment_erasure_timeout.ts
@@ -2,33 +2,37 @@ import OptionsWidget from "../options_widget.js";
import server from "../../../../services/server.js";
import toastService from "../../../../services/toast.js";
import { t } from "../../../../services/i18n.js";
-import type { OptionMap } from "../../../../../../services/options_interface.js";
+import TimeSelector from "../time_selector.js";
const TPL = `
${t("attachment_erasure_timeout.attachment_erasure_timeout")}
${t("attachment_erasure_timeout.attachment_auto_deletion_description")}
+`;
-
- ${t("attachment_erasure_timeout.erase_attachments_after_x_seconds")}
-
-
-
+const TPL2 = `
${t("attachment_erasure_timeout.manual_erasing_description")}
${t("attachment_erasure_timeout.erase_unused_attachments_now")}
`;
-export default class AttachmentErasureTimeoutOptions extends OptionsWidget {
+export default class AttachmentErasureTimeoutOptions extends TimeSelector {
- private $eraseUnusedAttachmentsAfterTimeInSeconds!: JQuery;
private $eraseUnusedAttachmentsNowButton!: JQuery;
+ constructor() {
+ super({
+ widgetId: "erase-unused-attachments-after",
+ widgetLabelId: "attachment_erasure_timeout.erase_attachments_after_x_seconds",
+ optionValueId: "eraseUnusedAttachmentsAfterSeconds",
+ optionTimeScaleId: "eraseUnusedAttachmentsAfterTimeScale"
+ })
+ super.doRender()
+ }
+
doRender() {
- this.$widget = $(TPL);
- this.$eraseUnusedAttachmentsAfterTimeInSeconds = this.$widget.find(".erase-unused-attachments-after-time-in-seconds");
- this.$eraseUnusedAttachmentsAfterTimeInSeconds.on("change", () => this.updateOption("eraseUnusedAttachmentsAfterSeconds", this.$eraseUnusedAttachmentsAfterTimeInSeconds.val()));
+ this.$widget = $(TPL).append(this.$widget).append(TPL2);
this.$eraseUnusedAttachmentsNowButton = this.$widget.find(".erase-unused-attachments-now-button");
this.$eraseUnusedAttachmentsNowButton.on("click", () => {
@@ -38,7 +42,4 @@ export default class AttachmentErasureTimeoutOptions extends OptionsWidget {
});
}
- async optionsLoaded(options: OptionMap) {
- this.$eraseUnusedAttachmentsAfterTimeInSeconds.val(options.eraseUnusedAttachmentsAfterSeconds);
- }
}
diff --git a/src/routes/api/options.ts b/src/routes/api/options.ts
index 14cb7ec42..33cd5fa8c 100644
--- a/src/routes/api/options.ts
+++ b/src/routes/api/options.ts
@@ -61,6 +61,7 @@ const ALLOWED_OPTIONS = new Set([
"checkForUpdates",
"disableTray",
"eraseUnusedAttachmentsAfterSeconds",
+ "eraseUnusedAttachmentsAfterTimeScale",
"disableTray",
"customSearchEngineName",
"customSearchEngineUrl",
diff --git a/src/services/options_init.ts b/src/services/options_init.ts
index bb962835d..3bb87703e 100644
--- a/src/services/options_init.ts
+++ b/src/services/options_init.ts
@@ -122,7 +122,8 @@ const defaultOptions: DefaultOption[] = [
{ name: "highlightsList", value: '["bold","italic","underline","color","bgColor"]', isSynced: true },
{ name: "checkForUpdates", value: "true", isSynced: true },
{ name: "disableTray", value: "false", isSynced: false },
- { name: "eraseUnusedAttachmentsAfterSeconds", value: "2592000", isSynced: true },
+ { name: "eraseUnusedAttachmentsAfterSeconds", value: "2592000", isSynced: true }, // default 30 days
+ { name: "eraseUnusedAttachmentsAfterTimeScale", value: "86400", isSynced: true }, // default 86400 seconds = Day
{ name: "customSearchEngineName", value: "DuckDuckGo", isSynced: true },
{ name: "customSearchEngineUrl", value: "https://duckduckgo.com/?q={keyword}", isSynced: true },
{ name: "promotedAttributesOpenInRibbon", value: "true", isSynced: true },
diff --git a/src/services/options_interface.ts b/src/services/options_interface.ts
index f3a92383b..fb234240c 100644
--- a/src/services/options_interface.ts
+++ b/src/services/options_interface.ts
@@ -67,6 +67,7 @@ export interface OptionDefinitions extends KeyboardShortcutsOptions