From a93a3fbdf7125dfa6d60a1dde2365977d1ffbcee Mon Sep 17 00:00:00 2001 From: Tim Golen Date: Wed, 1 Jan 2025 10:38:26 -0700 Subject: [PATCH 1/3] Add initial onyx data --- src/js/ONYXKEYS.js | 1 + src/js/lib/actions/Issues.js | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/src/js/ONYXKEYS.js b/src/js/ONYXKEYS.js index 10e80286..bb9687cd 100644 --- a/src/js/ONYXKEYS.js +++ b/src/js/ONYXKEYS.js @@ -15,6 +15,7 @@ export default { DAILY_IMPROVEMENTS: 'issueDailyImprovements', ENGINEERING: 'issueEngineering', FILTER: 'issueFilter', + CHECKBOXES: 'issueCheckboxes', HOTPICKS: 'issueHotPicks', }, diff --git a/src/js/lib/actions/Issues.js b/src/js/lib/actions/Issues.js index 0f86420d..8a5410d9 100644 --- a/src/js/lib/actions/Issues.js +++ b/src/js/lib/actions/Issues.js @@ -137,6 +137,16 @@ function getEngineering() { )); } +/** + * @param {Object} checkboxes + * @param {String} checkboxes.shouldHideOnHold + * @param {String} checkboxes.shouldHideUnderReview + * @param {String} checkboxes.shouldHideOwnedBySomeoneElse + */ +function saveCheckboxes(checkboxes) { + ReactNativeOnyx.merge(ONYXKEYS.ISSUES.CHECKBOXES, checkboxes); +} + /** * @param {Object} filters * @param {String} filters.milestone @@ -161,5 +171,6 @@ export { getEngineering, getDailyImprovements, getHotPicks, + saveCheckboxes, saveFilters, }; From 9a6a24bb7df205591316378598320ab9edd8650b Mon Sep 17 00:00:00 2001 From: Tim Golen Date: Wed, 1 Jan 2025 11:14:05 -0700 Subject: [PATCH 2/3] Use Onyx data in the UI and save it --- src/js/lib/actions/Issues.js | 6 ++-- src/js/module/dashboard/ListIssuesAssigned.js | 29 ++++++++++++++++--- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/src/js/lib/actions/Issues.js b/src/js/lib/actions/Issues.js index 8a5410d9..5e027744 100644 --- a/src/js/lib/actions/Issues.js +++ b/src/js/lib/actions/Issues.js @@ -139,9 +139,9 @@ function getEngineering() { /** * @param {Object} checkboxes - * @param {String} checkboxes.shouldHideOnHold - * @param {String} checkboxes.shouldHideUnderReview - * @param {String} checkboxes.shouldHideOwnedBySomeoneElse + * @param {String} [checkboxes.shouldHideOnHold] + * @param {String} [checkboxes.shouldHideUnderReview] + * @param {String} [checkboxes.shouldHideOwnedBySomeoneElse] */ function saveCheckboxes(checkboxes) { ReactNativeOnyx.merge(ONYXKEYS.ISSUES.CHECKBOXES, checkboxes); diff --git a/src/js/module/dashboard/ListIssuesAssigned.js b/src/js/module/dashboard/ListIssuesAssigned.js index d998d2f8..482f4daa 100644 --- a/src/js/module/dashboard/ListIssuesAssigned.js +++ b/src/js/module/dashboard/ListIssuesAssigned.js @@ -13,19 +13,34 @@ const propTypes = { /** All the GH issues assigned to the current user */ issues: PropTypes.objectOf(IssuePropTypes), + + checkboxes: PropTypes.shape({ + /** Should issues that are on HOLD be hidden? */ + shouldHideOnHold: PropTypes.bool, + + /** Should issues with "reviewing" label be hidden? */ + shouldHideUnderReview: PropTypes.bool, + + /** Should issues owned by someone else be hidden? */ + shouldHideOwnedBySomeoneElse: PropTypes.bool, + }), }; const defaultProps = { issues: null, + checkboxes: { + shouldHideOnHold: false, + shouldHideUnderReview: false, + shouldHideOwnedBySomeoneElse: false, + }, }; class ListIssuesAssigned extends React.Component { constructor(props) { super(props); - const params = new URLSearchParams(window.location.search); this.state = { - shouldHideHeldIssues: !!params.get('shouldHideOnHold'), - shouldHideUnderReviewIssues: !!params.get('shouldHideUnderReview'), - shouldHideOwnedBySomeoneElseIssues: !!params.get('shouldHideOwnedBySomeoneElse'), + shouldHideHeldIssues: props.checkboxes.shouldHideOnHold, + shouldHideUnderReviewIssues: props.checkboxes.shouldHideUnderReview, + shouldHideOwnedBySomeoneElseIssues: props.checkboxes.shouldHideOwnedBySomeoneElse, }; this.fetch = this.fetch.bind(this); this.toggleHeldFilter = this.toggleHeldFilter.bind(this); @@ -54,14 +69,17 @@ class ListIssuesAssigned extends React.Component { toggleHeldFilter() { this.setState(prevState => ({shouldHideHeldIssues: !prevState.shouldHideHeldIssues})); + Issues.saveCheckboxes({shouldHideOnHold: !this.state.shouldHideHeldIssues}); } toggleUnderReviewFilter() { this.setState(prevState => ({shouldHideUnderReviewIssues: !prevState.shouldHideUnderReviewIssues})); + Issues.saveCheckboxes({shouldHideUnderReview: !this.state.shouldHideUnderReviewIssues}); } toggleOwnedBySomeoneElseFilter() { this.setState(prevState => ({shouldHideOwnedBySomeoneElseIssues: !prevState.shouldHideOwnedBySomeoneElseIssues})); + Issues.saveCheckboxes({shouldHideOwnedBySomeoneElse: !this.state.shouldHideOwnedBySomeoneElseIssues}); } render() { @@ -190,4 +208,7 @@ export default withOnyx({ issues: { key: ONYXKEYS.ISSUES.ASSIGNED, }, + checkboxes: { + key: ONYXKEYS.ISSUES.CHECKBOXES, + }, })(ListIssuesAssigned); From e903dc8797b224b86ce41a23015d5686db022f55 Mon Sep 17 00:00:00 2001 From: Tim Golen Date: Wed, 1 Jan 2025 11:19:33 -0700 Subject: [PATCH 3/3] Bump version --- CHANGELOG.md | 3 +++ assets/manifest-firefox.json | 2 +- assets/manifest.json | 2 +- package-lock.json | 2 +- package.json | 2 +- 5 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 74f58e8a..903c8aff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +#1.3.74 +- Moved the previous query string params to Onyx + #1.3.73 - Added query string params to determine initial checked state for "on hold", "under review", and "owned by someone else" checkboxes diff --git a/assets/manifest-firefox.json b/assets/manifest-firefox.json index f558ed54..e008db29 100644 --- a/assets/manifest-firefox.json +++ b/assets/manifest-firefox.json @@ -2,7 +2,7 @@ "manifest_version": 3, "name": "K2 for GitHub", - "version": "1.3.73", + "version": "1.3.74", "description": "Manage your Kernel Scheduling from directly inside GitHub", "browser_specific_settings": { diff --git a/assets/manifest.json b/assets/manifest.json index 83d77409..81329de3 100644 --- a/assets/manifest.json +++ b/assets/manifest.json @@ -2,7 +2,7 @@ "manifest_version": 3, "name": "K2 for GitHub", - "version": "1.3.73", + "version": "1.3.74", "description": "Manage your Kernel Scheduling from directly inside GitHub", "icons": { diff --git a/package-lock.json b/package-lock.json index 81db2aa4..8561b9ec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "k2-extension", - "version": "1.3.73", + "version": "1.3.74", "lockfileVersion": 3, "requires": true, "packages": { diff --git a/package.json b/package.json index 74cec21d..7f275fad 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "k2-extension", - "version": "1.3.73", + "version": "1.3.74", "description": "A Chrome Extension for Kernel Schedule", "private": true, "scripts": {