WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Commit fda600a

Browse files
committed
feat: add a way to wait for query update
fixes: #48
1 parent 10f1b67 commit fda600a

File tree

3 files changed

+17
-1
lines changed

3 files changed

+17
-1
lines changed

packages/core/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
export * from './transformers';
22
export { useRouteQuery } from './useRouteQuery';
3+
export { waitForQueryUpdate } from './queue-query-update';

packages/core/src/queue-query-update.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,12 @@ export function queueQueryUpdate(
2828
void queryReplaceQueue.run(currentQuery);
2929
}
3030

31+
export async function waitForQueryUpdate() {
32+
if (queryReplaceQueue) {
33+
await queryReplaceQueue.waitForFinish();
34+
}
35+
}
36+
3137
async function updateQuery(router: Router, previousQuery: RouteQuery, query: RouteQuery) {
3238
try {
3339
await router.replace({

packages/tests-base/index.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { setImmediate } from 'timers';
22
import { expect, TestAPI } from 'vitest';
3-
import { RouteQueryTransformer, useRouteQuery } from 'vue-use-route-query/src';
3+
import { RouteQueryTransformer, useRouteQuery, waitForQueryUpdate } from 'vue-use-route-query/src';
44
import { RouteQuery } from 'vue-use-route-query/src/types';
55

66
interface MountResult<R> {
@@ -186,6 +186,15 @@ export function testUseRouteQuery(
186186

187187
expect(getCurrentQuery().array).toBe('foo,bar');
188188
});
189+
190+
it('should allow to wait for query update', async () => {
191+
const { result } = mountComposition(() => useRouteQuery('foo', null));
192+
193+
result.value = 'bar';
194+
await waitForQueryUpdate();
195+
196+
expect(getCurrentQuery().foo).toBe('bar');
197+
});
189198
}
190199

191200
function flushPromises(): Promise<void> {

0 commit comments

Comments
 (0)