diff --git a/src/popup.html b/src/popup.html index 522ee84..283ee09 100644 --- a/src/popup.html +++ b/src/popup.html @@ -135,7 +135,8 @@

Organization Name

Which organization's GitHub activity?
- Enter the GitHub organization name to fetch activites for. Default is fossasia. + Enter the GitHub organization name to fetch activities for. Leave empty to fetch all your GitHub + activities across all organizations. Organization name is not case-sensitive.
@@ -143,7 +144,7 @@

Organization Name

+ placeholder="Enter organization name"> @@ -174,19 +175,23 @@

Your Github Token

- + + -
- - - - Github Token required. + + + + Github Token required. + -
@@ -231,6 +236,7 @@

Note:

  • Please note that some discrepancies may occur in the generated SCRUM. We recommend manually reviewing and editing the report to ensure accuracy before sharing
  • + diff --git a/src/scripts/popup.js b/src/scripts/popup.js index 855da2a..b45a888 100644 --- a/src/scripts/popup.js +++ b/src/scripts/popup.js @@ -129,7 +129,7 @@ document.addEventListener('DOMContentLoaded', function () { 'githubToken', 'projectName', 'settingsToggle', - + ]; const radios = document.querySelectorAll('input[name="timeframe"]'); @@ -217,9 +217,7 @@ document.addEventListener('DOMContentLoaded', function () { generateBtn.addEventListener('click', function () { // Check org input value before generating report let org = orgInput.value.trim().toLowerCase(); - if (!org) { - org = 'fossasia'; - } + // Allow empty org to fetch all GitHub activities chrome.storage.local.set({ orgName: org }, () => { generateBtn.innerHTML = ' Generating...'; generateBtn.disabled = true; @@ -379,9 +377,7 @@ document.addEventListener('DOMContentLoaded', function () { // Auto-update orgName in storage on input change orgInput.addEventListener('input', function () { let org = orgInput.value.trim().toLowerCase(); - if (!org) { - org = 'fossasia'; - } + // Allow empty org to fetch all GitHub activities chrome.storage.local.set({ orgName: org }, function () { chrome.storage.local.remove('githubCache'); // Clear cache on org change }); @@ -390,12 +386,23 @@ document.addEventListener('DOMContentLoaded', function () { // Add click event for setOrgBtn to set org setOrgBtn.addEventListener('click', function () { let org = orgInput.value.trim().toLowerCase(); + // Do not default to any org, allow empty string + // if (!org) { + // org = 'fossasia'; + // } + console.log('[Org Check] Checking organization:', org); if (!org) { - org = 'fossasia'; + // If org is empty, clear orgName in storage but don't auto-generate report + chrome.storage.local.set({ orgName: '' }, function () { + console.log('[Org Check] Organization cleared from storage'); + }); + return; } + setOrgBtn.disabled = true; const originalText = setOrgBtn.innerHTML; setOrgBtn.innerHTML = ''; + fetch(`https://api.github.com/orgs/${org}`) .then(res => { if (res.status === 404) { @@ -425,6 +432,7 @@ document.addEventListener('DOMContentLoaded', function () { } const oldToast = document.getElementById('invalid-org-toast'); if (oldToast) oldToast.parentNode.removeChild(oldToast); + chrome.storage.local.set({ orgName: org }, function () { // Always clear the scrum report and show org changed message const scrumReport = document.getElementById('scrumReport'); @@ -454,6 +462,7 @@ document.addEventListener('DOMContentLoaded', function () { setTimeout(() => { if (toastDiv.parentNode) toastDiv.parentNode.removeChild(toastDiv); }, 2500); + }); }) .catch((err) => { diff --git a/src/scripts/scrumHelper.js b/src/scripts/scrumHelper.js index 3aebad4..fc3aac6 100644 --- a/src/scripts/scrumHelper.js +++ b/src/scripts/scrumHelper.js @@ -14,7 +14,9 @@ let refreshButton_Placed = false; let enableToggle = true; let hasInjectedContent = false; let scrumGenerationInProgress = false; -let orgName = 'fossasia'; // default + +let orgName = ''; + function allIncluded(outputTarget = 'email') { if (scrumGenerationInProgress) { console.warn('[SCRUM-HELPER]: Scrum generation already in progress, aborting new call.'); @@ -175,8 +177,9 @@ function allIncluded(outputTarget = 'email') { log('Restored cache from storage'); } - if (items.orgName) { - orgName = items.orgName; + if (typeof items.orgName !== 'undefined') { + orgName = items.orgName || ''; + console.log('[SCRUM-HELPER] orgName set to:', orgName); } }, ); @@ -324,7 +327,7 @@ function allIncluded(outputTarget = 'email') { } async function fetchGithubData() { - const cacheKey = `${githubUsername}-${orgName}-${startingDate}-${endingDate}`; + const cacheKey = `${githubUsername}-${startingDate}-${endingDate}-${orgName || 'all'}`; if (githubCache.fetching || (githubCache.cacheKey === cacheKey && githubCache.data)) { log('Fetch already in progress or data already fetched. Skipping fetch.'); @@ -396,8 +399,17 @@ function allIncluded(outputTarget = 'email') { log('Making public requests'); } - let issueUrl = `https://api.github.com/search/issues?q=author%3A${githubUsername}+org%3A${orgName}+updated%3A${startingDate}..${endingDate}&per_page=100`; - let prUrl = `https://api.github.com/search/issues?q=commenter%3A${githubUsername}+org%3A${orgName}+updated%3A${startingDate}..${endingDate}&per_page=100`; + // Build org part for query only if orgName is set and not empty + console.log('[SCRUM-HELPER] orgName before API query:', orgName); + console.log('[SCRUM-HELPER] orgName type:', typeof orgName); + console.log('[SCRUM-HELPER] orgName length:', orgName ? orgName.length : 0); + let orgPart = orgName && orgName.trim() ? `+org%3A${orgName}` : ''; + console.log('[SCRUM-HELPER] orgPart for API:', orgPart); + console.log('[SCRUM-HELPER] orgPart length:', orgPart.length); + let issueUrl = `https://api.github.com/search/issues?q=author%3A${githubUsername}${orgPart}+updated%3A${startingDate}..${endingDate}&per_page=100`; + let prUrl = `https://api.github.com/search/issues?q=commenter%3A${githubUsername}${orgPart}+updated%3A${startingDate}..${endingDate}&per_page=100`; + console.log('[SCRUM-HELPER] issueUrl:', issueUrl); + console.log('[SCRUM-HELPER] prUrl:', prUrl); let userUrl = `https://api.github.com/users/${githubUsername}`; try { @@ -676,6 +688,7 @@ ${lastWeekUl}
    ${nextWeekUl}
    3. What is blocking me from making progress?
    ${userReason}`; + } @@ -1145,6 +1158,7 @@ async function forceGithubDataRefresh() { // allIncluded('email'); + if (window.location.protocol.startsWith('http')) { allIncluded('email'); $('button>span:contains(New conversation)').parent('button').click(() => { @@ -1177,6 +1191,7 @@ ${prs.map((pr, i) => ` repo${i}: repository(owner: \"${pr.owner}\", name: \"${pr pr${i}: pullRequest(number: ${pr.number}) { merged } }`).join('\n')} }`; + try { const res = await fetch('https://api.github.com/graphql', { method: 'POST', @@ -1196,4 +1211,5 @@ ${prs.map((pr, i) => ` repo${i}: repository(owner: \"${pr.owner}\", name: \"${pr } catch (e) { return results; } -} \ No newline at end of file +} +