Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 38 additions & 5 deletions wikiweaver-ext/background.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
const defaultdomain = "https://wikiweaver.stuffontheinter.net";

var eventSource = null;

function Matches(url, filters) {
for (let filter of filters) {
if (url.match(filter)) {
Expand Down Expand Up @@ -140,6 +142,27 @@ async function HandleMessageConnect(msg) {
if (response.Success) {
await SetPageCount(0);
await SetUserIdForLobby(options.code, response.UserID);

if (eventSource != null) {
eventSource.close();
eventSource = null;
}

// Server sent event reference: https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events
eventSource = new EventSource(`${options.url}/api/ext/events?code=${options.code}&userid=${response.UserID}`);
eventSource.addEventListener("start", async (e) => {
const data = JSON.parse(e.data);
const options = await chrome.storage.local.get();

chrome.storage.session.set({ startPage: data.StartPage });

if (options.autoOpenStartPage) {
chrome.tabs.create({
active: true,
url: Urlify(data.StartPage)
})
}
});
}

await UpdateBadge(response.Success);
Expand Down Expand Up @@ -170,9 +193,6 @@ chrome.runtime.onMessage.addListener(async (msg) => {
async function SendPOSTRequestToServer(url, endpoint, body) {
console.log("sent:", body);

if (url === "") {
url = defaultdomain;
}
let response = await fetch(`${url}${endpoint}`, {
method: "POST",
body: JSON.stringify(body),
Expand All @@ -188,6 +208,11 @@ async function SendPOSTRequestToServer(url, endpoint, body) {
return response;
}

function Urlify(InString) {
// Turns an id back into a URL
return "https://en.wikipedia.org/wiki/" + InString
}

async function GetWikipediaArticleTitle(url) {
title = decodeURIComponent(url)
.split("/")
Expand All @@ -214,14 +239,14 @@ async function SearchForWikipediaTitle(title) {
};

url = url + "?origin=*";
Object.keys(params).forEach(function (key) {
Object.keys(params).forEach(function(key) {
url += "&" + key + "=" + params[key];
});

response = await fetch(url)
.then((response) => response.json())
.then((json) => json)
.catch(function (error) {
.catch(function(error) {
return { error: error };
});

Expand Down Expand Up @@ -317,3 +342,11 @@ async function UpdateBadge(success) {
chrome.action.setBadgeBackgroundColor({ color: color });
chrome.action.setBadgeText({ text: String(await GetPageCount()) });
}

chrome.runtime.onInstalled.addListener(async () => {
let options = await chrome.storage.local.get();

const url = options.url || defaultdomain;
const autoOpenStartPage = options.autoOpenStartPage || true;
await chrome.storage.local.set({ url, autoOpenStartPage });
});
8 changes: 8 additions & 0 deletions wikiweaver-ext/options/options.html
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,14 @@
<input id="url" placeholder="https://wikiweaver.stuffontheinter.net" />
</td>
</tr>
<tr>
<td>
<input type="checkbox" id="auto-open-start-page" checked>
</td>
<td>
<label for="auto-open-start">Automatically open first page on game start</label>
</td>
</tr>
</table>
<button class="box button" id="submit" type="submit">Save</button>
</form>
Expand Down
20 changes: 15 additions & 5 deletions wikiweaver-ext/options/options.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,25 @@ async function init(e) {

async function restore() {
const options = await chrome.storage.local.get()
document.querySelector("#url").value = options.url || "";
document.querySelector("#url").value = options.url;
}

async function save(e) {
e.preventDefault();
await chrome.storage.local.set({
url: document.querySelector("#url").value.toLowerCase(),
});
// todo: show saved succeeded in some way

const urlElem = document.querySelector("#url");
const autoOpenElem = document.querySelector("#auto-open-start-page");

const url = new URL(urlElem.value.toLowerCase() || urlElem.placeholder);

await chrome.storage.local.set(
{
url: url.origin,
autoOpenStartPage: autoOpenElem.checked,
}
);

// TODO: show saved succeeded in some way
}

document.addEventListener("DOMContentLoaded", () => init(), false);
Expand Down
4 changes: 4 additions & 0 deletions wikiweaver-ext/popup/popup.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,10 @@
open lobby
<span class="material-symbols-outlined">open_in_new</span>
</button>
<button id="open-start-page" class="button box text">
open first page
<span class="material-symbols-outlined">open_in_new</span>
</button>
<button id="open-settings" class="button box text">
open settings
<span class="material-symbols-outlined">open_in_new</span>
Expand Down
25 changes: 24 additions & 1 deletion wikiweaver-ext/popup/popup.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
async function init() {
const options = await chrome.storage.local.get();
const session = await chrome.storage.session.get();

if (options.code != undefined) {
document.getElementById("code").value = options.code;
Expand All @@ -9,7 +10,9 @@ async function init() {
document.getElementById("username").value = options.username;
}

if ((await chrome.storage.session.get()).connected) {
document.getElementById("open-start-page").disabled = !session.startPage;

if (session.connected) {
// If we think we are connected, attempt to join again just to make sure
await HandleJoinClicked();
} else {
Expand Down Expand Up @@ -93,6 +96,22 @@ async function HandleOpenLobbyClicked(e) {
})
}

function Urlify(InString) {
// Turns an id back into a URL
return "https://en.wikipedia.org/wiki/" + InString
}

async function HandleStartPageClicked(e) {
const session = await chrome.storage.session.get();

if (session.startPage) {
chrome.tabs.create({
active: true,
url: Urlify(session.startPage),
})
}
}

document.addEventListener("click", async (e) => {
switch (e.target.id) {
case "join":
Expand All @@ -107,6 +126,10 @@ document.addEventListener("click", async (e) => {
await HandleOpenLobbyClicked(e);
break;

case "open-start-page":
await HandleStartPageClicked(e);
break;

case "open-settings":
await chrome.runtime.openOptionsPage();
break;
Expand Down
Loading
Loading