Move permalink host check into permalink constructors

Without the requirement for a room to work
pull/21833/head
Travis Ralston 2019-09-30 12:53:45 -06:00
parent 926e1146f9
commit f879185aef
4 changed files with 15 additions and 13 deletions

View File

@ -32,7 +32,7 @@ import SettingsStore from "../../../settings/SettingsStore";
import ReplyThread from "../elements/ReplyThread";
import {pillifyLinks} from '../../../utils/pillify';
import {IntegrationManagers} from "../../../integrations/IntegrationManagers";
import {RoomPermalinkCreator} from "../../../utils/permalinks/RoomPermalinkCreator";
import {isPermalinkHost} from "../../../utils/permalinks/RoomPermalinkCreator";
module.exports = createReactClass({
displayName: 'TextualBody',
@ -251,10 +251,7 @@ module.exports = createReactClass({
// never preview matrix.to links (if anything we should give a smart
// preview of the room/user they point to: nobody needs to be reminded
// what the matrix.to site looks like).
if (this.props.mxEvent && this.props.mxEvent.getRoom()) {
const permalinks = new RoomPermalinkCreator(this.props.mxEvent.getRoom());
if (permalinks.isPermalinkHost(host)) return false;
}
if (isPermalinkHost(host)) return false;
if (node.textContent.toLowerCase().trim().startsWith(host.toLowerCase())) {
// it's a "foo.pl" style link

View File

@ -34,4 +34,8 @@ export default class PermalinkConstructor {
forUser(userId: string): string {
throw new Error("Not implemented");
}
isPermalinkHost(host: string): boolean {
throw new Error("Not implemented");
}
}

View File

@ -17,10 +17,7 @@ limitations under the License.
import MatrixClientPeg from "../../MatrixClientPeg";
import isIp from "is-ip";
import utils from 'matrix-js-sdk/lib/utils';
import SpecPermalinkConstructor, {
baseUrl as matrixtoBaseUrl,
host as matrixtoHost
} from "./SpecPermalinkConstructor";
import SpecPermalinkConstructor from "./SpecPermalinkConstructor";
import PermalinkConstructor from "./PermalinkConstructor";
const SdkConfig = require("../../SdkConfig");
@ -127,10 +124,6 @@ export class RoomPermalinkCreator {
return this._started;
}
isPermalinkHost(host: string): boolean {
return host === matrixtoHost;
}
forEvent(eventId) {
return getPermalinkConstructor().forEvent(this._roomId, eventId, this._serverCandidates);
}
@ -285,6 +278,10 @@ export function makeGroupPermalink(groupId) {
return getPermalinkConstructor().forGroup(groupId);
}
export function isPermalinkHost(host: string): boolean {
return getPermalinkConstructor().isPermalinkHost(host);
}
function getPermalinkConstructor(): PermalinkConstructor {
if (SdkConfig.get()['useRiotToCreatePermalinks']) {
// TODO: Return a RiotPermalinkConstructor

View File

@ -43,6 +43,10 @@ export default class SpecPermalinkConstructor extends PermalinkConstructor {
return `${baseUrl}/#/${groupId}`;
}
isPermalinkHost(testHost: string): boolean {
return testHost === host;
}
encodeServerCandidates(candidates: string[]) {
if (!candidates || candidates.length === 0) return '';
return `?via=${candidates.map(c => encodeURIComponent(c)).join("&via=")}`;