@@ -17,18 +17,24 @@ limitations under the License.
1717import { ModuleApi } from "@matrix-org/react-sdk-module-api/lib/ModuleApi" ;
1818import { TranslationStringsObject } from "@matrix-org/react-sdk-module-api/lib/types/translations" ;
1919import { Optional } from "matrix-events-sdk" ;
20- import { _t } from "../languageHandler" ;
2120import { DialogProps } from "@matrix-org/react-sdk-module-api/lib/components/DialogContent" ;
22- import Modal from "../Modal" ;
23- import { ModuleUiDialog } from "../components/views/dialogs/ModuleUiDialog" ;
2421import React from "react" ;
25- import { AccountInformation } from "@matrix-org/react-sdk-module-api/lib/types/credentials" ;
22+ import { AccountAuthInfo } from "@matrix-org/react-sdk-module-api/lib/types/AccountAuthInfo" ;
23+ import { PlainSubstitution } from "@matrix-org/react-sdk-module-api/src/types/translations" ;
2624import * as Matrix from "matrix-js-sdk/src/matrix" ;
25+
26+ import Modal from "../Modal" ;
27+ import { _t } from "../languageHandler" ;
28+ import { ModuleUiDialog } from "../components/views/dialogs/ModuleUiDialog" ;
2729import SdkConfig from "../SdkConfig" ;
2830import PlatformPeg from "../PlatformPeg" ;
2931import { doSetLoggedIn } from "../Lifecycle" ;
3032import dispatcher from "../dispatcher/dispatcher" ;
31- import { PlainSubstitution } from "@matrix-org/react-sdk-module-api/src/types/translations" ;
33+ import { navigateToPermalink } from "../utils/permalinks/navigator" ;
34+ import { parsePermalink } from "../utils/permalinks/Permalinks" ;
35+ import { MatrixClientPeg } from "../MatrixClientPeg" ;
36+ import { getCachedRoomIDForAlias } from "../RoomAliasCache" ;
37+ import { Action } from "../dispatcher/actions" ;
3238
3339export class ProxiedModuleApi implements ModuleApi {
3440 private cachedTranslations : Optional < TranslationStringsObject > ;
@@ -59,7 +65,7 @@ export class ProxiedModuleApi implements ModuleApi {
5965 } ) ;
6066 }
6167
62- public async registerAccount ( username : string , password : string , displayName ?: string ) : Promise < AccountInformation > {
68+ public async registerSimpleAccount ( username : string , password : string , displayName ?: string ) : Promise < AccountAuthInfo > {
6369 const hsUrl = SdkConfig . get ( "validated_server_config" ) . hsUrl ;
6470 const client = Matrix . createClient ( { baseUrl : hsUrl } ) ;
6571 const req = {
@@ -95,23 +101,41 @@ export class ProxiedModuleApi implements ModuleApi {
95101 } ;
96102 }
97103
98- public async useAccount ( accountInfo : AccountInformation ) : Promise < void > {
104+ public async overwriteAccountAuth ( accountInfo : AccountAuthInfo ) : Promise < void > {
99105 await doSetLoggedIn ( {
100106 ...accountInfo ,
101107 guest : false ,
102108 } , true ) ;
103109 }
104110
105- public async switchToRoom ( roomId : string , andJoin ?: boolean ) : Promise < void > {
106- dispatcher . dispatch ( {
107- action : "view_room" ,
108- room_id : roomId ,
109- } ) ;
110-
111- if ( andJoin ) {
111+ public async navigatePermalink ( uri : string , andJoin ?: boolean ) : Promise < void > {
112+ navigateToPermalink ( uri ) ;
113+
114+ const parts = parsePermalink ( uri ) ;
115+ if ( parts . roomIdOrAlias )
116+ if ( parts . roomIdOrAlias && andJoin ) {
117+ let roomId = parts . roomIdOrAlias ;
118+ let servers = parts . viaServers ;
119+ if ( roomId . startsWith ( "#" ) ) {
120+ roomId = getCachedRoomIDForAlias ( parts . roomIdOrAlias ) ;
121+ if ( ! roomId ) {
122+ // alias resolution failed
123+ const result = await MatrixClientPeg . get ( ) . getRoomIdForAlias ( parts . roomIdOrAlias ) ;
124+ roomId = result . room_id ;
125+ if ( ! servers ) servers = result . servers ; // use provided servers first, if available
126+ }
127+ }
112128 dispatcher . dispatch ( {
113- action : "join_room" ,
129+ action : Action . ViewRoom ,
130+ room_id : roomId ,
131+ via_servers : servers ,
114132 } ) ;
133+
134+ if ( andJoin ) {
135+ dispatcher . dispatch ( {
136+ action : Action . JoinRoom ,
137+ } ) ;
138+ }
115139 }
116140 }
117141
0 commit comments