Merge branch 'main' into madlittlemods/prevent-join-reason-spam
This commit is contained in:
commit
19031d96e8
|
@ -6,6 +6,7 @@
|
||||||
- Remove `libera.chat` as a default since their rooms are not accessible in the archive, https://github.com/matrix-org/matrix-public-archive/pull/263
|
- Remove `libera.chat` as a default since their rooms are not accessible in the archive, https://github.com/matrix-org/matrix-public-archive/pull/263
|
||||||
- Add reason why the archive bot is joining the room, https://github.com/matrix-org/matrix-public-archive/pull/262
|
- Add reason why the archive bot is joining the room, https://github.com/matrix-org/matrix-public-archive/pull/262
|
||||||
- Add `/faq` redirect, https://github.com/matrix-org/matrix-public-archive/pull/265
|
- Add `/faq` redirect, https://github.com/matrix-org/matrix-public-archive/pull/265
|
||||||
|
- Use `rel=canonical` link to de-duplicate event permalinks, https://github.com/matrix-org/matrix-public-archive/pull/266
|
||||||
|
|
||||||
# 0.1.0 - 2023-05-11
|
# 0.1.0 - 2023-05-11
|
||||||
|
|
||||||
|
|
|
@ -69,14 +69,14 @@ async function _renderHydrogenToStringUnsafe(renderOptions) {
|
||||||
assert(renderOptions.vmRenderScriptFilePath);
|
assert(renderOptions.vmRenderScriptFilePath);
|
||||||
assert(renderOptions.vmRenderContext);
|
assert(renderOptions.vmRenderContext);
|
||||||
assert(renderOptions.pageOptions);
|
assert(renderOptions.pageOptions);
|
||||||
assert(renderOptions.pageOptions.locationHref);
|
assert(renderOptions.pageOptions.locationUrl);
|
||||||
assert(renderOptions.pageOptions.cspNonce);
|
assert(renderOptions.pageOptions.cspNonce);
|
||||||
|
|
||||||
const { dom, vmContext } = createDomAndSetupVmContext();
|
const { dom, vmContext } = createDomAndSetupVmContext();
|
||||||
|
|
||||||
// A small `window.location` stub
|
// A small `window.location` stub
|
||||||
if (!dom.window.location) {
|
if (!dom.window.location) {
|
||||||
const locationUrl = new URL(renderOptions.pageOptions.locationHref);
|
const locationUrl = new URL(renderOptions.pageOptions.locationUrl);
|
||||||
dom.window.location = {};
|
dom.window.location = {};
|
||||||
[
|
[
|
||||||
'hash',
|
'hash',
|
||||||
|
|
|
@ -71,6 +71,11 @@ function renderPageHtml({
|
||||||
metaImageUrl = pageOptions.imageUrl;
|
metaImageUrl = pageOptions.imageUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let maybeRelCanonical = '';
|
||||||
|
if (pageOptions.canonicalUrl) {
|
||||||
|
maybeRelCanonical = sanitizeHtml(`<link rel="canonical" href="${pageOptions.canonicalUrl}">`);
|
||||||
|
}
|
||||||
|
|
||||||
const pageHtml = `
|
const pageHtml = `
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
@ -83,6 +88,7 @@ function renderPageHtml({
|
||||||
${sanitizeHtml(`<meta property="og:image" content="${metaImageUrl}">`)}
|
${sanitizeHtml(`<meta property="og:image" content="${metaImageUrl}">`)}
|
||||||
<link rel="icon" href="${pageAssetUrls.faviconIco}" sizes="any">
|
<link rel="icon" href="${pageAssetUrls.faviconIco}" sizes="any">
|
||||||
<link rel="icon" href="${pageAssetUrls.faviconSvg}" type="image/svg+xml">
|
<link rel="icon" href="${pageAssetUrls.faviconSvg}" type="image/svg+xml">
|
||||||
|
${maybeRelCanonical}
|
||||||
${styles
|
${styles
|
||||||
.map(
|
.map(
|
||||||
(styleUrl) =>
|
(styleUrl) =>
|
||||||
|
|
|
@ -86,7 +86,7 @@ async function timeoutMiddleware(req, res, next) {
|
||||||
title: `Server timeout - Matrix Public Archive`,
|
title: `Server timeout - Matrix Public Archive`,
|
||||||
description: `Unable to respond in time (${requestTimeoutMs / 1000}s)`,
|
description: `Unable to respond in time (${requestTimeoutMs / 1000}s)`,
|
||||||
entryPoint: 'client/js/entry-client-timeout.js',
|
entryPoint: 'client/js/entry-client-timeout.js',
|
||||||
locationHref: urlJoin(basePath, req.originalUrl),
|
locationUrl: urlJoin(basePath, req.originalUrl),
|
||||||
// We don't have a Matrix room so we don't know whether or not to index. Just choose
|
// We don't have a Matrix room so we don't know whether or not to index. Just choose
|
||||||
// a safe-default of false.
|
// a safe-default of false.
|
||||||
shouldIndex: false,
|
shouldIndex: false,
|
||||||
|
|
|
@ -17,7 +17,7 @@ function clientSideRoomAliasHashRedirectRoute(req, res) {
|
||||||
title: `Page not found - Matrix Public Archive`,
|
title: `Page not found - Matrix Public Archive`,
|
||||||
description: `This page does not exist but we may be able to redirect you to the right place.`,
|
description: `This page does not exist but we may be able to redirect you to the right place.`,
|
||||||
entryPoint: 'client/js/entry-client-room-alias-hash-redirect.js',
|
entryPoint: 'client/js/entry-client-room-alias-hash-redirect.js',
|
||||||
locationHref: urlJoin(basePath, req.originalUrl),
|
locationUrl: urlJoin(basePath, req.originalUrl),
|
||||||
// We don't have a Matrix room so we don't know whether or not to index. Just choose
|
// We don't have a Matrix room so we don't know whether or not to index. Just choose
|
||||||
// a safe-default of false.
|
// a safe-default of false.
|
||||||
shouldIndex: false,
|
shouldIndex: false,
|
||||||
|
|
|
@ -78,7 +78,7 @@ router.get(
|
||||||
description:
|
description:
|
||||||
'Browse thousands of rooms using Matrix. The new portal into the Matrix ecosystem.',
|
'Browse thousands of rooms using Matrix. The new portal into the Matrix ecosystem.',
|
||||||
entryPoint: 'client/js/entry-client-room-directory.js',
|
entryPoint: 'client/js/entry-client-room-directory.js',
|
||||||
locationHref: urlJoin(basePath, req.originalUrl),
|
locationUrl: urlJoin(basePath, req.originalUrl),
|
||||||
shouldIndex,
|
shouldIndex,
|
||||||
cspNonce: res.locals.cspNonce,
|
cspNonce: res.locals.cspNonce,
|
||||||
};
|
};
|
||||||
|
|
|
@ -916,7 +916,19 @@ router.get(
|
||||||
}),
|
}),
|
||||||
blockedBySafeSearch: isNsfw,
|
blockedBySafeSearch: isNsfw,
|
||||||
entryPoint: 'client/js/entry-client-hydrogen.js',
|
entryPoint: 'client/js/entry-client-hydrogen.js',
|
||||||
locationHref: urlJoin(basePath, req.originalUrl),
|
locationUrl: urlJoin(basePath, req.originalUrl),
|
||||||
|
canonicalUrl: matrixPublicArchiveURLCreator.archiveUrlForDate(
|
||||||
|
roomIdOrAlias,
|
||||||
|
new Date(toTimestamp),
|
||||||
|
{
|
||||||
|
preferredPrecision: precisionFromUrl,
|
||||||
|
// We purposely omit `scrollStartEventId` here because the canonical location
|
||||||
|
// for any given event ID is the page it resides on.
|
||||||
|
//
|
||||||
|
// We can avoid passing along the `viaServers` because we already joined the
|
||||||
|
// room above (see `ensureRoomJoined`).
|
||||||
|
}
|
||||||
|
),
|
||||||
shouldIndex,
|
shouldIndex,
|
||||||
cspNonce: res.locals.cspNonce,
|
cspNonce: res.locals.cspNonce,
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue