MCPcopy
hub / github.com/Justineo/github-hovercard / save

Function save

extensions/chrome/options.js:52–109  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

50}
51
52function save() {
53 let delay = delayInput.val()
54 let readme = readmeInput.prop('checked')
55 let disableProjects = projectsInput.prop('checked')
56 let showSelf = showSelfInput.prop('checked')
57 let side = sideInput.prop('value')
58 let theme = themeInput.prop('value')
59
60 let domains = []
61 $('.domain').each(function() {
62 let domain = $(this)
63 .val()
64 .trim()
65 if (domains.indexOf(domain) === -1 && domain !== GH_DOMAIN) {
66 domains.push(domain)
67 }
68 })
69
70 let revoking = current
71 .filter(domain => {
72 return domains.indexOf(domain) === -1
73 })
74 .map(toOrigins)
75 .reduce(concat, [])
76
77 chrome.permissions.remove(
78 {
79 origins: revoking
80 },
81 () => {
82 let granting = domains.map(toOrigins).reduce(concat, [])
83 chrome.permissions.request(
84 {
85 origins: granting
86 },
87 granted => {
88 let options = { delay, readme, disableProjects, showSelf, side, theme }
89 if (granted) {
90 Object.assign(options, { domains })
91 current = domains
92 } else {
93 log('Domain permission denied.')
94 }
95
96 storage.set(options, () => {
97 chrome.runtime.sendMessage({ event: 'optionschange' }, response => {
98 if (response.success) {
99 window.close()
100 } else {
101 log('Something went wrong.')
102 }
103 })
104 })
105 }
106 )
107 }
108 )
109}

Callers 1

options.jsFile · 0.70

Calls 5

requestMethod · 0.80
setMethod · 0.80
logFunction · 0.70
removeMethod · 0.45
sendMessageMethod · 0.45

Tested by

no test coverage detected