diff --git a/server/ui-src/components/AppBadge.vue b/server/ui-src/components/AppBadge.vue
index 2b4046d..1acf13b 100644
--- a/server/ui-src/components/AppBadge.vue
+++ b/server/ui-src/components/AppBadge.vue
@@ -53,5 +53,10 @@ export default {
navigator.setAppBadge(this.mailboxUnread);
},
},
+
+ render() {
+ // to remove webkit warnings about missing template or render function
+ return false;
+ },
};
diff --git a/server/ui-src/components/AppFavicon.vue b/server/ui-src/components/AppFavicon.vue
index 190286d..ed7b044 100644
--- a/server/ui-src/components/AppFavicon.vue
+++ b/server/ui-src/components/AppFavicon.vue
@@ -112,5 +112,10 @@ export default {
this.favicon.href = canvas.toDataURL("image/png");
},
},
+
+ render() {
+ // to remove webkit warnings about missing template or render function
+ return false;
+ },
};
diff --git a/server/ui-src/components/AppSettings.vue b/server/ui-src/components/AppSettings.vue
index 838be74..4e79903 100644
--- a/server/ui-src/components/AppSettings.vue
+++ b/server/ui-src/components/AppSettings.vue
@@ -14,6 +14,9 @@ export default {
timezones,
chaosConfig: false,
chaosUpdated: false,
+ defaultReleaseAddressesOptions: localStorage.getItem("defaultReleaseAddresses")
+ ? JSON.parse(localStorage.getItem("defaultReleaseAddresses"))
+ : [], // set with default release addresses
};
},
@@ -49,7 +52,9 @@ export default {
Tags.init("select.tz");
});
- mailbox.skipConfirmations = !!localStorage.getItem("skip-confirmations");
+ mailbox.skipConfirmations = localStorage.getItem("skip-confirmations");
+
+ Tags.init("select.default-release-addresses");
},
methods: {
@@ -98,7 +103,7 @@ export default {
-
+
-
+
+
+ Message release
+
+
+
+
+
+
+
Default release address(es)
+
+ You can specify the default release "send to" addresses here, which will
+ automatically fill the field in the message release dialog. This setting is
+ applicable only to your browser. If left blank, it will default to the original
+ recipients of the message.
+
+
+ Enter email addresses...
+
+
+ {{ t }}
+
+
+
Invalid email address
+
+
+
[ad.toLowerCase(), ad])).values()]));
- this.addresses = this.allAddresses;
+ // include default release addresses from mailbox settings
+ const defaultAddr = mailbox.defaultReleaseAddresses;
+ for (const i in defaultAddr) {
+ if (!this.allAddresses.includes(defaultAddr[i])) {
+ this.allAddresses.push(defaultAddr[i]);
+ }
+ }
+
+ if (defaultAddr.length === 0) {
+ // prefill with all addresses if no default is set
+ this.addresses = this.allAddresses;
+ } else {
+ this.addresses = defaultAddr;
+ }
},
methods: {
@@ -140,6 +153,13 @@ export default {
{{ t }}
Invalid email address
+
+ Default release addresses can be configured in
+
+
+ Settings .
+
diff --git a/server/ui-src/stores/mailbox.js b/server/ui-src/stores/mailbox.js
index a6973ed..35b3d22 100644
--- a/server/ui-src/stores/mailbox.js
+++ b/server/ui-src/stores/mailbox.js
@@ -20,6 +20,9 @@ export const mailbox = reactive({
appInfo: {}, // application information
uiConfig: {}, // configuration for UI
lastMessage: false, // return scrolling
+ defaultReleaseAddresses: localStorage.getItem("defaultReleaseAddresses")
+ ? JSON.parse(localStorage.getItem("defaultReleaseAddresses"))
+ : [], // default release addresses for released messages
// settings
showTagColors: !localStorage.getItem("hideTagColors"),
@@ -82,6 +85,17 @@ watch(
},
);
+watch(
+ () => mailbox.defaultReleaseAddresses,
+ (v) => {
+ if (v.length) {
+ localStorage.setItem("defaultReleaseAddresses", JSON.stringify(v));
+ } else {
+ localStorage.removeItem("defaultReleaseAddresses");
+ }
+ },
+);
+
watch(
() => mailbox.timeZone,
(v) => {
diff --git a/server/ui-src/views/MessageView.vue b/server/ui-src/views/MessageView.vue
index efd2fb9..09247dc 100644
--- a/server/ui-src/views/MessageView.vue
+++ b/server/ui-src/views/MessageView.vue
@@ -442,7 +442,11 @@ export default {
if (pagination.limit !== pagination.defaultLimit) {
p.limit = pagination.limit.toString();
}
- this.$router.push("/?" + new URLSearchParams(p).toString());
+ if (p.start || p.limit) {
+ this.$router.push("/?" + new URLSearchParams(p).toString());
+ } else {
+ this.$router.push("/");
+ }
}
},
@@ -455,7 +459,6 @@ export default {
window.setTimeout(() => {
// delay to allow elements to load / focus
this.$refs.ReleaseRef.initTags();
- document.querySelector('#ReleaseModal input[role="combobox"]').focus();
}, 500);
},
},