Pass around MatrixClients instead of using MatrixClientPeg (#10984)
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
This commit is contained in:
parent
b6b9ce3c46
commit
21ffc50f1e
23 changed files with 152 additions and 135 deletions
12
src/Terms.ts
12
src/Terms.ts
|
@ -17,8 +17,8 @@ limitations under the License.
|
|||
import classNames from "classnames";
|
||||
import { SERVICE_TYPES } from "matrix-js-sdk/src/service-types";
|
||||
import { logger } from "matrix-js-sdk/src/logger";
|
||||
import { MatrixClient } from "matrix-js-sdk/src/matrix";
|
||||
|
||||
import { MatrixClientPeg } from "./MatrixClientPeg";
|
||||
import Modal from "./Modal";
|
||||
import TermsDialog from "./components/views/dialogs/TermsDialog";
|
||||
|
||||
|
@ -66,6 +66,7 @@ export type TermsInteractionCallback = (
|
|||
/**
|
||||
* Start a flow where the user is presented with terms & conditions for some services
|
||||
*
|
||||
* @param client The Matrix Client instance of the logged-in user
|
||||
* @param {Service[]} services Object with keys 'serviceType', 'baseUrl', 'accessToken'
|
||||
* @param {function} interactionCallback Function called with:
|
||||
* * an array of { service: {Service}, policies: {terms response from API} }
|
||||
|
@ -75,10 +76,11 @@ export type TermsInteractionCallback = (
|
|||
* if they cancel.
|
||||
*/
|
||||
export async function startTermsFlow(
|
||||
client: MatrixClient,
|
||||
services: Service[],
|
||||
interactionCallback: TermsInteractionCallback = dialogTermsInteractionCallback,
|
||||
): Promise<void> {
|
||||
const termsPromises = services.map((s) => MatrixClientPeg.get().getTerms(s.serviceType, s.baseUrl));
|
||||
const termsPromises = services.map((s) => client.getTerms(s.serviceType, s.baseUrl));
|
||||
|
||||
/*
|
||||
* a /terms response looks like:
|
||||
|
@ -105,7 +107,7 @@ export async function startTermsFlow(
|
|||
});
|
||||
|
||||
// fetch the set of agreed policy URLs from account data
|
||||
const currentAcceptedTerms = await MatrixClientPeg.get().getAccountData("m.accepted_terms");
|
||||
const currentAcceptedTerms = await client.getAccountData("m.accepted_terms");
|
||||
let agreedUrlSet: Set<string>;
|
||||
if (!currentAcceptedTerms || !currentAcceptedTerms.getContent() || !currentAcceptedTerms.getContent().accepted) {
|
||||
agreedUrlSet = new Set();
|
||||
|
@ -152,7 +154,7 @@ export async function startTermsFlow(
|
|||
// We only ever add to the set of URLs, so if anything has changed then we'd see a different length
|
||||
if (agreedUrlSet.size !== numAcceptedBeforeAgreement) {
|
||||
const newAcceptedTerms = { accepted: Array.from(agreedUrlSet) };
|
||||
await MatrixClientPeg.get().setAccountData("m.accepted_terms", newAcceptedTerms);
|
||||
await client.setAccountData("m.accepted_terms", newAcceptedTerms);
|
||||
}
|
||||
|
||||
const agreePromises = policiesAndServicePairs.map((policiesAndService) => {
|
||||
|
@ -171,7 +173,7 @@ export async function startTermsFlow(
|
|||
|
||||
if (urlsForService.length === 0) return Promise.resolve();
|
||||
|
||||
return MatrixClientPeg.get().agreeToTerms(
|
||||
return client.agreeToTerms(
|
||||
policiesAndService.service.serviceType,
|
||||
policiesAndService.service.baseUrl,
|
||||
policiesAndService.service.accessToken,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue