From 5c229b9ef85374b6d3e9f369fe50f1bb16acd548 Mon Sep 17 00:00:00 2001
From: Michael Telatynski <7t3chguy@gmail.com>
Date: Tue, 12 Dec 2017 23:33:40 +0000
Subject: [PATCH] DRY matrix.to link generation so it is all changeable in one
class
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---
src/autocomplete/RoomProvider.js | 3 ++-
src/autocomplete/UserProvider.js | 3 ++-
src/components/structures/GroupView.js | 5 +++--
src/components/views/rooms/EventTile.js | 5 ++---
src/components/views/rooms/MessageComposerInput.js | 4 ++--
5 files changed, 11 insertions(+), 9 deletions(-)
diff --git a/src/autocomplete/RoomProvider.js b/src/autocomplete/RoomProvider.js
index 1e1928a1ee..31599703c2 100644
--- a/src/autocomplete/RoomProvider.js
+++ b/src/autocomplete/RoomProvider.js
@@ -25,6 +25,7 @@ import {PillCompletion} from './Components';
import {getDisplayAliasForRoom} from '../Rooms';
import sdk from '../index';
import _sortBy from 'lodash/sortBy';
+import {makeRoomPermalink} from "../matrix-to";
const ROOM_REGEX = /(?=#)(\S*)/g;
@@ -78,7 +79,7 @@ export default class RoomProvider extends AutocompleteProvider {
return {
completion: displayAlias,
suffix: ' ',
- href: 'https://matrix.to/#/' + displayAlias,
+ href: makeRoomPermalink(displayAlias),
component: (
} title={room.name} description={displayAlias} />
),
diff --git a/src/autocomplete/UserProvider.js b/src/autocomplete/UserProvider.js
index 9d587c2eb4..5814f40437 100644
--- a/src/autocomplete/UserProvider.js
+++ b/src/autocomplete/UserProvider.js
@@ -28,6 +28,7 @@ import _sortBy from 'lodash/sortBy';
import MatrixClientPeg from '../MatrixClientPeg';
import type {Room, RoomMember} from 'matrix-js-sdk';
+import {makeUserPermalink} from "../matrix-to";
const USER_REGEX = /@\S*/g;
@@ -104,7 +105,7 @@ export default class UserProvider extends AutocompleteProvider {
// relies on the length of the entity === length of the text in the decoration.
completion: user.rawDisplayName.replace(' (IRC)', ''),
suffix: range.start === 0 ? ': ' : ' ',
- href: 'https://matrix.to/#/' + user.userId,
+ href: makeUserPermalink(user.userId),
component: (
}
diff --git a/src/components/structures/GroupView.js b/src/components/structures/GroupView.js
index 5ffb97c6ed..64f9955aa9 100644
--- a/src/components/structures/GroupView.js
+++ b/src/components/structures/GroupView.js
@@ -31,6 +31,7 @@ import GroupStoreCache from '../../stores/GroupStoreCache';
import GroupStore from '../../stores/GroupStore';
import { showGroupAddRoomDialog } from '../../GroupAddressPicker';
import GeminiScrollbar from 'react-gemini-scrollbar';
+import {makeGroupPermalink, makeUserPermalink} from "../../matrix-to";
const LONG_DESC_PLACEHOLDER = _td(
`
HTML for your community's page
@@ -209,7 +210,7 @@ const FeaturedRoom = React.createClass({
let permalink = null;
if (this.props.summaryInfo.profile && this.props.summaryInfo.profile.canonical_alias) {
- permalink = 'https://matrix.to/#/' + this.props.summaryInfo.profile.canonical_alias;
+ permalink = makeGroupPermalink(this.props.summaryInfo.profile.canonical_alias);
}
let roomNameNode = null;
@@ -366,7 +367,7 @@ const FeaturedUser = React.createClass({
const BaseAvatar = sdk.getComponent("avatars.BaseAvatar");
const name = this.props.summaryInfo.displayname || this.props.summaryInfo.user_id;
- const permalink = 'https://matrix.to/#/' + this.props.summaryInfo.user_id;
+ const permalink = makeUserPermalink(this.props.summaryInfo.user_id);
const userNameNode = { name };
const httpUrl = MatrixClientPeg.get()
.mxcUrlToHttp(this.props.summaryInfo.avatar_url, 64, 64);
diff --git a/src/components/views/rooms/EventTile.js b/src/components/views/rooms/EventTile.js
index 645a3fdb71..3937c490f9 100644
--- a/src/components/views/rooms/EventTile.js
+++ b/src/components/views/rooms/EventTile.js
@@ -29,6 +29,7 @@ import withMatrixClient from '../../../wrappers/withMatrixClient';
const ContextualMenu = require('../../structures/ContextualMenu');
import dis from '../../../dispatcher';
+import {makeEventPermalink} from "../../../matrix-to";
const ObjectUtils = require('../../../ObjectUtils');
@@ -472,9 +473,7 @@ module.exports = withMatrixClient(React.createClass({
mx_EventTile_redacted: isRedacted,
});
- const permalink = "https://matrix.to/#/" +
- this.props.mxEvent.getRoomId() + "/" +
- this.props.mxEvent.getId();
+ const permalink = makeEventPermalink(this.props.mxEvent.getRoomId(), this.props.mxEvent.getId());
const readAvatars = this.getReadAvatars();
diff --git a/src/components/views/rooms/MessageComposerInput.js b/src/components/views/rooms/MessageComposerInput.js
index 3305ba7994..4810f0267b 100644
--- a/src/components/views/rooms/MessageComposerInput.js
+++ b/src/components/views/rooms/MessageComposerInput.js
@@ -50,7 +50,7 @@ const REGEX_MATRIXTO_MARKDOWN_GLOBAL = new RegExp(MATRIXTO_MD_LINK_PATTERN, 'g')
import {asciiRegexp, shortnameToUnicode, emojioneList, asciiList, mapUnicodeToShort} from 'emojione';
import SettingsStore, {SettingLevel} from "../../../settings/SettingsStore";
-import {makeEventPermalink} from "../../../matrix-to";
+import {makeEventPermalink, makeUserPermalink} from "../../../matrix-to";
import QuotePreview from "./QuotePreview";
import RoomViewStore from '../../../stores/RoomViewStore';
@@ -292,7 +292,7 @@ export default class MessageComposerInput extends React.Component {
this.setDisplayedCompletion({
completion,
selection,
- href: `https://matrix.to/#/${payload.user_id}`,
+ href: makeUserPermalink(payload.user_id),
suffix: selection.getStartOffset() === 0 ? ': ' : ' ',
});
}