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

feat(toolbar): Implements logic to display badge icon #379

Merged
merged 8 commits into from
Jul 12, 2024
1 change: 1 addition & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ Features:

Changes:
- Updates style and replace old logos with new ones([#378](https://github.com/freelawproject/recap-chrome/pull/378))
- Adds a badge to the extension icon and a banner in the options menu([#379](https://github.com/freelawproject/recap-chrome/pull/379))

Fixes:
- None yet
Expand Down
31 changes: 31 additions & 0 deletions src/assets/css/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,37 @@ footer #version {
justify-self: center;
}

#options-body .info-banner {
background-color: #D1E2F2;
border-color: #B3C9D9;
border-radius: 4px;
padding: 28px 20px;
margin-bottom: 10px;
}

#options-body #info-banner-message {
font-size: 16px;
color: #003569;
}

#options-body .banner-icon-container {
padding-top: 12.5px;
padding-right: 20px;
padding-bottom: 12.5px;
}

#options-body #banner-icon {
width: 30px;
}

#options-body #dismiss-banner {
padding-left: 20px;
}

#options-body #dismiss-banner button {
width: 16px;
}

/*
CSS for styling content on PACER pages generated by the content script.
*/
Expand Down
11 changes: 11 additions & 0 deletions src/background.js
Original file line number Diff line number Diff line change
Expand Up @@ -206,3 +206,14 @@ chrome.tabs.onUpdated.addListener(async function (tabId, details, tab) {
chrome.tabs.onActivated.addListener(function(activeInfo){
getTabById(activeInfo.tabId, updateToolbarButton);
});

chrome.runtime.onConnect.addListener(function (port) {
if (port.name === 'popup') {
port.onDisconnect.addListener(function () {
chrome.storage.local.get('options', function (items) {
items.options['dismiss_news_badge'] = true;
saveOptionsAndUpdateToolbar(items.options);
});
});
}
});
16 changes: 9 additions & 7 deletions src/content.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,15 +48,17 @@ async function addRecapInformation(msg) {
}

const options = await getItemsFromStorage('options');
if ('dismiss_class_action_info' in options && options['dismiss_class_action_info']) {
if (
'login_dismiss_new_brand_info' in options &&
options['login_dismiss_new_brand_info']
) {
return;
}

const variant = await getItemsFromStorage('variant');
const [bannerVariant, linkVariant] = variant.split('-');
PACER.addRecapBannerToLoginPage(
bannerMessages[bannerVariant], donateLinks[linkVariant]
);
let bannerMessage =
'Get ready for a new chapter! RECAP is getting a ' + 'fresh new look.';
let bannerLink = 'https://free.law/2024/07/05/new-branding-rip-flip';
PACER.addRecapBannerToLoginPage(bannerMessage, bannerLink);

let dismiss_button = document.getElementById('dismiss_recap_info_banner');
dismiss_button.addEventListener('click', async () => {
Expand All @@ -66,7 +68,7 @@ async function addRecapInformation(msg) {

let learn_more_btn = document.getElementById('learn_more_btn');
learn_more_btn.addEventListener('click', async () => {
await PACER.removeBannerFromLoginPage();
await PACER.removeBannerFromLoginPage(event_from_btn = true);
return true;
});

Expand Down
59 changes: 44 additions & 15 deletions src/options.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,26 +9,55 @@
</head>

<body id="options-body">
<div id="container" class="regular-grid">
<div id="container" class="grid-with-banner">
<!-- Main Tab Content + Donation plea -->
<header>
<div class="d-flex flex-column">
<nav>
<div class="nav nav-tabs" id="nav-recap-tab" role="tablist">
<a id="nav-recap-tab" class="col-sm text-center nav-item nav-link active" data-toggle="tab" role="tab"
href="#nav-recap" aria-controls="nav-recap" aria-selected="true">
RECAP Archive
</a>
<a id="nav-settings-tab" class="col-sm text-center nav-item nav-link" data-toggle="tab" role="tab"
href="#nav-settings" aria-controls="nav-settings" aria-selected="false">
Settings
</a>
<a id="nav-donate-tab" class="col-sm text-center nav-item nav-link" data-toggle="tab" role="tab"
href="#nav-donate" aria-controls="nav-donate" aria-selected="false">
Donate
<div id="header-banner" class="info-banner d-flex flex-column">
<div id="message-section" class="d-flex">
<div class="flex align-items-center banner-icon-container">
<div id="banner-icon">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5"
stroke="currentColor">
<path stroke-linecap="round" stroke-linejoin="round"
d="M10.34 15.84c-.688-.06-1.386-.09-2.09-.09H7.5a4.5 4.5 0 1 1 0-9h.75c.704 0 1.402-.03 2.09-.09m0 9.18c.253.962.584 1.892.985 2.783.247.55.06 1.21-.463 1.511l-.657.38c-.551.318-1.26.117-1.527-.461a20.845 20.845 0 0 1-1.44-4.282m3.102.069a18.03 18.03 0 0 1-.59-4.59c0-1.586.205-3.124.59-4.59m0 9.18a23.848 23.848 0 0 1 8.835 2.535M10.34 6.66a23.847 23.847 0 0 0 8.835-2.535m0 0A23.74 23.74 0 0 0 18.795 3m.38 1.125a23.91 23.91 0 0 1 1.014 5.395m-1.014 8.855c-.118.38-.245.754-.38 1.125m.38-1.125a23.91 23.91 0 0 0 1.014-5.395m0-3.46c.495.413.811 1.035.811 1.73 0 .695-.316 1.317-.811 1.73m0-3.46a24.347 24.347 0 0 1 0 3.46" />
</svg>
</div>
</div>
<p id="info-banner-message">
<b>Get ready for a new chapter!</b> RECAP is getting a fresh new look.
</p>
<div id="dismiss-banner" class="d-flex align-items-start justify-content-end">
<button type="button" class="close" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
</div>
<div class="input-group-append d-flex justify-content-center">
<a class="btn btn-primary" id="learn-more-button" target="_blank" rel="noopener"
href="https://free.law/2024/07/05/new-branding-rip-flip">
&nbsp;Learn More
</a>
</div>
</nav>
</div>
<div>
<nav>
<div class="nav nav-tabs" id="nav-recap-tab" role="tablist">
<a id="nav-recap-tab" class="col-sm text-center nav-item nav-link active" data-toggle="tab" role="tab"
href="#nav-recap" aria-controls="nav-recap" aria-selected="true">
RECAP Archive
</a>
<a id="nav-settings-tab" class="col-sm text-center nav-item nav-link" data-toggle="tab" role="tab"
href="#nav-settings" aria-controls="nav-settings" aria-selected="false">
Settings
</a>
<a id="nav-donate-tab" class="col-sm text-center nav-item nav-link" data-toggle="tab" role="tab"
href="#nav-donate" aria-controls="nav-donate" aria-selected="false">
Donate
</a>
</div>
</nav>
</div>
</div>
<!-- Navigation Tabs -->
</header>
Expand Down
19 changes: 19 additions & 0 deletions src/options.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ async function load_options() {
inputs[i].value = items.options[inputs[i].id] || '';
}
}
if ('option_dismiss_new_brand_info' in items.options) removeInfoBanner();
});
}

Expand All @@ -34,6 +35,11 @@ function save_options() {
}
}

let banner = document.getElementById('header-banner');
if (!banner) {
options['option_dismiss_new_brand_info'] = true;
}

chrome.storage.local.set({ options: options }, function () {
chrome.tabs.query({ active: true, currentWindow: true }, function (tabs) {
updateToolbarButton(tabs[0]);
Expand Down Expand Up @@ -124,4 +130,17 @@ function showHideReceiptsWarning (tabs){
(function () {
let ver = document.getElementById('version');
ver.textContent = `(version ${chrome.runtime.getManifest().version})`;

let dismiss_button = document.querySelector('#dismiss-banner button');
if (dismiss_button) {
dismiss_button.addEventListener('click', function (e) {
removeInfoBanner();
save_options();
});
}

// Use the messaging APIs to set up a Port between the popup and background
// page. We should get a onDisconnect event in the background page when
// the popup goes away.
chrome.runtime.connect({ name: 'popup' });
})();
8 changes: 6 additions & 2 deletions src/pacer.js
Original file line number Diff line number Diff line change
Expand Up @@ -794,13 +794,17 @@ let PACER = {
headerContainer.after(banner_div);
},

removeBannerFromLoginPage: async () => {
removeBannerFromLoginPage: async (event_from_btn = false) => {
// Updates user preferences and remove the information banner
let info_banner = document.getElementById('recap_info_banner');
info_banner.remove();

let options = await getItemsFromStorage('options');
options['dismiss_class_action_info'] = true;
if (event_from_btn) {
options['option_dismiss_new_brand_info'] = true;
options['dismiss_news_badge'] = true;
}
options['login_dismiss_new_brand_info'] = true;
saveItemToStorage({ options: options });
},

Expand Down
9 changes: 9 additions & 0 deletions src/toolbar_button.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,15 @@ function updateToolbarButton(tab) {
};

chrome.storage.local.get('options', function(items){
if (
'dismiss_news_badge' in items['options'] &&
items['options']['dismiss_news_badge']
) {
chrome.browserAction.setBadgeText({ text: '' });
} else {
chrome.browserAction.setBadgeText({ text: '🔔' });
}

if (tab === null || tab === undefined) {
// There's code in Firefox that can be called before the defaults are set
// and before the tab is even established. Catch that, and handle it or
Expand Down
Loading