parent
							
								
									dd6569a1bb
								
							
						
					
					
						commit
						116dd097bd
					
				|  | @ -62,6 +62,10 @@ describe('After setup instance', () => { | |||
| 		cy.get('[data-cy-signup-submit]').click(); | ||||
| 
 | ||||
| 		cy.wait('@signup'); | ||||
|   }); | ||||
| 
 | ||||
|   it('signup with duplicated username', () => { | ||||
| 		cy.registerUser('alice', 'alice1234'); | ||||
| 
 | ||||
| 		cy.visitHome(); | ||||
| 
 | ||||
|  |  | |||
|  | @ -110,6 +110,8 @@ let ToSAgreement: boolean = $ref(false); | |||
| let hCaptchaResponse = $ref(null); | ||||
| let reCaptchaResponse = $ref(null); | ||||
| let turnstileResponse = $ref(null); | ||||
| let usernameAbortController: null | AbortController = $ref(null); | ||||
| let emailAbortController: null | AbortController = $ref(null); | ||||
| 
 | ||||
| const shouldDisableSubmitting = $computed((): boolean => { | ||||
| 	return submitting || | ||||
|  | @ -141,14 +143,20 @@ function onChangeUsername(): void { | |||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	if (usernameAbortController != null) { | ||||
| 		usernameAbortController.abort(); | ||||
| 	} | ||||
| 	usernameState = 'wait'; | ||||
| 	usernameAbortController = new AbortController(); | ||||
| 
 | ||||
| 	os.api('username/available', { | ||||
| 		username, | ||||
| 	}).then(result => { | ||||
| 	}, undefined, usernameAbortController.signal).then(result => { | ||||
| 		usernameState = result.available ? 'ok' : 'unavailable'; | ||||
| 	}).catch(() => { | ||||
| 	}).catch((err) => { | ||||
| 		if (err.name !== 'AbortError') { | ||||
| 			usernameState = 'error'; | ||||
| 		} | ||||
| 	}); | ||||
| } | ||||
| 
 | ||||
|  | @ -158,11 +166,15 @@ function onChangeEmail(): void { | |||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| 	if (emailAbortController != null) { | ||||
| 		emailAbortController.abort(); | ||||
| 	} | ||||
| 	emailState = 'wait'; | ||||
| 	emailAbortController = new AbortController(); | ||||
| 
 | ||||
| 	os.api('email-address/available', { | ||||
| 		emailAddress: email, | ||||
| 	}).then(result => { | ||||
| 	}, undefined, emailAbortController.signal).then(result => { | ||||
| 		emailState = result.available ? 'ok' : | ||||
| 			result.reason === 'used' ? 'unavailable:used' : | ||||
| 			result.reason === 'format' ? 'unavailable:format' : | ||||
|  | @ -170,8 +182,10 @@ function onChangeEmail(): void { | |||
| 			result.reason === 'mx' ? 'unavailable:mx' : | ||||
| 			result.reason === 'smtp' ? 'unavailable:smtp' : | ||||
| 			'unavailable'; | ||||
| 	}).catch(() => { | ||||
| 	}).catch((err) => { | ||||
| 		if (err.name !== 'AbortError') { | ||||
| 			emailState = 'error'; | ||||
| 		} | ||||
| 	}); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -5,7 +5,7 @@ import { $i } from '@/account'; | |||
| export const pendingApiRequestsCount = ref(0); | ||||
| 
 | ||||
| // Implements Misskey.api.ApiClient.request
 | ||||
| export function api<E extends keyof Endpoints, P extends Endpoints[E]['req']>(endpoint: E, data: P = {} as any, token?: string | null | undefined): Promise<Endpoints[E]['res']> { | ||||
| export function api<E extends keyof Endpoints, P extends Endpoints[E]['req']>(endpoint: E, data: P = {} as any, token?: string | null | undefined, signal?: AbortSignal): Promise<Endpoints[E]['res']> { | ||||
| 	pendingApiRequestsCount.value++; | ||||
| 
 | ||||
| 	const onFinally = () => { | ||||
|  | @ -26,6 +26,7 @@ export function api<E extends keyof Endpoints, P extends Endpoints[E]['req']>(en | |||
| 			headers: { | ||||
| 				'Content-Type': 'application/json', | ||||
| 			}, | ||||
| 			signal, | ||||
| 		}).then(async (res) => { | ||||
| 			const body = res.status === 204 ? null : await res.json(); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue