parent
							
								
									dd4f7be3da
								
							
						
					
					
						commit
						ad970dffda
					
				
					 4 changed files with 18 additions and 15 deletions
				
			
		|  | @ -1,5 +1,6 @@ | |||
| <template> | ||||
| <component :is="self ? 'MkA' : 'a'" ref="el" class="ieqqeuvs _link" :[attr]="self ? url.substr(local.length) : url" :rel="rel" :target="target" | ||||
| <component | ||||
| 	:is="self ? 'MkA' : 'a'" ref="el" class="ieqqeuvs _link" :[attr]="self ? url.substr(local.length) : url" :rel="rel" :target="target" | ||||
| 	@contextmenu.stop="() => {}" | ||||
| > | ||||
| 	<template v-if="!self"> | ||||
|  | @ -23,14 +24,7 @@ import { toUnicode as decodePunycode } from 'punycode/'; | |||
| import { url as local } from '@/config'; | ||||
| import * as os from '@/os'; | ||||
| import { useTooltip } from '@/scripts/use-tooltip'; | ||||
| 
 | ||||
| function safeURIDecode(str: string) { | ||||
| 	try { | ||||
| 		return decodeURIComponent(str); | ||||
| 	} catch { | ||||
| 		return str; | ||||
| 	} | ||||
| } | ||||
| import { safeURIDecode } from '@/scripts/safe-uri-decode'; | ||||
| 
 | ||||
| export default defineComponent({ | ||||
| 	props: { | ||||
|  | @ -42,7 +36,7 @@ export default defineComponent({ | |||
| 			type: String, | ||||
| 			required: false, | ||||
| 			default: null, | ||||
| 		} | ||||
| 		}, | ||||
| 	}, | ||||
| 	setup(props) { | ||||
| 		const self = props.url.startsWith(local); | ||||
|  |  | |||
|  | @ -3,6 +3,7 @@ | |||
| import { EventEmitter } from 'eventemitter3'; | ||||
| import { Ref, Component, ref, shallowRef, ShallowRef } from 'vue'; | ||||
| import { pleaseLogin } from '@/scripts/please-login'; | ||||
| import { safeURIDecode } from '@/scripts/safe-uri-decode'; | ||||
| 
 | ||||
| type RouteDef = { | ||||
| 	path: string; | ||||
|  | @ -116,7 +117,7 @@ export class Router extends EventEmitter<{ | |||
| 					} | ||||
| 					if (p.wildcard) { | ||||
| 						if (parts.length !== 0) { | ||||
| 							props.set(p.name, parts.join('/')); | ||||
| 							props.set(p.name, safeURIDecode(parts.join('/'))); | ||||
| 							parts = []; | ||||
| 						} | ||||
| 						break pathMatchLoop; | ||||
|  | @ -124,10 +125,10 @@ export class Router extends EventEmitter<{ | |||
| 						if (p.startsWith) { | ||||
| 							if (parts[0] == null || !parts[0].startsWith(p.startsWith)) continue forEachRouteLoop; | ||||
| 
 | ||||
| 							props.set(p.name, parts[0].substring(p.startsWith.length)); | ||||
| 							props.set(p.name, safeURIDecode(parts[0].substring(p.startsWith.length))); | ||||
| 							parts.shift(); | ||||
| 						} else { | ||||
| 							props.set(p.name, parts[0]); | ||||
| 							props.set(p.name, safeURIDecode(parts[0])); | ||||
| 							parts.shift(); | ||||
| 						} | ||||
| 					} | ||||
|  | @ -137,7 +138,7 @@ export class Router extends EventEmitter<{ | |||
| 			if (parts.length !== 0) continue forEachRouteLoop; | ||||
| 
 | ||||
| 			if (route.hash != null && hash != null) { | ||||
| 				props.set(route.hash, hash); | ||||
| 				props.set(route.hash, safeURIDecode(hash)); | ||||
| 			} | ||||
| 
 | ||||
| 			if (route.query != null && queryString != null) { | ||||
|  | @ -147,7 +148,7 @@ export class Router extends EventEmitter<{ | |||
| 				for (const q in route.query) { | ||||
| 					const as = route.query[q]; | ||||
| 					if (queryObject[q]) { | ||||
| 						props.set(as, queryObject[q]); | ||||
| 						props.set(as, safeURIDecode(queryObject[q])); | ||||
| 					} | ||||
| 				} | ||||
| 			} | ||||
|  |  | |||
							
								
								
									
										7
									
								
								packages/client/src/scripts/safe-uri-decode.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								packages/client/src/scripts/safe-uri-decode.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,7 @@ | |||
| export function safeURIDecode(str: string): string { | ||||
| 	try { | ||||
| 		return decodeURIComponent(str); | ||||
| 	} catch { | ||||
| 		return str; | ||||
| 	} | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue