| 
									
										
										
										
											2021-09-09 08:51:29 -08:00
										 |  |  | export function useRouterQuery(query: string) { | 
					
						
							|  |  |  |   const router = useRoute(); | 
					
						
							|  |  |  |   // TODO FUTURE: Remove when migrating to Vue 3
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const param: WritableComputedRef<string> = computed({ | 
					
						
							|  |  |  |     get(): string { | 
					
						
							| 
									
										
										
										
											2021-10-07 09:39:47 -08:00
										 |  |  |       console.log("Get Query Change"); | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |       return router?.query[query] as string || ""; | 
					
						
							| 
									
										
										
										
											2021-09-09 08:51:29 -08:00
										 |  |  |     }, | 
					
						
							|  |  |  |     set(v: string): void { | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |       router.query[query] = v; | 
					
						
							| 
									
										
										
										
											2021-09-09 08:51:29 -08:00
										 |  |  |     }, | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   return param; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2021-10-07 09:39:47 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | export function useRouteQuery<T extends string | string[]>(name: string, defaultValue?: T) { | 
					
						
							|  |  |  |   const route = useRoute(); | 
					
						
							|  |  |  |   const router = useRouter(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   return computed<any>({ | 
					
						
							|  |  |  |     get() { | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |       const data = route.query[name]; | 
					
						
							| 
									
										
										
										
											2021-10-07 09:39:47 -08:00
										 |  |  |       if (data == null) return defaultValue ?? null; | 
					
						
							|  |  |  |       return data; | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     set(v) { | 
					
						
							|  |  |  |       nextTick(() => { | 
					
						
							| 
									
										
										
										
											2025-06-20 00:09:12 +07:00
										 |  |  |         router.replace({ query: { ...route.query, [name]: v } }); | 
					
						
							| 
									
										
										
										
											2021-10-07 09:39:47 -08:00
										 |  |  |       }); | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | } |