Skip to content

Commit df1389a

Browse files
committed
Cleanup scripts when global domain changes, use domain switcher in demo app
1 parent 1ffd854 commit df1389a

File tree

4 files changed

+23
-2
lines changed

4 files changed

+23
-2
lines changed

demo/src/re-captcha-2-demo.component.html

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,13 @@ <h2 class="featurette-heading">Google reCAPTCHA2
4848
<span style="cursor:pointer" class="text-primary" (click)="changeType('audio')">Audio</span>
4949
</td>
5050
</tr>
51+
<tr>
52+
<td>Use global domain</td>
53+
<td>
54+
<span style="cursor:pointer" class="text-primary" (click)="setUseGlobalDomain(true)">Yes</span> |
55+
<span style="cursor:pointer" class="text-primary" (click)="setUseGlobalDomain(false)">No</span>
56+
</td>
57+
</tr>
5158
</tbody>
5259
</table>
5360

@@ -106,7 +113,7 @@ <h4>Live example</h4>
106113
(expire)="handleExpire()"
107114
(load)="handleLoad()"
108115
(success)="handleSuccess($event)"
109-
[useGlobalDomain]="false"
116+
[useGlobalDomain]="useGlobalDomain"
110117
[size]="size"
111118
[hl]="lang"
112119
[theme]="theme"

demo/src/re-captcha-2-demo.component.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ import { NgxCaptchaModule } from 'ngx-captcha';
7373
public size: 'compact' | 'normal' = 'normal';
7474
public lang = 'en';
7575
public type: 'image' | 'audio';
76+
public useGlobalDomain: boolean = false;
7677

7778
@ViewChild('captchaElem') captchaElem: ReCaptcha2Component;
7879
@ViewChild('langInput') langInput: ElementRef;
@@ -129,6 +130,10 @@ import { NgxCaptchaModule } from 'ngx-captcha';
129130
this.lang = this.langInput.nativeElement.value;
130131
}
131132

133+
setUseGlobalDomain(use: boolean): void {
134+
this.useGlobalDomain = use;
135+
}
136+
132137
getCurrentResponse(): void {
133138
const currentResponse = this.captchaElem.getCurrentResponse();
134139
if (!currentResponse) {

projects/ngx-captcha-lib/src/lib/components/base-recaptcha.component.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,11 +154,19 @@ export abstract class BaseReCaptchaComponent implements OnChanges, ControlValueA
154154
ngOnChanges(changes: SimpleChanges): void {
155155
// cleanup scripts if language changed because they need to be reloaded
156156
if (changes && changes.hl) {
157+
// cleanup scripts when language changes
157158
if (!changes.hl.firstChange && (changes.hl.currentValue !== changes.hl.previousValue)) {
158159
this.scriptService.cleanup();
159160
}
160161
}
161162

163+
if (changes && changes.useGlobalDomain) {
164+
// cleanup scripts when domain changes
165+
if (!changes.useGlobalDomain.firstChange && (changes.useGlobalDomain.currentValue !== changes.useGlobalDomain.previousValue)) {
166+
this.scriptService.cleanup();
167+
}
168+
}
169+
162170
this.setupComponent();
163171
}
164172

@@ -223,7 +231,6 @@ export abstract class BaseReCaptchaComponent implements OnChanges, ControlValueA
223231
* Responsible for instantiating captcha element
224232
*/
225233
protected renderReCaptcha(): void {
226-
227234
// run outside angular zone due to timeout issues when testing
228235
// details: https://github.com/Enngage/ngx-captcha/issues/26
229236
this.zone.runOutsideAngular(() => {

projects/ngx-captcha-lib/src/lib/services/script.service.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ export class ScriptService {
8282
*/
8383
private getCaptchaScriptUrl(useGlobalDomain: boolean, render: string, language?: string): string {
8484
const domain = useGlobalDomain ? this.globalDomain : this.defaultDomain;
85+
console.log(useGlobalDomain, domain);
86+
8587
// tslint:disable-next-line:max-line-length
8688
return `https://www.${domain}/recaptcha/api.js?onload=${this.windowOnLoadCallbackProperty}&render=${render}${this.getLanguageParam(language)}`;
8789
}

0 commit comments

Comments
 (0)