forked from trent_larson/crowd-funder-for-time-pwa
simplify the notification message logic, hopefully fixing what's on servers
This commit is contained in:
@@ -28,20 +28,20 @@ If you are deploying in a subdirectory, add it to `publicPath` in vue.config.js,
|
|||||||
|
|
||||||
* Update the CHANGELOG.md & the version in package.json, run `npm install`, and commit.
|
* Update the CHANGELOG.md & the version in package.json, run `npm install`, and commit.
|
||||||
|
|
||||||
* Tag wth the new version: `git tag 0.1.0`. Increment version, add "-beta", `npm install`, and commit.
|
* Tag wth the new version: `git tag 0.1.0`.
|
||||||
|
|
||||||
* If production, change src/constants/app.ts DEFAULT_*_SERVER to be PROD.
|
* If production, change src/constants/app.ts DEFAULT_*_SERVER to be PROD.
|
||||||
|
|
||||||
* `npm run build`
|
* `npm run build`
|
||||||
|
|
||||||
* Revert src/constants/app.ts
|
|
||||||
|
|
||||||
* `cp sw_scripts/[ns]* dist/`
|
* `cp sw_scripts/[ns]* dist/`
|
||||||
|
|
||||||
... to copy the contents of the `sw_scripts` folder to the `dist` folder - except additional_scripts.js.
|
... to copy the contents of the `sw_scripts` folder to the `dist` folder - except additional_scripts.js.
|
||||||
|
|
||||||
* `rsync -azvu -e "ssh -i ~/.ssh/..." dist ubuntu@endorser.ch:time-safari`
|
* `rsync -azvu -e "ssh -i ~/.ssh/..." dist ubuntu@endorser.ch:time-safari`
|
||||||
|
|
||||||
|
* Revert src/constants/app.ts, increment version, add "-beta", `npm install`, and commit.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Tests
|
## Tests
|
||||||
|
|||||||
@@ -105,27 +105,10 @@
|
|||||||
</router-link>
|
</router-link>
|
||||||
|
|
||||||
<div class="bg-slate-100 rounded-md overflow-hidden px-4 py-4 mt-8 mb-8">
|
<div class="bg-slate-100 rounded-md overflow-hidden px-4 py-4 mt-8 mb-8">
|
||||||
<label
|
<div
|
||||||
v-if="notificationUnchanged"
|
v-if="!notificationMaybeChanged"
|
||||||
for="toggleNotifications"
|
|
||||||
class="flex items-center justify-between cursor-pointer"
|
class="flex items-center justify-between cursor-pointer"
|
||||||
@click="
|
@click="showNotificationChoice()"
|
||||||
!toggleNotifications
|
|
||||||
? this.$notify(
|
|
||||||
{
|
|
||||||
group: 'modal',
|
|
||||||
type: 'notification-permission',
|
|
||||||
},
|
|
||||||
-1,
|
|
||||||
)
|
|
||||||
: this.$notify(
|
|
||||||
{
|
|
||||||
group: 'modal',
|
|
||||||
type: 'notification-off',
|
|
||||||
},
|
|
||||||
-1,
|
|
||||||
)
|
|
||||||
"
|
|
||||||
>
|
>
|
||||||
<!-- label -->
|
<!-- label -->
|
||||||
<div>App Notifications</div>
|
<div>App Notifications</div>
|
||||||
@@ -134,8 +117,8 @@
|
|||||||
<!-- input -->
|
<!-- input -->
|
||||||
<input
|
<input
|
||||||
type="checkbox"
|
type="checkbox"
|
||||||
v-model="toggleNotifications"
|
v-model="isSubscribed"
|
||||||
name="toggleNotifications"
|
name="toggleNotificationsInput"
|
||||||
class="sr-only"
|
class="sr-only"
|
||||||
/>
|
/>
|
||||||
<!-- line -->
|
<!-- line -->
|
||||||
@@ -145,11 +128,11 @@
|
|||||||
class="dot absolute left-1 top-1 bg-slate-400 w-6 h-6 rounded-full transition"
|
class="dot absolute left-1 top-1 bg-slate-400 w-6 h-6 rounded-full transition"
|
||||||
></div>
|
></div>
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</div>
|
||||||
<label v-else>
|
<div v-else>
|
||||||
Notification status may have changed. Revisit this page to see the
|
Notification status may have changed. Revisit this page to see the
|
||||||
latest setting.
|
latest setting.
|
||||||
</label>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<h3 class="text-sm uppercase font-semibold mb-3">Data</h3>
|
<h3 class="text-sm uppercase font-semibold mb-3">Data</h3>
|
||||||
@@ -492,7 +475,8 @@ export default class AccountViewView extends Vue {
|
|||||||
derivationPath = "";
|
derivationPath = "";
|
||||||
givenName = "";
|
givenName = "";
|
||||||
isRegistered = false;
|
isRegistered = false;
|
||||||
notificationUnchanged = true;
|
isSubscribed = false;
|
||||||
|
notificationMaybeChanged = false;
|
||||||
numAccounts = 0;
|
numAccounts = 0;
|
||||||
publicHex = "";
|
publicHex = "";
|
||||||
publicBase64 = "";
|
publicBase64 = "";
|
||||||
@@ -514,15 +498,6 @@ export default class AccountViewView extends Vue {
|
|||||||
warnIfProdServer = false;
|
warnIfProdServer = false;
|
||||||
warnIfTestServer = false;
|
warnIfTestServer = false;
|
||||||
|
|
||||||
private isSubscribed = false;
|
|
||||||
get toggleNotifications() {
|
|
||||||
return this.isSubscribed;
|
|
||||||
}
|
|
||||||
set toggleNotifications(value) {
|
|
||||||
this.isSubscribed = value;
|
|
||||||
this.notificationUnchanged = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Async function executed when the component is created.
|
* Async function executed when the component is created.
|
||||||
* Initializes the component's state with values from the database,
|
* Initializes the component's state with values from the database,
|
||||||
@@ -553,10 +528,9 @@ export default class AccountViewView extends Vue {
|
|||||||
try {
|
try {
|
||||||
const registration = await navigator.serviceWorker.ready;
|
const registration = await navigator.serviceWorker.ready;
|
||||||
this.subscription = await registration.pushManager.getSubscription();
|
this.subscription = await registration.pushManager.getSubscription();
|
||||||
this.toggleNotifications = !!this.subscription;
|
this.isSubscribed = !!this.subscription;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Mount error:", error);
|
console.error("Mount error:", error);
|
||||||
this.toggleNotifications = false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -687,6 +661,31 @@ export default class AccountViewView extends Vue {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async showNotificationChoice() {
|
||||||
|
if (!this.subscription) {
|
||||||
|
this.$notify(
|
||||||
|
{
|
||||||
|
group: "modal",
|
||||||
|
type: "notification-permission",
|
||||||
|
title: "", // unused, only here to satisfy types
|
||||||
|
text: "", // unused, only here to satisfy types
|
||||||
|
},
|
||||||
|
-1,
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
this.$notify(
|
||||||
|
{
|
||||||
|
group: "modal",
|
||||||
|
type: "notification-off",
|
||||||
|
title: "", // unused, only here to satisfy types
|
||||||
|
text: "", // unused, only here to satisfy types
|
||||||
|
},
|
||||||
|
-1,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
this.notificationMaybeChanged = true;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handles errors and updates the component's state accordingly.
|
* Handles errors and updates the component's state accordingly.
|
||||||
* @param {Error} err - The error object.
|
* @param {Error} err - The error object.
|
||||||
@@ -725,12 +724,12 @@ export default class AccountViewView extends Vue {
|
|||||||
group: "alert",
|
group: "alert",
|
||||||
type: "danger",
|
type: "danger",
|
||||||
title: "Error Updating Contact Setting",
|
title: "Error Updating Contact Setting",
|
||||||
text: "Clear your cache and start over (after data backup).",
|
text: "The setting may not have saved. Try again, maybe after restarting the app.",
|
||||||
},
|
},
|
||||||
-1,
|
-1,
|
||||||
);
|
);
|
||||||
console.error(
|
console.error(
|
||||||
"Telling user to clear cache after contact setting update because:",
|
"Telling user to try again after contact setting update because:",
|
||||||
err,
|
err,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -748,12 +747,12 @@ export default class AccountViewView extends Vue {
|
|||||||
group: "alert",
|
group: "alert",
|
||||||
type: "danger",
|
type: "danger",
|
||||||
title: "Error Updating Prod Warning",
|
title: "Error Updating Prod Warning",
|
||||||
text: "Clear your cache and start over (after data backup).",
|
text: "The setting may not have saved. Try again, maybe after restarting the app.",
|
||||||
},
|
},
|
||||||
-1,
|
-1,
|
||||||
);
|
);
|
||||||
console.error(
|
console.error(
|
||||||
"Telling user to clear cache after contact setting update because:",
|
"Telling user to try again after setting update because:",
|
||||||
err,
|
err,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -771,12 +770,12 @@ export default class AccountViewView extends Vue {
|
|||||||
group: "alert",
|
group: "alert",
|
||||||
type: "danger",
|
type: "danger",
|
||||||
title: "Error Updating Test Warning",
|
title: "Error Updating Test Warning",
|
||||||
text: "Clear your cache and start over (after data backup).",
|
text: "The setting may not have saved. Try again, maybe after restarting the app.",
|
||||||
},
|
},
|
||||||
-1,
|
-1,
|
||||||
);
|
);
|
||||||
console.error(
|
console.error(
|
||||||
"Telling user to clear cache after contact setting update because:",
|
"Telling user to try again after setting update because:",
|
||||||
err,
|
err,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user