Skip to content

Commit

Permalink
ensuring content script is running, before sending content
Browse files Browse the repository at this point in the history
  • Loading branch information
retog committed Dec 17, 2020
1 parent afbbcb3 commit ddbc94a
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 27 deletions.
6 changes: 3 additions & 3 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
"pull-paramap": "^1.2.2",
"pull-stream": "^3.6.14",
"ssb-client": "^4.9.0",
"web-ext-native-msg": "^4.8.1"
"web-ext-native-msg": "^4.8.2"
},
"devDependencies": {
"@rollup/plugin-commonjs": "^17.0.0",
Expand Down
2 changes: 1 addition & 1 deletion site/product-review.html
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ <h2>Publish your own review of ${item}</h2>
});
}

})
}, error => console.log(error))
setTimeout(() => document.body.classList.add('waited'), 1000)
</script>
</body>
Expand Down
63 changes: 49 additions & 14 deletions src/connect-ssb-page-script.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,35 @@ pull.paraMap = _pullParamap

window.pull = pull

function ping() {
window.postMessage({
direction: 'from-page-script',
action: 'ping'
}, '*');
}

function contentLoaded() {
ping()
return new Promise((resolve, reject) => {
const onMessage = (event) => {
if (event.source == window &&
event.data &&
event.data.direction == 'from-content-script') {
if (event.data.action == 'ping') {
window.removeEventListener('message', onMessage)
resolve()
}
}
}
window.addEventListener('message', onMessage)
})
}

window.connectSsb = function() {
return contentLoaded().then(connectSsbNoWait)
}

function connectSsbNoWait() {
return new Promise((resolve, reject) => {

let messageDataCallback = null
Expand All @@ -24,18 +52,22 @@ window.connectSsb = function() {
}


window.addEventListener("message", (event) => {
window.addEventListener('message', (event) => {
if (event.source == window &&
event.data &&
event.data.direction == "from-content-script") {
const asBuffer = Buffer.from(event.data.message)
if (messageDataCallback) {
const _messageDataCallback = messageDataCallback
messageDataCallback = null
_messageDataCallback(null, asBuffer)
} else {
messageDataBuffer.push(asBuffer)
}
event.data.direction == 'from-content-script') {
if (event.data.action == 'ping') {
//ignored ping()
} else {
const asBuffer = Buffer.from(event.data.message)
if (messageDataCallback) {
const _messageDataCallback = messageDataCallback
messageDataCallback = null
_messageDataCallback(null, asBuffer)
} else {
messageDataBuffer.push(asBuffer)
}
}
}
});

Expand All @@ -44,14 +76,15 @@ window.connectSsb = function() {
source(null, function more(end,data) {
if (end) return done()
window.postMessage({
direction: "from-page-script",
direction: 'from-page-script',
message: data
}, "*")
}, '*')
source(null, more)
})
}
}
const client = MRPC(function (err, manifest) {

const clientBuilder = MRPC(function (err, manifest) {
if (err) reject(err)
else {

Expand All @@ -62,7 +95,9 @@ window.connectSsb = function() {

resolve(client)
}
})()
})

const client = clientBuilder()

const onClose = () => {
console.log('connected to muxrpc server')
Expand Down
26 changes: 18 additions & 8 deletions src/content-script.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,30 @@ const fromPage = function read(abort, cb) {
}


function ping() {
window.postMessage({
direction: "from-content-script",
action: 'ping'
}, window.location.origin);
}

window.addEventListener("message", (event) => {
if (event.source == window &&
event.data &&
event.data.direction == "from-page-script") {
if (event.source == window && event.data && event.data.direction == "from-page-script") {
if (event.data.action == "ping") {
ping()
} else {
//new Uint8Array(event.data.message) is not accepted by muxrpc
const asBuffer = Buffer.from(event.data.message)
if (messageDataCallback) {
const _messageDataCallback = messageDataCallback
messageDataCallback = null
_messageDataCallback(null, asBuffer)
const _messageDataCallback = messageDataCallback
messageDataCallback = null
_messageDataCallback(null, asBuffer)
} else {
console.log('buffering....')
messageDataBuffer.push(asBuffer)
}
}
}
}
});

const toPage = function sink(done) {
Expand Down Expand Up @@ -92,4 +101,5 @@ const toBackgroundScript = function sink(done) {
}*/

pull(fromPage, toBackgroundScript())
pull(fromBackgroundScript, toPage())
pull(fromBackgroundScript, toPage())
ping()

0 comments on commit ddbc94a

Please sign in to comment.