From 1fd6bbc9371b8619568b01ec9d511ba854bf4b68 Mon Sep 17 00:00:00 2001 From: Dessalines <dessalines@users.noreply.github.com> Date: Thu, 22 Jul 2021 16:18:13 -0400 Subject: [PATCH] Have setting to disable notifs for new posts. Fixes #132 (#345) --- package.json | 2 +- src/shared/components/community/community.tsx | 4 ++- src/shared/components/home/home.tsx | 20 +++++++++++--- src/shared/components/person/person.tsx | 27 +++++++++++++++++++ yarn.lock | 8 +++--- 5 files changed, 52 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 270dad9..3b03e3c 100644 --- a/package.json +++ b/package.json @@ -69,7 +69,7 @@ "husky": "^7.0.1", "import-sort-style-module": "^6.0.0", "iso-639-1": "^2.1.9", - "lemmy-js-client": "0.11.0", + "lemmy-js-client": "0.11.3-rc.2", "lint-staged": "^11.0.1", "mini-css-extract-plugin": "^2.1.0", "node-fetch": "^2.6.1", diff --git a/src/shared/components/community/community.tsx b/src/shared/components/community/community.tsx index 09bc837..64db8e1 100644 --- a/src/shared/components/community/community.tsx +++ b/src/shared/components/community/community.tsx @@ -490,7 +490,9 @@ export class Community extends Component<any, State> { } else if (op == UserOperation.CreatePost) { let data = wsJsonToRes<PostResponse>(msg).data; this.state.posts.unshift(data.post_view); - notifyPost(data.post_view, this.context.router); + if (UserService.Instance.localUserView?.local_user.show_new_post_notifs) { + notifyPost(data.post_view, this.context.router); + } this.setState(this.state); } else if (op == UserOperation.CreatePostLike) { let data = wsJsonToRes<PostResponse>(msg).data; diff --git a/src/shared/components/home/home.tsx b/src/shared/components/home/home.tsx index 3a74901..ab2df75 100644 --- a/src/shared/components/home/home.tsx +++ b/src/shared/components/home/home.tsx @@ -849,17 +849,31 @@ export class Home extends Component<any, HomeState> { .includes(data.post_view.community.id) ) { this.state.posts.unshift(data.post_view); - notifyPost(data.post_view, this.context.router); + if ( + UserService.Instance.localUserView?.local_user + .show_new_post_notifs + ) { + notifyPost(data.post_view, this.context.router); + } } } else if (this.state.listingType == ListingType.Local) { // If you're on the local view, only push it if its local if (data.post_view.post.local) { this.state.posts.unshift(data.post_view); - notifyPost(data.post_view, this.context.router); + if ( + UserService.Instance.localUserView?.local_user + .show_new_post_notifs + ) { + notifyPost(data.post_view, this.context.router); + } } } else { this.state.posts.unshift(data.post_view); - notifyPost(data.post_view, this.context.router); + if ( + UserService.Instance.localUserView?.local_user.show_new_post_notifs + ) { + notifyPost(data.post_view, this.context.router); + } } this.setState(this.state); } diff --git a/src/shared/components/person/person.tsx b/src/shared/components/person/person.tsx index b6cc4b3..2259367 100644 --- a/src/shared/components/person/person.tsx +++ b/src/shared/components/person/person.tsx @@ -830,6 +830,26 @@ export class Person extends Component<any, PersonState> { </label> </div> </div> + <div class="form-group"> + <div class="form-check"> + <input + class="form-check-input" + id="user-show-new-post-notifs" + type="checkbox" + checked={this.state.saveUserSettingsForm.show_new_post_notifs} + onChange={linkEvent( + this, + this.handleUserSettingsShowNewPostNotifs + )} + /> + <label + class="form-check-label" + htmlFor="user-show-new-post-notifs" + > + {i18n.t("show_new_post_notifs")} + </label> + </div> + </div> <div class="form-group"> <div class="form-check"> <input @@ -1016,6 +1036,11 @@ export class Person extends Component<any, PersonState> { i.setState(i.state); } + handleUserSettingsShowNewPostNotifs(i: Person, event: any) { + i.state.saveUserSettingsForm.show_new_post_notifs = event.target.checked; + i.setState(i.state); + } + handleUserSettingsShowScoresChange(i: Person, event: any) { i.state.saveUserSettingsForm.show_scores = event.target.checked; UserService.Instance.localUserView.local_user.show_scores = @@ -1199,6 +1224,8 @@ export class Person extends Component<any, PersonState> { UserService.Instance.localUserView.local_user.show_scores; this.state.saveUserSettingsForm.show_read_posts = UserService.Instance.localUserView.local_user.show_read_posts; + this.state.saveUserSettingsForm.show_new_post_notifs = + UserService.Instance.localUserView.local_user.show_new_post_notifs; this.state.saveUserSettingsForm.email = UserService.Instance.localUserView.local_user.email; this.state.saveUserSettingsForm.bio = diff --git a/yarn.lock b/yarn.lock index 9ed1bff..8e30236 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5342,10 +5342,10 @@ lcid@^1.0.0: dependencies: invert-kv "^1.0.0" -lemmy-js-client@0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/lemmy-js-client/-/lemmy-js-client-0.11.0.tgz#aab1d445c55ca486eac3e396818371b9adfdf564" - integrity sha512-maLAwvLXbq8ncFY1Bg3MkQ4b2yeDATPUKRldFqlLt7fvDF9Mkfa3udFrroLEyNep2t3vROAtwA1gjf+Fqop0+w== +lemmy-js-client@0.11.3-rc.2: + version "0.11.3-rc.2" + resolved "https://registry.yarnpkg.com/lemmy-js-client/-/lemmy-js-client-0.11.3-rc.2.tgz#2debf0e524dbdade7056900ea1f202be8bde1e1c" + integrity sha512-4dMjUxUdEGS9SlxDJDDAwR5CxSEeHWR8tbHAel1tCVPdxJmFWqOlbucjWDGNyAQIUOEC8hhNdtf3dlIftEF2Rw== levn@^0.4.1: version "0.4.1" -- 2.44.1