Skip to content
This repository was archived by the owner on Sep 11, 2024. It is now read-only.

Commit 908e938

Browse files
authored
Keep all previously approved widget capabilities when requesting new capabilities (#7340)
1 parent 3b37762 commit 908e938

File tree

3 files changed

+19
-4
lines changed

3 files changed

+19
-4
lines changed

src/stores/widgets/StopGapWidgetDriver.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ import { IContent, IEvent, MatrixEvent } from "matrix-js-sdk/src/models/event";
3434
import { Room } from "matrix-js-sdk/src/models/room";
3535
import { logger } from "matrix-js-sdk/src/logger";
3636

37-
import { iterableDiff, iterableUnion } from "../../utils/iterables";
37+
import { iterableDiff, iterableMerge } from "../../utils/iterables";
3838
import { MatrixClientPeg } from "../../MatrixClientPeg";
3939
import ActiveRoomObserver from "../../ActiveRoomObserver";
4040
import Modal from "../../Modal";
@@ -131,7 +131,7 @@ export class StopGapWidgetDriver extends WidgetDriver {
131131
}
132132
}
133133

134-
const allAllowed = new Set(iterableUnion(allowedSoFar, requested));
134+
const allAllowed = new Set(iterableMerge(allowedSoFar, requested));
135135

136136
if (rememberApproved) {
137137
setRememberedCapabilitiesForWidget(this.forWidget, Array.from(allAllowed));

src/utils/iterables.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,11 @@
1414
* limitations under the License.
1515
*/
1616

17-
import { arrayDiff, arrayUnion } from "./arrays";
17+
import { arrayDiff, arrayMerge, arrayUnion } from "./arrays";
18+
19+
export function iterableMerge<T>(a: Iterable<T>, b: Iterable<T>): Iterable<T> {
20+
return arrayMerge(Array.from(a), Array.from(b));
21+
}
1822

1923
export function iterableUnion<T>(a: Iterable<T>, b: Iterable<T>): Iterable<T> {
2024
return arrayUnion(Array.from(a), Array.from(b));

test/utils/iterables-test.ts

+12-1
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,20 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
import { iterableDiff, iterableUnion } from "../../src/utils/iterables";
17+
import { iterableDiff, iterableMerge, iterableUnion } from "../../src/utils/iterables";
1818

1919
describe('iterables', () => {
20+
describe('iterableMerge', () => {
21+
it('should return a merged array', () => {
22+
const a = [1, 2, 3];
23+
const b = [1, 2, 4]; // note diff
24+
const result = iterableMerge(a, b);
25+
expect(result).toBeDefined();
26+
expect(result).toHaveLength(4);
27+
expect(result).toEqual([1, 2, 3, 4]);
28+
});
29+
});
30+
2031
describe('iterableUnion', () => {
2132
it('should return a union', () => {
2233
const a = [1, 2, 3];

0 commit comments

Comments
 (0)