Skip to content

Commit dedb57c

Browse files
committed
Add edit functionality for isolation per domain preferences
Part of #91
1 parent 423a19b commit dedb57c

File tree

2 files changed

+29
-21
lines changed

2 files changed

+29
-21
lines changed

src/ui/popup.js

+1-12
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,7 @@ const initialize = async () => {
2323

2424
const tabs = await browser.tabs.query({active: true});
2525
const tabParsedUrl = new URL(tabs[0].url);
26-
document.querySelector('#isolationDomainPattern').value = tabParsedUrl.hostname;
27-
28-
if (preferences.isolation.domain[tabParsedUrl.hostname]) {
29-
const domainRules = preferences.isolation.domain[tabParsedUrl.hostname];
30-
31-
$('#isolationDomainAlways').dropdown('set selected', domainRules.always.action);
32-
document.querySelector('#isolationDomainAlwaysAllowedInPermanent').checked = domainRules.always.allowedInPermanent;
33-
$('#isolationDomainNavigation').dropdown('set selected', domainRules.navigation.action);
34-
$('#isolationDomainMouseClickMiddle').dropdown('set selected', domainRules.mouseClick.middle.action);
35-
$('#isolationDomainMouseClickCtrlLeft').dropdown('set selected', domainRules.mouseClick.ctrlleft.action);
36-
$('#isolationDomainMouseClickLeft').dropdown('set selected', domainRules.mouseClick.left.action);
37-
}
26+
isolationDomainEditRule(tabParsedUrl.hostname);
3827
} catch (error) {
3928
showPreferencesError(error);
4029
}

src/ui/shared.js

+28-9
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,20 @@ const isolationDomainAddRule = async () => {
123123
updateIsolationDomains();
124124
};
125125

126+
window.isolationDomainEditRule = (domainPattern) => {
127+
document.querySelector('#isolationDomainPattern').value = domainPattern;
128+
129+
if (preferences.isolation.domain[domainPattern]) {
130+
const domainRules = preferences.isolation.domain[domainPattern];
131+
132+
$('#isolationDomainAlways').dropdown('set selected', domainRules.always.action);
133+
document.querySelector('#isolationDomainAlwaysAllowedInPermanent').checked = domainRules.always.allowedInPermanent;
134+
$('#isolationDomainNavigation').dropdown('set selected', domainRules.navigation.action);
135+
$('#isolationDomainMouseClickMiddle').dropdown('set selected', domainRules.mouseClick.middle.action);
136+
$('#isolationDomainMouseClickCtrlLeft').dropdown('set selected', domainRules.mouseClick.ctrlleft.action);
137+
$('#isolationDomainMouseClickLeft').dropdown('set selected', domainRules.mouseClick.left.action);
138+
}
139+
};
126140

127141
let isolationDomainRulesClickEvent = false;
128142
window.updateIsolationDomains = () => {
@@ -131,9 +145,10 @@ window.updateIsolationDomains = () => {
131145
if (domainRules.length) {
132146
isolationDomainRules.html('');
133147
domainRules.map((domainPattern) => {
134-
const el = $(`<div class="item" id="${encodeURIComponent(domainPattern)}">${domainPattern} ` +
135-
`<span href="#" id="domainRule:${encodeURIComponent(domainPattern)}">🛈</span> ` +
136-
'<a href="#" id="isolationRemoveDomainRules" data-tooltip="Remove Rule (no confirmation)" ' +
148+
const el = $(`<div class="item" id="${encodeURIComponent(domainPattern)}">` +
149+
`<span id="infoDomainRule" href="#">${domainPattern} 🛈</span> ` +
150+
'<a href="#" id="editDomainRule" data-tooltip="Edit">🖊️</a> ' +
151+
'<a href="#" id="removeDomainRule" data-tooltip="Remove Rule (no confirmation)" ' +
137152
'data-position="right center">❌</a></div>');
138153
isolationDomainRules.append(el);
139154

@@ -146,7 +161,7 @@ window.updateIsolationDomains = () => {
146161
`Middle: ${preferences.isolation.domain[domainPattern].mouseClick.middle.action} <br>` +
147162
`Ctrl+Left: ${preferences.isolation.domain[domainPattern].mouseClick.ctrlleft.action} <br>` +
148163
`Left: ${preferences.isolation.domain[domainPattern].mouseClick.left.action}</div>`;
149-
el.popup({
164+
el.find('#infoDomainRule').popup({
150165
html: domainRuleTooltip,
151166
inline: true
152167
});
@@ -155,14 +170,18 @@ window.updateIsolationDomains = () => {
155170
if (!isolationDomainRulesClickEvent) {
156171
isolationDomainRules.on('click', async (event) => {
157172
event.preventDefault();
173+
const targetId = $(event.target).attr('id');
158174
const domainPattern = $(event.target).parent().attr('id');
159-
if (domainPattern === 'isolationDomains') {
175+
if (targetId === 'editDomainRule') {
176+
isolationDomainEditRule(domainPattern);
160177
return;
161178
}
162-
delete preferences.isolation.domain[decodeURIComponent(domainPattern)];
163-
// TODO show "rule deleted" instead of "preferences saved"
164-
await savePreferences();
165-
updateIsolationDomains();
179+
if (targetId === 'removeDomainRule') {
180+
delete preferences.isolation.domain[decodeURIComponent(domainPattern)];
181+
// TODO show "rule deleted" instead of "preferences saved"
182+
await savePreferences();
183+
updateIsolationDomains();
184+
}
166185
});
167186
isolationDomainRulesClickEvent = true;
168187
}

0 commit comments

Comments
 (0)