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")}

+`; -
- - -
- +const TPL2 = `

${t("attachment_erasure_timeout.manual_erasing_description")}

`; -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