Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove merged badge #1058

Closed
wants to merge 30 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
eddac63
Devon style
dbharris2 Nov 10, 2023
37eec11
Remove tabs permission requests
dbharris2 Nov 13, 2023
6d8da52
Fix needs revision query & remove commits query
dbharris2 Nov 13, 2023
4dba855
Migrate onto Manifest v3
dbharris2 Nov 13, 2023
2cebe3d
Improve badging for drafts
dbharris2 Nov 13, 2023
3ebd33a
Improve needs revision logic
dbharris2 Nov 14, 2023
ee37fa4
Removed approved PRs from needs review
dbharris2 Nov 14, 2023
f601b06
Update check & merge badges
dbharris2 Nov 15, 2023
235f664
Reorder badges
dbharris2 Nov 15, 2023
ce748f4
Reorder PR search queries
dbharris2 Nov 15, 2023
a17c115
Update needs revision PR query
dbharris2 Nov 15, 2023
8d18f49
Simplify my PRs
dbharris2 Nov 15, 2023
2314589
Update review requested PR query
dbharris2 Nov 15, 2023
9bd6e78
Remove notifications
dbharris2 Nov 15, 2023
550e5c2
Always open PRs in new tab
dbharris2 Nov 16, 2023
0a33048
Tweak needs revision PR query
dbharris2 Nov 16, 2023
9008c1f
Add mergeable badge to incoming PRs
dbharris2 Nov 16, 2023
e6c067b
Merge PullRequestStatus into one type
dbharris2 Nov 16, 2023
93bf9a0
Better handle layout collision between badges and changeset
dbharris2 Nov 16, 2023
5b89dc4
Fix needs revision for my PRs
dbharris2 Nov 17, 2023
3d38d7e
No red background for draft PRs
dbharris2 Nov 17, 2023
102952c
Improve needs review / needs revision logic
dbharris2 Nov 17, 2023
623b756
Always show refresh button
dbharris2 Dec 6, 2023
0f78b85
Improve styling for long PR titles
dbharris2 Dec 6, 2023
f18a4ab
Update manifest for first Chrome store publication
dbharris2 Dec 7, 2023
1fbf7f7
Add reload button in case refreshing gets stuck
dbharris2 Dec 12, 2023
c1a3828
Bump version
dbharris2 Dec 12, 2023
a3aa0ae
Add recently merged PRs
dbharris2 Apr 9, 2024
24d3b15
Merge pull request #1 from dbharris2/recently-merged
dbharris2 Apr 9, 2024
b09271e
Remove mergable badge
dbharris2 Apr 11, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 83 additions & 0 deletions background.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
import { ChromeApi } from "./src/chrome/api";
import { chromeApiSingleton } from "./src/chrome/implementation";
import { buildEnvironment } from "./src/environment/implementation";
import { CrossScriptMessenger } from "./src/messaging/api";
import { Core } from "./src/state/core";

// This is the entry point of the service worker of the Chrome extension.
console.debug("Service worker running...");

const chromeApi = chromeApiSingleton;
const env = buildEnvironment(chromeApiSingleton);
const core = new Core(env);

selfUpdateAsap(chromeApi);
refreshOnUpdate(chromeApi);
refreshRegulary(chromeApi);
refreshOnDemand(env.messenger);

async function triggerRefresh() {
const result = await chromeApi.storage.session.get(["refreshing"]);
const refreshing = result?.refreshing ?? false;
if (refreshing) {
return;
}
try {
chromeApi.storage.session.set({ refreshing: true });
await core.load();
if (!core.token) {
return;
}
await core.refreshPullRequests();
} finally {
chromeApi.storage.session.set({ refreshing: false });
}
}

/**
* Automatically reloads the extension as soon as an update is available.
*/
function selfUpdateAsap(chromeApi: ChromeApi) {
chromeApi.runtime.onUpdateAvailable.addListener(() => {
console.debug("Update available");
chromeApi.runtime.reload();
});
}

/**
* Refreshes pull requests when the extension is installed or updated.
*/
function refreshOnUpdate(chromeApi: ChromeApi) {
chromeApi.runtime.onInstalled.addListener(() => {
console.debug("Extension installed");
triggerRefresh().catch(console.error);
});
}

/**
* Refreshes pull requests at regular intervals.
*/
function refreshRegulary(chromeApi: ChromeApi) {
chromeApi.alarms.create({
periodInMinutes: 10,
});
chromeApi.alarms.onAlarm.addListener((alarm) => {
console.debug("Alarm triggered", alarm);
triggerRefresh().catch(console.error);
});
}

/**
* Refreshes pull requests when requested by the user (e.g. after entering a new token).
*/
function refreshOnDemand(messenger: CrossScriptMessenger) {
messenger.listen((message) => {
console.debug("Message received", message);
if (message.kind === "refresh") {
triggerRefresh().catch(console.error);
}
if (message.kind === "restart") {
chromeApi.runtime.reload();
}
});
}
17 changes: 8 additions & 9 deletions manifest.json
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
{
"manifest_version": 2,
"name": "PR Monitor",
"version": "0.0.0",
"description": "Get notified when you receive a pull request on GitHub.",
"permissions": ["alarms", "notifications", "storage"],
"optional_permissions": ["tabs"],
"manifest_version": 3,
"name": "Github PR Tracker",
"version": "1.0.2",
"description": "Better track Github PRs",
"permissions": ["alarms", "storage"],
"background": {
"scripts": ["background.js"],
"persistent": true
"service_worker": "./background.js",
"type": "module"
},
"browser_action": {
"action": {
"default_popup": "index.html#popup"
},
"icons": {
Expand Down
8 changes: 2 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,13 @@
"dependencies": {
"@emotion/react": "^11.10.0",
"@emotion/styled": "^11.10.0",
"@fortawesome/fontawesome-svg-core": "^6.1.2",
"@fortawesome/free-solid-svg-icons": "^6.1.2",
"@fortawesome/react-fontawesome": "^0.2.0",
"@octokit/plugin-throttling": "^4.3.2",
"@octokit/request": "^8.1.5",
"@octokit/rest": "^19.0.4",
"@types/lodash": "^4.14.184",
"assert-never": "^1.2.1",
"@primer/octicons-react": "^19.8.0",
"bootstrap": "^5.2.0",
"graphql": "^16.6.0",
"graphql-request": "^4.3.0",
"lodash": "^4.17.21",
"mobx": "^6.6.1",
"mobx-react-lite": "^3.4.0",
"moment": "^2.29.4",
Expand Down
Binary file removed screencasts/latest.gif
Binary file not shown.
Binary file removed screencasts/v0.5.1.gif
Binary file not shown.
92 changes: 0 additions & 92 deletions src/background.ts

This file was deleted.

4 changes: 2 additions & 2 deletions src/badge/implementation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ export function buildBadger(chromeApi: ChromeApi): Badger {
}

function updateBadge(chromeApi: ChromeApi, state: BadgeState) {
chromeApi.browserAction.setBadgeText({
chromeApi.action.setBadgeText({
text: badgeLabel(state),
});
chromeApi.browserAction.setBadgeBackgroundColor({
chromeApi.action.setBadgeBackgroundColor({
color: badgeColor(state),
});
}
Expand Down
10 changes: 5 additions & 5 deletions src/chrome/fake-chrome.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@ import { ChromeApi, ChromeStorageItems } from "./api";
* outside of a Chrome extension.
*/
const partialFakeChrome: RecursivePartial<ChromeApi> = {
browserAction: {
setBadgeText(details: chrome.browserAction.BadgeTextDetails) {
console.log("chrome.browserAction.setBadgeText", details);
action: {
setBadgeText(details: chrome.action.BadgeTextDetails) {
console.log("chrome.action.setBadgeText", details);
},
setBadgeBackgroundColor(
details: chrome.browserAction.BadgeBackgroundColorDetails
details: chrome.action.BadgeBackgroundColorDetails
) {
console.log("chrome.browserAction.setBadgeBackgroundColor", details);
console.log("chrome.action.setBadgeBackgroundColor", details);
},
},
runtime: {
Expand Down
65 changes: 0 additions & 65 deletions src/components/IgnoredRepositories.tsx

This file was deleted.

33 changes: 0 additions & 33 deletions src/components/NewCommitsToggle.tsx

This file was deleted.

Loading
Loading