forked from jsnbuchanan/crowd-funder-for-time-pwa
feat(NewActivityView): enhance "See all" links to mark offers as read before navigation
- Replace router-links with click handlers for both "See all" offers links - Add handleSeeAllOffersToUser and handleSeeAllOffersToUserProjects methods - Modify expandOffersToUserAndMarkRead to accept fromSeeAll parameter for contextual notifications - Modify expandOffersToUserProjectsAndMarkRead to accept fromSeeAll parameter for contextual notifications - Show shorter notification messages when called from "See all" vs chevron expand buttons - Add safety checks to prevent errors when offers arrays are empty - Standardize notification message text consistency - TypeScript and formatting lint fixes Both "See all" links now properly mark offers as viewed before navigation, preventing users from seeing unread offers in the detailed views.
This commit is contained in:
@@ -32,9 +32,9 @@
|
||||
@click="expandOffersToUserAndMarkRead()"
|
||||
/>
|
||||
</div>
|
||||
<router-link to="/recent-offers-to-user" class="text-blue-500">
|
||||
<a @click="handleSeeAllOffersToUser" class="text-blue-500 cursor-pointer">
|
||||
See all
|
||||
</router-link>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div v-if="showOffersDetails" class="ml-4 mt-4">
|
||||
@@ -99,9 +99,9 @@
|
||||
@click="expandOffersToUserProjectsAndMarkRead()"
|
||||
/>
|
||||
</div>
|
||||
<router-link to="/recent-offers-to-user-projects" class="text-blue-500">
|
||||
<a @click="handleSeeAllOffersToUserProjects" class="text-blue-500 cursor-pointer">
|
||||
See all
|
||||
</router-link>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div v-if="showOffersToUserProjectsDetails" class="ml-4 mt-4">
|
||||
@@ -239,18 +239,18 @@ export default class NewActivityView extends Vue {
|
||||
}
|
||||
}
|
||||
|
||||
async expandOffersToUserAndMarkRead() {
|
||||
async expandOffersToUserAndMarkRead(fromSeeAll: boolean = false) {
|
||||
this.showOffersDetails = !this.showOffersDetails;
|
||||
if (this.showOffersDetails) {
|
||||
if (this.showOffersDetails && this.newOffersToUser.length > 0) {
|
||||
await this.$updateSettings({
|
||||
lastAckedOfferToUserJwtId: this.newOffersToUser[0].jwtId,
|
||||
});
|
||||
// note that we don't update this.lastAckedOfferToUserJwtId in case they
|
||||
// later choose the last one to keep the offers as new
|
||||
this.notify.info(
|
||||
"The offers are marked as viewed. Click in the list to keep them as new.",
|
||||
TIMEOUTS.LONG,
|
||||
);
|
||||
const message = fromSeeAll
|
||||
? "The offers are marked as viewed."
|
||||
: "The offers are marked as viewed. Click in the list to keep them as new.";
|
||||
this.notify.info(message, TIMEOUTS.LONG);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -275,20 +275,20 @@ export default class NewActivityView extends Vue {
|
||||
);
|
||||
}
|
||||
|
||||
async expandOffersToUserProjectsAndMarkRead() {
|
||||
async expandOffersToUserProjectsAndMarkRead(fromSeeAll: boolean = false) {
|
||||
this.showOffersToUserProjectsDetails =
|
||||
!this.showOffersToUserProjectsDetails;
|
||||
if (this.showOffersToUserProjectsDetails) {
|
||||
if (this.showOffersToUserProjectsDetails && this.newOffersToUserProjects.length > 0) {
|
||||
await this.$updateSettings({
|
||||
lastAckedOfferToUserProjectsJwtId:
|
||||
this.newOffersToUserProjects[0].jwtId,
|
||||
});
|
||||
// note that we don't update this.lastAckedOfferToUserProjectsJwtId in case
|
||||
// they later choose the last one to keep the offers as new
|
||||
this.notify.info(
|
||||
"The offers are now marked as viewed. Click in the list to keep them as new.",
|
||||
TIMEOUTS.LONG,
|
||||
);
|
||||
const message = fromSeeAll
|
||||
? "The offers are marked as viewed."
|
||||
: "The offers are marked as viewed. Click in the list to keep them as new.";
|
||||
this.notify.info(message, TIMEOUTS.LONG);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -314,5 +314,15 @@ export default class NewActivityView extends Vue {
|
||||
TIMEOUTS.STANDARD,
|
||||
);
|
||||
}
|
||||
|
||||
async handleSeeAllOffersToUser() {
|
||||
await this.expandOffersToUserAndMarkRead(true);
|
||||
this.$router.push("/recent-offers-to-user");
|
||||
}
|
||||
|
||||
async handleSeeAllOffersToUserProjects() {
|
||||
await this.expandOffersToUserProjectsAndMarkRead(true);
|
||||
this.$router.push("/recent-offers-to-user-projects");
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user