Allow using external index.json and stickerpack

This commit is contained in:
S1m 2021-09-19 17:35:28 +02:00
parent ec8eeeeaf5
commit 5d3c7d1e2f

View File

@ -21,6 +21,14 @@ import * as frequent from "./frequently-used.js"
// The base URL for fetching packs. The app will first fetch ${PACK_BASE_URL}/index.json, // The base URL for fetching packs. The app will first fetch ${PACK_BASE_URL}/index.json,
// then ${PACK_BASE_URL}/${packFile} for each packFile in the packs object of the index.json file. // then ${PACK_BASE_URL}/${packFile} for each packFile in the packs object of the index.json file.
const PACKS_BASE_URL = "packs" const PACKS_BASE_URL = "packs"
let INDEX = `${PACKS_BASE_URL}/index.json`;
let params = new URLSearchParams(document.location.search);
let REMOTE = false;
if (params.has('config')) {
INDEX = params.get("config");
REMOTE = true;
}
// This is updated from packs/index.json // This is updated from packs/index.json
let HOMESERVER_URL = "https://matrix-client.matrix.org" let HOMESERVER_URL = "https://matrix-client.matrix.org"
@ -117,7 +125,7 @@ class App extends Component {
_loadPacks(disableCache = false) { _loadPacks(disableCache = false) {
const cache = disableCache ? "no-cache" : undefined const cache = disableCache ? "no-cache" : undefined
fetch(`${PACKS_BASE_URL}/index.json`, { cache }).then(async indexRes => { fetch(INDEX, { cache }).then(async indexRes => {
if (indexRes.status >= 400) { if (indexRes.status >= 400) {
this.setState({ this.setState({
loading: false, loading: false,
@ -129,7 +137,12 @@ class App extends Component {
HOMESERVER_URL = indexData.homeserver_url || HOMESERVER_URL HOMESERVER_URL = indexData.homeserver_url || HOMESERVER_URL
// TODO only load pack metadata when scrolled into view? // TODO only load pack metadata when scrolled into view?
for (const packFile of indexData.packs) { for (const packFile of indexData.packs) {
const packRes = await fetch(`${PACKS_BASE_URL}/${packFile}`, { cache }) let packRes;
if (REMOTE) {
packRes = await fetch(packFile, { cache })
} else {
packRes = await fetch(`${PACKS_BASE_URL}/${packFile}`, { cache })
}
const packData = await packRes.json() const packData = await packRes.json()
for (const sticker of packData.stickers) { for (const sticker of packData.stickers) {
this.stickersByID.set(sticker.id, sticker) this.stickersByID.set(sticker.id, sticker)