Convert more async actions to AsyncActionPayload
parent
8c72c27da9
commit
a3b4c2dfa0
|
@ -1,34 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2017 New Vector Ltd
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { asyncAction } from './actionCreators';
|
|
||||||
|
|
||||||
const GroupActions = {};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates an action thunk that will do an asynchronous request to fetch
|
|
||||||
* the groups to which a user is joined.
|
|
||||||
*
|
|
||||||
* @param {MatrixClient} matrixClient the matrix client to query.
|
|
||||||
* @returns {function} an action thunk that will dispatch actions
|
|
||||||
* indicating the status of the request.
|
|
||||||
* @see asyncAction
|
|
||||||
*/
|
|
||||||
GroupActions.fetchJoinedGroups = function(matrixClient) {
|
|
||||||
return asyncAction('GroupActions.fetchJoinedGroups', () => matrixClient.getJoinedGroups());
|
|
||||||
};
|
|
||||||
|
|
||||||
export default GroupActions;
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
/*
|
||||||
|
Copyright 2017 New Vector Ltd
|
||||||
|
Copyright 2020 The Matrix.org Foundation C.I.C.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { asyncAction } from './actionCreators';
|
||||||
|
import { AsyncActionPayload } from "../dispatcher/payloads";
|
||||||
|
import { MatrixClient } from "matrix-js-sdk/src/client";
|
||||||
|
|
||||||
|
export default class GroupActions {
|
||||||
|
/**
|
||||||
|
* Creates an action thunk that will do an asynchronous request to fetch
|
||||||
|
* the groups to which a user is joined.
|
||||||
|
*
|
||||||
|
* @param {MatrixClient} matrixClient the matrix client to query.
|
||||||
|
* @returns {AsyncActionPayload} An async action payload.
|
||||||
|
* @see asyncAction
|
||||||
|
*/
|
||||||
|
public static fetchJoinedGroups(matrixClient: MatrixClient): AsyncActionPayload {
|
||||||
|
return asyncAction('GroupActions.fetchJoinedGroups', () => matrixClient.getJoinedGroups(), null);
|
||||||
|
}
|
||||||
|
}
|
|
@ -90,8 +90,7 @@ export default class TagOrderActions {
|
||||||
if (removedTags.includes(tag)) {
|
if (removedTags.includes(tag)) {
|
||||||
// Return a thunk that doesn't do anything, we don't even need
|
// Return a thunk that doesn't do anything, we don't even need
|
||||||
// an asynchronous action here, the tag is already removed.
|
// an asynchronous action here, the tag is already removed.
|
||||||
return () => {
|
return new AsyncActionPayload(() => {});
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
removedTags.push(tag);
|
removedTags.push(tag);
|
||||||
|
|
|
@ -44,12 +44,11 @@ import { AsyncActionPayload } from "../dispatcher/payloads";
|
||||||
* result is the result of the promise returned by
|
* result is the result of the promise returned by
|
||||||
* `fn`.
|
* `fn`.
|
||||||
*/
|
*/
|
||||||
export function asyncAction(id: string, fn: () => Promise<any>, pendingFn: () => any): AsyncActionPayload {
|
export function asyncAction(id: string, fn: () => Promise<any>, pendingFn: () => any | null): AsyncActionPayload {
|
||||||
const helper = (dispatch) => {
|
const helper = (dispatch) => {
|
||||||
dispatch({
|
dispatch({
|
||||||
action: id + '.pending',
|
action: id + '.pending',
|
||||||
request:
|
request: typeof pendingFn === 'function' ? pendingFn() : undefined,
|
||||||
typeof pendingFn === 'function' ? pendingFn() : undefined,
|
|
||||||
});
|
});
|
||||||
fn().then((result) => {
|
fn().then((result) => {
|
||||||
dispatch({action: id + '.success', result});
|
dispatch({action: id + '.success', result});
|
||||||
|
|
Loading…
Reference in New Issue