[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[reclaim-ui] 320/459: works on chrome
From: |
gnunet |
Subject: |
[reclaim-ui] 320/459: works on chrome |
Date: |
Fri, 11 Jun 2021 23:26:52 +0200 |
This is an automated email from the git hooks/post-receive script.
martin-schanzenbach pushed a commit to branch master
in repository reclaim-ui.
commit fa15926475c30cf2014561ce06a9342897b114e2
Author: anna wimbauer <anna.wibauer@gmx.de>
AuthorDate: Mon Oct 5 15:26:42 2020 +0200
works on chrome
---
package.json | 1 +
src/app/app.component.html | 2 +-
src/app/app.component.ts | 8 +++-
.../authorization-request.component.html | 20 ++++-----
.../authorization-request.component.ts | 10 ++++-
.../edit-authorizations.component.html | 10 ++---
.../edit-authorizations.component.ts | 10 ++++-
.../edit-credentials.component.html | 36 ++++++++--------
.../edit-credentials/edit-credentials.component.ts | 12 ++++--
src/app/edit-identity/edit-identity.component.html | 50 +++++++++++-----------
src/app/edit-identity/edit-identity.component.ts | 8 +++-
src/app/identity-list/identity-list.component.html | 36 ++++++++--------
src/app/identity-list/identity-list.component.ts | 14 ++++--
src/app/new-identity/new-identity.component.html | 8 ++--
src/app/new-identity/new-identity.component.ts | 8 +++-
yarn.lock | 25 +++++++++++
16 files changed, 163 insertions(+), 95 deletions(-)
diff --git a/package.json b/package.json
index fcc84c6..257c23b 100644
--- a/package.json
+++ b/package.json
@@ -23,6 +23,7 @@
"@angular/platform-browser": "^10.0",
"@angular/platform-browser-dynamic": "^10.0",
"@angular/router": "^10.0",
+ "@types/chrome": "^0.0.124",
"@types/jsonwebtoken": "^8.5.0",
"angular-oauth2-oidc": "^10.0.0",
"bootstrap": "^4.4.1",
diff --git a/src/app/app.component.html b/src/app/app.component.html
index 8137d4b..7bb4ac3 100644
--- a/src/app/app.component.html
+++ b/src/app/app.component.html
@@ -2,5 +2,5 @@
<router-outlet></router-outlet>
<div style="margin: 1em" (click)="toggleExperimental()">
<i [className]="isExperimental() ? 'fa fa-toggle-on' : 'fa
fa-toggle-off'"></i>
- <b
*ngIf="isExperimental()">{{getMessage("app.html:experimentalEnabled")}}</b><span
*ngIf="!isExperimental()">{{getMessage("app.html:experimentalDisabled")}}</span>
+ <b
*ngIf="isExperimental()">{{getMessage("app_html@experimentalEnabled")}}</b><span
*ngIf="!isExperimental()">{{getMessage("app_html@experimentalDisabled")}}</span>
</div>
diff --git a/src/app/app.component.ts b/src/app/app.component.ts
index 8cfabc0..0631678 100644
--- a/src/app/app.component.ts
+++ b/src/app/app.component.ts
@@ -24,7 +24,13 @@ export class AppComponent {
//Internationalization
getMessage(key, sub?){
- return browser.i18n.getMessage(key, sub);
+ var usrAgent = navigator.userAgent;
+ if (usrAgent.indexOf("Firefox") > -1){
+ return browser.i18n.getMessage(key, sub);
+ }
+ else if (usrAgent.indexOf("Chrome") > -1){
+ return chrome.i18n.getMessage(key, sub);
+ }
}
}
diff --git a/src/app/authorization-request/authorization-request.component.html
b/src/app/authorization-request/authorization-request.component.html
index 5d8c059..f565d8e 100644
--- a/src/app/authorization-request/authorization-request.component.html
+++ b/src/app/authorization-request/authorization-request.component.html
@@ -1,22 +1,22 @@
<div style="text-align: center;">
<i class="fa fa-2x fa-openid"></i>
- <b class="fa-2x" > {{getMessage("authorization-request.html:personalInfo")}}
</b>
+ <b class="fa-2x" > {{getMessage("authorization_request_html@personalInfo")}}
</b>
<br/>
<span *ngIf="isClientVerified() === undefined">
<i class="fa fa-2x fa-circle-o-notch fa-spin fa-fw"></i>
- <b class="fa-2x" >
{{getMessage("authorization-request.html:verifyRequest")}}</b>
+ <b class="fa-2x" >
{{getMessage("authorization_request_html@verifyRequest")}}</b>
</span>
<br/>
</div>
<div class="card" *ngIf="isClientVerified()" style="margin-left:30%;
width:40%;">
<div class="card-body" >
<strong>{{ oidcService.clientName }}</strong>
- {{getMessage("authorization-request.html:chooseId")}}
+ {{getMessage("authorization_request_html@chooseId")}}
<ul>
<li *ngFor="let attribute of
getRequestedStandardScopesWithDescription()"><strong>{{attribute}}</strong></li>
</ul>
<div *ngIf="getRequestedNonStandardClaims().length > 0">
- {{getMessage("authorization-request.html:attributes")}}
+ {{getMessage("authorization_request_html@attributes")}}
<ul>
<li *ngFor="let attribute of
getRequestedNonStandardClaims()"><strong>{{attribute}}</strong></li>
</ul>
@@ -25,29 +25,29 @@
<!-- Sharing disclaimer -->
<div class="alert alert-warning alert-dismissible fade show mb-1"
role="alert">
<i class="fa fa-exclamation-triangle mr-2"></i>
-
<strong>{{getMessage("authorization-request.html:personalDataWarning1")}}</strong>
- {{getMessage("authorization-request.html:personalDataWarning2",
oidcService.clientName)}}
+
<strong>{{getMessage("authorization_request_html@personalDataWarning1")}}</strong>
+ {{getMessage("authorization_request_html@personalDataWarning2",
oidcService.clientName)}}
</div>
<div style="margin: 1em;">
<button class="btn btn-danger m-1 mt-4" *ngIf="isClientVerified()"
(click)="cancelRequest()" style="margin-bottom: -4%;">
<span class="fa fa-ban"></span> {{getMessage("Decline")}}
</button>
<button class="btn btn-primary m-1 mt-4" [routerLink]="['/']"
*ngIf="isClientVerified()">
- <span class="fa fa-arrow-circle-right"></span>
{{getMessage("authorization-request.html:selectId")}}
+ <span class="fa fa-arrow-circle-right"></span>
{{getMessage("authorization_request_html@selectId")}}
</button>
</div>
</div>
<div *ngIf="isClientVerified() !== undefined && !isClientVerified()"
style="text-align: center;">
<div class="alert alert-danger show" role="alert">
- <b >{{getMessage("authorization-request.html:authFailed")}}</b><br/>
+ <b >{{getMessage("authorization_request_html@authFailed")}}</b><br/>
<button class="btn btn-primary mt-4" *ngIf="!isClientVerified()"
(click)="retryVerify();">
- <span class="fa fa-openid"></span>
{{getMessage("authorization-request.html:retry")}}
+ <span class="fa fa-openid"></span>
{{getMessage("authorization_request_html@retry")}}
</button>
</div>
</div>
<div *ngIf="isClientVerified() === undefined" style="text-align: center;">
<button class="btn btn-danger mt-4" *ngIf="isClientVerified() === undefined"
(click)="cancelRequest()">
- <span class="fa fa-ban"></span>
{{getMessage("authorization-request.html:cancelRequest")}}
+ <span class="fa fa-ban"></span>
{{getMessage("authorization_request_html@cancelRequest")}}
</button>
</div>
diff --git a/src/app/authorization-request/authorization-request.component.ts
b/src/app/authorization-request/authorization-request.component.ts
index f7ed07b..2172b2d 100644
--- a/src/app/authorization-request/authorization-request.component.ts
+++ b/src/app/authorization-request/authorization-request.component.ts
@@ -32,7 +32,7 @@ export class AuthorizationRequestComponent implements OnInit {
cancelRequest() {
this.oidcService.cancelAuthorization().subscribe(() => {
-
console.log(this.getMessage("authorization-request.ts:requestCancelled"));
+
console.log(this.getMessage("authorization_request_ts@requestCancelled"));
this.router.navigate(['/']);
//Manually reset this component
});
@@ -44,7 +44,13 @@ export class AuthorizationRequestComponent implements OnInit
{
//Internationalization
getMessage(key, sub?){
- return browser.i18n.getMessage(key, sub);
+ var usrAgent = navigator.userAgent;
+ if (usrAgent.indexOf("Firefox") > -1){
+ return browser.i18n.getMessage(key, sub);
+ }
+ else if (usrAgent.indexOf("Chrome") > -1){
+ return chrome.i18n.getMessage(key, sub);
+ }
}
diff --git a/src/app/edit-authorizations/edit-authorizations.component.html
b/src/app/edit-authorizations/edit-authorizations.component.html
index c8de885..21c3b90 100644
--- a/src/app/edit-authorizations/edit-authorizations.component.html
+++ b/src/app/edit-authorizations/edit-authorizations.component.html
@@ -2,7 +2,7 @@
<div class="m-2 card">
<div class="card-avatar card-img-top">
<div class="card-avatar-character text-dark" >
- {{getMessage("edit-authorizations.html:manageAuths")}} <i>{{
identity.name }}</i>
+ {{getMessage("edit_authorizations_html@manageAuths")}} <i>{{
identity.name }}</i>
</div>
</div>
<div class="card-body">
@@ -13,12 +13,12 @@
<tr>
<th scope="col">
<h6 class="card-subtitle mb-2">
- {{getMessage("edit-authorizations.html:authEntity")}}
+ {{getMessage("edit_authorizations_html@authEntity")}}
</h6>
</th>
<th scope="col">
<h6 class="card-subtitle mb-2">
- {{getMessage("edit-authorizations.html:sharedAttributes")}}
+ {{getMessage("edit_authorizations_html@sharedAttributes")}}
</h6>
</th>
<th scope="col"></th>
@@ -41,7 +41,7 @@
<span class="fa fa-unlink"></span> {{getMessage("Revoke")}}
</button>
<div class="alert alert-danger fade show"
*ngIf="showConfirmRevoke == ticket">
-
{{getMessage("edit-authorizations.html:revokeVerifikation")}}<br/><br/>
+
{{getMessage("edit_authorizations_html@revokeVerifikation")}}<br/><br/>
<button class="btn btn-primary m-2"
(click)="revokeTicket(ticket)">
<span class="fa fa-check"></span> {{getMessage("Yes")}}
</button>
@@ -57,7 +57,7 @@
<!-- Edit card buttons -->
<div>
<button class="btn btn-primary" [routerLink]="['/edit-identity',
identity.name]">
- <span class="fa fa-back"></span>
{{getMessage("edit-authorizations.html:BackTo", identity.name)}}
+ <span class="fa fa-back"></span>
{{getMessage("edit_authorizations_html@BackTo", identity.name)}}
</button>
</div>
</div>
diff --git a/src/app/edit-authorizations/edit-authorizations.component.ts
b/src/app/edit-authorizations/edit-authorizations.component.ts
index 8de668c..35984ef 100644
--- a/src/app/edit-authorizations/edit-authorizations.component.ts
+++ b/src/app/edit-authorizations/edit-authorizations.component.ts
@@ -54,7 +54,7 @@ export class EditAuthorizationsComponent implements OnInit {
getAudienceName(ticket) {
if (undefined === this.audienceNames[ticket.audience]) {
- return this.getMessage("unknown");
+ return this.getMessage("edit_authorizations_ts@unknown");
}
return this.audienceNames[ticket.audience];
}
@@ -142,7 +142,13 @@ export class EditAuthorizationsComponent implements OnInit
{
//Internationalization
getMessage(key, sub?){
- return browser.i18n.getMessage(key, sub);
+ var usrAgent = navigator.userAgent;
+ if (usrAgent.indexOf("Firefox") > -1){
+ return browser.i18n.getMessage(key, sub);
+ }
+ else if (usrAgent.indexOf("Chrome") > -1){
+ return chrome.i18n.getMessage(key, sub);
+ }
}
diff --git a/src/app/edit-credentials/edit-credentials.component.html
b/src/app/edit-credentials/edit-credentials.component.html
index 3a8b341..9572ca0 100644
--- a/src/app/edit-credentials/edit-credentials.component.html
+++ b/src/app/edit-credentials/edit-credentials.component.html
@@ -2,12 +2,12 @@
<div class="m-2 card">
<div class="card-avatar card-img-top">
<div class="card-avatar-character text-dark" >
- {{getMessage("edit-credentials.html:credentialsFor")}} <i>{{
identity.name }}</i>
+ {{getMessage("edit_credentials_html@credentialsFor")}} <i>{{
identity.name }}</i>
</div>
</div>
<!-- Credential management -->
<div class="card-body">
- <h3 >{{getMessage("edit-credentials.html:linkAccount")}}</h3>
+ <h3 >{{getMessage("edit_credentials_html@linkAccount")}}</h3>
<!--IdProvider-Discovery-->
<div>
<!--Email not found Warning-->
@@ -17,23 +17,23 @@
</div>
<!--Issuer Discovery Warning-->
<div *ngIf="!isValidEmailforDiscovery()" class="alert alert-primary
alert-dismissible fade show" role="alert" >
- <span class="fa fa-warning"></span>
{{getMessage("edit-credentials.html:notCompatible")}}
+ <span class="fa fa-warning"></span>
{{getMessage("edit_credentials_html@notCompatible")}}
</div>
<div *ngIf="!newIdProviderDiscovered() && !loggedIn()"
class="alert alert-secondary alert-dismissible fade show my-2"
role="alert" >
- <span class="fa fa-info"> </span> <b
class="ml-2">{{getMessage("edit-credentials.html:info")}}</b><br/>
- {{getMessage("edit-credentials.html:linkAccountInfo")}}
+ <span class="fa fa-info"> </span> <b
class="ml-2">{{getMessage("edit_credentials_html@info")}}</b><br/>
+ {{getMessage("edit_credentials_html@linkAccountInfo")}}
</div>
<div *ngIf="!newIdProviderDiscovered()" class="my-2 col-lg-4">
<input placeholder="user@example.com" [(ngModel)]="webfingerEmail">
<button *ngIf="!newIdProviderDiscovered()" class="btn btn-primary
fhg-link" (click)="discoverIdProvider()" >
- <span class="fa fa-search"></span>
{{getMessage("edit-credentials.html:checkCompatability")}}
+ <span class="fa fa-search"></span>
{{getMessage("edit_credentials_html@checkCompatability")}}
</button>
</div>
<!--Description-->
<!--Link account-->
<div *ngIf="newIdProviderDiscovered() && !loggedIn()" class="mb-3 px-2">
- <div class="mx-n2"
>{{getMessage("edit-credentials.html:availableClaims")}}</div>
+ <div class="mx-n2"
>{{getMessage("edit_credentials_html@availableClaims")}}</div>
<div *ngFor="let scope of scopes" class="mx-2">
<i class="fa text-primary" [class.fa-toggle-off]="!scope.chosen"
[class.fa-toggle-on]="scope.chosen"
[class.text-muted]="necessaryScope(scope.scope)"
(click)="!necessaryScope(scope.scope) && scope.chosen = !scope.chosen"></i>
<span class="ml-1"
[class.text-muted]="necessaryScope(scope.scope)">{{scope.scope}}</span>
@@ -41,7 +41,7 @@
<!--<label class="form-check-label"
for="scope.chosen">{{scope.scope}}</label>-->
</div>
<button class="btn btn-primary mb-1 mt-2 fhg-link"
(click)="loginFhgAccount()" >
- <span class="fa fa-link"></span>
{{getMessage("edit-credentials.html:link")}}
+ <span class="fa fa-link"></span>
{{getMessage("edit_credentials_html@link")}}
</button>
<button class="btn btn-primary mb-1 fhg-link"
(click)="cancelLinking()" >
<span class="fa fa-close"></span> {{getMessage("Cancel")}}
@@ -50,16 +50,16 @@
</div>
<hr />
- <h3 >{{getMessage("edit-credentials.html:credentials")}}</h3>
+ <h3 >{{getMessage("edit_credentials_html@credentials")}}</h3>
<!-- Credential creation warning -->
<div
*ngIf="loggedIn() && !credentialNameValid(newCredential) ||
!credentialTypeValid(newCredential) || !credentialValueValid(newCredential)"
class="alert alert-primary alert-dismissible fade show" role="alert" >
- <span class="fa fa-warning"></span>
{{getMessage("edit-credentials.html:note")}}
+ <span class="fa fa-warning"></span>
{{getMessage("edit_credentials_html@note")}}
<ul>
- <li>{{getMessage("edit-credentials.html:note1")}}</li>
- <li>{{getMessage("edit-credentials.html:note2")}}</li>
- <li>{{getMessage("edit-credentials.html:note3")}}</li>
+ <li>{{getMessage("edit_credentials_html@note1")}}</li>
+ <li>{{getMessage("edit_credentials_html@note2")}}</li>
+ <li>{{getMessage("edit_credentials_html@note3")}}</li>
</ul>
</div>
@@ -67,10 +67,10 @@
<table class="table pb-1" style="">
<thead>
<tr>
- <th >{{getMessage("edit-credentials.html:name")}}</th>
- <th >{{getMessage("edit-credentials.html:type")}}</th>
- <th >{{getMessage("edit-credentials.html:expires")}}</th>
- <th >{{getMessage("edit-credentials.html:issuer")}}</th>
+ <th >{{getMessage("edit_credentials_html@name")}}</th>
+ <th >{{getMessage("edit_credentials_html@type")}}</th>
+ <th >{{getMessage("edit_credentials_html@expires")}}</th>
+ <th >{{getMessage("edit_credentials_html@issuer")}}</th>
</tr>
</thead>
<tbody>
@@ -98,7 +98,7 @@
</button>
</td>
<td>
- <div *ngIf="!isCredentialValid(credential)"> <span
style="color:#f00" > {{getMessage("edit-credentials.html:expired")}} </span>
<span
+ <div *ngIf="!isCredentialValid(credential)"> <span
style="color:#f00" > {{getMessage("edit_credentials_html@expired")}} </span>
<span
class="fa fa-times"></span> </div>
</td>
</tr>
diff --git a/src/app/edit-credentials/edit-credentials.component.ts
b/src/app/edit-credentials/edit-credentials.component.ts
index 1970a14..a2b1938 100644
--- a/src/app/edit-credentials/edit-credentials.component.ts
+++ b/src/app/edit-credentials/edit-credentials.component.ts
@@ -275,10 +275,10 @@ export class EditCredentialsComponent implements OnInit {
},
error => {
if (error.status == 404){
- this.errorMassage = this.getMessage("edit-credentials.ts:noAccount");
+ this.errorMassage = this.getMessage("edit_credentials_ts@noAccount");
}
else{
- this.errorMassage =
this.getMessage("edit-credentials.ts:errorWrongAddress");
+ this.errorMassage =
this.getMessage("edit_credentials_ts@errorWrongAddress");
}
this.emailNotFoundAlertClosed = false;
setTimeout(() => this.emailNotFoundAlertClosed = true, 20000);
@@ -363,7 +363,13 @@ export class EditCredentialsComponent implements OnInit {
//Internationalization
getMessage(key, sub?){
- return browser.i18n.getMessage(key, sub);
+ var usrAgent = navigator.userAgent;
+ if (usrAgent.indexOf("Firefox") > -1){
+ return browser.i18n.getMessage(key, sub);
+ }
+ else if (usrAgent.indexOf("Chrome") > -1){
+ return chrome.i18n.getMessage(key, sub);
+ }
}
diff --git a/src/app/edit-identity/edit-identity.component.html
b/src/app/edit-identity/edit-identity.component.html
index 3b1c67d..33c0a0e 100644
--- a/src/app/edit-identity/edit-identity.component.html
+++ b/src/app/edit-identity/edit-identity.component.html
@@ -12,9 +12,9 @@
<!-- Attribute table -->
<div class="card-body">
<div>
- <h3 class="card-subtitle mb-2">
{{getMessage("edit-identity.html:basicInfo")}} <span (click)="showGeneralInfo =
!showGeneralInfo" class="fa fa-question-circle"></span></h3>
+ <h3 class="card-subtitle mb-2">
{{getMessage("edit_identity_html@basicInfo")}} <span (click)="showGeneralInfo =
!showGeneralInfo" class="fa fa-question-circle"></span></h3>
<div class="alert alert-secondary fade show" *ngIf="showGeneralInfo" >
- {{getMessage("edit-identity.html:standardScopes")}}
+ {{getMessage("edit_identity_html@standardScopes")}}
</div>
<div class="table pb-1">
@@ -29,7 +29,7 @@
</div>
<div class="col-sm">
<input *ngIf="!isClaimCred(claim)" placeholder="Value"
[(ngModel)]="claim.value">
- <span *ngIf="isClaimCred(claim)"
>{{getMessage("edit-identity.html:claimAsAttribute", [getCredValue(claim),
getIssuer(claim), claim.value])}}</span>
+ <span *ngIf="isClaimCred(claim)"
>{{getMessage("edit_identity_html@claimAsAttribute", [getCredValue(claim),
getIssuer(claim), claim.value])}}</span>
</div>
<div class="col-sm">
<button class="btn btn-primary" (click)="deleteAttribute(claim)"
*ngIf="!isClaimCred(claim)">
@@ -70,7 +70,7 @@
<i *ngIf="isClaimRequested(claim)" class="fa
fa-openid"></i><b> {{ getDescription(claim) }}</b></div></div>
<div class="col-sm">
<input *ngIf="!isClaimCred(claim)" placeholder="Value"
[(ngModel)]="claim.value">
- <span *ngIf="isClaimCred(claim)"
>{{getMessage("edit-identity.html:claimAsAttribute", [getCredValue(claim),
getIssuer(claim), claim.value])}}</span>
+ <span *ngIf="isClaimCred(claim)"
>{{getMessage("edit_identity_html@claimAsAttribute", [getCredValue(claim),
getIssuer(claim), claim.value])}}</span>
</div>
<div class="col-sm">
<button class="btn btn-primary" (click)="deleteAttribute(claim)"
*ngIf="!isClaimCred(claim)">
@@ -113,7 +113,7 @@
<i *ngIf="isClaimRequested(claim)" class="fa
fa-openid"></i><b> {{ getDescription(claim) }}</b></div></div>
<div class="col-sm">
<input *ngIf="!isClaimCred(claim)" placeholder="Value"
[(ngModel)]="claim.value">
- <span *ngIf="isClaimCred(claim)"
>{{getMessage("edit-identity.html:claimAsAttribute", [getCredValue(claim),
getIssuer(claim), claim.value])}}</span>
+ <span *ngIf="isClaimCred(claim)"
>{{getMessage("edit_identity_html@claimAsAttribute", [getCredValue(claim),
getIssuer(claim), claim.value])}}</span>
</div>
<div class="col-sm">
<button class="btn btn-primary" (click)="deleteAttribute(claim)"
*ngIf="!isClaimCred(claim)">
@@ -155,7 +155,7 @@
<i *ngIf="isClaimRequested(claim)" class="fa
fa-openid"></i><b> {{ getDescription(claim) }}</b></div></div>
<div class="col-sm">
<input *ngIf="!isClaimCred(claim)" placeholder="Value"
[(ngModel)]="claim.value">
- <span *ngIf="isClaimCred(claim)"
>{{getMessage("edit-identity.html:claimAsAttribute", [getCredValue(claim),
getIssuer(claim), claim.value])}}</span>
+ <span *ngIf="isClaimCred(claim)"
>{{getMessage("edit_identity_html@claimAsAttribute", [getCredValue(claim),
getIssuer(claim), claim.value])}}</span>
</div>
<div class="col-sm">
<button class="btn btn-primary" (click)="deleteAttribute(claim)"
*ngIf="!isClaimCred(claim)">
@@ -175,14 +175,14 @@
<i *ngIf="isClaimRequested(claim)" class="fa
fa-openid"></i><b> {{ getDescription(claim) }}</b></div></div>
<div class="col-sm">
<select *ngIf="isExperimental()" class="custom-select"
(change)="claim.flag=$event.target.value; ">
- <option value="0">{{ getMessage("edit-identity.html:plain")
}}</option>
- <option value="1">{{
getMessage("edit-identity.html:credential") }}</option>
+ <option value="0">{{ getMessage("edit_identity_html@plain")
}}</option>
+ <option value="1">{{
getMessage("edit_identity_html@credential") }}</option>
</select>
<input *ngIf="claim.flag == '0'" placeholder="Value"
[(ngModel)]="claim.value">
<select *ngIf="claim.flag == '1'" class="custom-select"
(change)="claim.credential=$event.target.value; " >
- <option value="">{{
getMessage("edit-identity.html:selectSource") }}</option>
+ <option value="">{{
getMessage("edit_identity_html@selectSource") }}</option>
<option *ngFor="let cred of credentials" value={{cred.id}}>
{{cred.name}}
</option>
@@ -190,7 +190,7 @@
<select class="custom-select"
*ngIf="(claim.credential !== '') && (claim.flag == '1')"
(change)="claim.value=$event.target.value">
- <option value="">{{
getMessage("edit-identity.html:selectClaim") }}</option>
+ <option value="">{{
getMessage("edit_identity_html@selectClaim") }}</option>
<option *ngFor="let att of credentialValuesForClaim(claim)"
value={{att.name}}>
{{att.value}} <i>({{att.name}})</i>
</option>
@@ -206,9 +206,9 @@
</div>
- <h3 class="card-subtitle mb-2" >{{
getMessage("edit-identity.html:additionalInfo") }}<span (click)="showExtraInfo
= !showExtraInfo" class="fa fa-question-circle"></span></h3>
+ <h3 class="card-subtitle mb-2" >{{
getMessage("edit_identity_html@additionalInfo") }}<span (click)="showExtraInfo
= !showExtraInfo" class="fa fa-question-circle"></span></h3>
<div class="alert alert-secondary fade show" *ngIf="showExtraInfo" >
- {{ getMessage("edit-identity.html:non-standardClaims") }}
+ {{ getMessage("edit_identity_html@non_standardClaims") }}
</div>
<!-- Missing "non-standard" claims that are requested -->
@@ -222,14 +222,14 @@
<div class="col-sm">
<input *ngIf="!isClaimCredentialRequested(missing)"
placeholder="Value" [(ngModel)]="missing.value">
<select *ngIf="isClaimCredentialRequested(missing)"
class="custom-select" (change)="missing.credential=$event.target.value; ">
- <option value="">{{
getMessage("edit-identity.html:selectSource") }}</option>
+ <option value="">{{
getMessage("edit_identity_html@selectSource") }}</option>
<option *ngFor="let cred of credentials" value={{cred.id}}>
{{cred.name}}
</option>
</select>
<select *ngIf="isClaimCredentialRequested(missing) &&
missing.credential !== ''" class="custom-select"
(change)="missing.value=$event.target.value">
- <option value="">{{
getMessage("edit-identity.html:selectClaim") }}</option>
+ <option value="">{{
getMessage("edit_identity_html@selectClaim") }}</option>
<option *ngFor="let claim of credentialValuesForCred(missing)"
value={{claim.name}}>
{{claim.value}} <i>({{claim.name}})</i>
</option>
@@ -252,7 +252,7 @@
</div>
<div class="col-sm">
<input *ngIf="!isClaimCred(attribute)" placeholder="Value"
[(ngModel)]="attribute.value">
- <span *ngIf="isClaimCred(attribute)"
>{{getMessage("edit-identity.html:claimAsAttribute", [getCredValue(claim),
getIssuer(claim), claim.value])}}</span>
+ <span *ngIf="isClaimCred(attribute)"
>{{getMessage("edit_identity_html@claimAsAttribute", [getCredValue(claim),
getIssuer(claim), claim.value])}}</span>
</div>
<div class="col-sm">
<button class="btn btn-primary"
(click)="deleteAttribute(attribute)" *ngIf="!isClaimCred(attribute)">
@@ -271,13 +271,13 @@
<div class="col-sm">
<select *ngIf="isExperimental()" class="custom-select"
(change)="newAttribute.flag=$event.target.value; ">
- <option value="0">{{ getMessage("edit-identity.html:plain")
}}</option>
- <option value="1">{{
getMessage("edit-identity.html:credential") }}</option>
+ <option value="0">{{ getMessage("edit_identity_html@plain")
}}</option>
+ <option value="1">{{
getMessage("edit_identity_html@credential") }}</option>
</select>
<input *ngIf="newAttribute.flag == '0'" placeholder="Value"
[class.text-danger]="!attributeValueValid(newAttribute)"
[(ngModel)]="newAttribute.value">
<select *ngIf="newAttribute.flag == '1'" class="custom-select"
(change)="newAttribute.credential=$event.target.value; " >
- <option value="">{{
getMessage("edit-identity.html:selectSource") }}</option>
+ <option value="">{{
getMessage("edit_identity_html@selectSource") }}</option>
<option *ngFor="let cred of credentials" value={{cred.id}}>
{{cred.name}}
</option>
@@ -285,7 +285,7 @@
<select class="custom-select"
*ngIf="newAttribute.credential !== '' && newAttribute.flag ==
'1'" (change)="newAttribute.value=$event.target.value">
- <option value="" >{{
getMessage("edit-identity.html:selectClaim") }}</option>
+ <option value="" >{{
getMessage("edit_identity_html@selectClaim") }}</option>
<option *ngFor="let claim of
credentialValuesForClaim(newAttribute)" value={{claim.name}}>
{{claim.value}} <i>({{claim.name}})</i>
</option>
@@ -301,11 +301,11 @@
</div>
<!-- Attribute creation warning -->
<div *ngIf="!attributeNameValid(newAttribute) ||
!attributeValueValid(newAttribute)" class="alert alert-primary
alert-dismissible fade show" role="alert">
- <span class="fa fa-warning"></span> {{
getMessage("edit-identity.html:note") }}
+ <span class="fa fa-warning"></span> {{
getMessage("edit_identity_html@note") }}
<ul>
- <li>{{ getMessage("edit-identity.html:note1") }}</li>
- <li>{{ getMessage("edit-identity.html:note2") }}</li>
- <li>{{ getMessage("edit-identity.html:note3") }}</li>
+ <li>{{ getMessage("edit_identity_html@note1") }}</li>
+ <li>{{ getMessage("edit_identity_html@note2") }}</li>
+ <li>{{ getMessage("edit_identity_html@note3") }}</li>
</ul>
</div>
@@ -318,11 +318,11 @@
</button>
<button *ngIf="!inOpenIdFlow()" class="btn btn-primary"
[routerLink]="['/edit-authorizations', identity.name]" [style.float]="'right'">
<span class="fa fa-openid"></span>
- {{ getMessage("edit-identity.html:manageAuths") }}
+ {{ getMessage("edit_identity_html@manageAuths") }}
</button>
<button *ngIf="!inOpenIdFlow() && isExperimental()" class="btn
btn-primary" [routerLink]="['/edit-credentials', identity.name]"
[style.float]="'right'">
<span class="fa fa-openid"></span>
- {{ getMessage("edit-identity.html:manageCreds") }}
+ {{ getMessage("edit_identity_html@manageCreds") }}
</button>
</div>
</div>
diff --git a/src/app/edit-identity/edit-identity.component.ts
b/src/app/edit-identity/edit-identity.component.ts
index 4bbd9d8..dd3a80e 100644
--- a/src/app/edit-identity/edit-identity.component.ts
+++ b/src/app/edit-identity/edit-identity.component.ts
@@ -537,7 +537,13 @@ export class EditIdentityComponent implements OnInit {
//Internationalization
getMessage(key, sub?){
- return browser.i18n.getMessage(key, sub);
+ var usrAgent = navigator.userAgent;
+ if (usrAgent.indexOf("Firefox") > -1){
+ return browser.i18n.getMessage(key, sub);
+ }
+ else if (usrAgent.indexOf("Chrome") > -1){
+ return chrome.i18n.getMessage(key, sub);
+ }
}
}
diff --git a/src/app/identity-list/identity-list.component.html
b/src/app/identity-list/identity-list.component.html
index d60c499..79160e8 100644
--- a/src/app/identity-list/identity-list.component.html
+++ b/src/app/identity-list/identity-list.component.html
@@ -3,7 +3,7 @@
<div class="logo"><img src="assets/reclaim_icon.png"/></div>
<hr>
<div style="text-align: center; font-size: 18px;">
- <strong> {{ getMessage("identity-list.html:unableToConnect") }} </strong>
+ <strong> {{ getMessage("identity_list_html@unableToConnect") }} </strong>
</div>
</oid-modal>
@@ -16,7 +16,7 @@
<input class="form-control mr-sm-2" type="search" [(ngModel)]="searchTerm"
name="searchTerm" placeholder="Search identities" style="border-radius: 2em;">
</div>
<button class="btn btn-primary" [routerLink]="['/new-identity']" >
- <span class="fa fa-user-plus"></span> {{
getMessage("identity-list.html:newId") }}
+ <span class="fa fa-user-plus"></span> {{
getMessage("identity_list_html@newId") }}
</button>
</div>
<br/>
@@ -25,7 +25,7 @@
<!-- Cancel authorization -->
<div style="margin-bottom: 1em; text-align: center;" *ngIf="inOpenIdFlow()">
<button *ngIf="inOpenIdFlow()" class="btn btn-danger mt-2"
(click)="cancelRequest()">
- <span class="fa fa-ban"></span> {{
getMessage("identity-list.html:declineRequest") }}
+ <span class="fa fa-ban"></span> {{
getMessage("identity_list_html@declineRequest") }}
</button>
</div>
@@ -33,7 +33,7 @@
<div *ngFor="let err of errorInfos" class="alert alert-danger show"
role="alert">
<b>ERROR</b>
<button class="btn btn-primary ml-4"
(click)="errorInfos.splice(errorInfos.indexOf(err,0), 1)">
- <span>{{ getMessage("identity-list.html:dismiss") }}</span>
+ <span>{{ getMessage("identity_list_html@dismiss") }}</span>
</button>
<br/>
{{err}}
@@ -41,16 +41,16 @@
<!-- No identities present -->
<div *ngIf="isConnected() && 0 == identities.length" style="text-align:
center;" class="alert alert-secondary alert-dismissible fade show" role="alert">
- {{ getMessage("identity-list.html:noId") }}<br/><br/>
+ {{ getMessage("identity_list_html@noId") }}<br/><br/>
<button class="btn btn-primary" [routerLink]="['/new-identity']">
- <span class="fa fa-plus"></span> {{
getMessage("identity-list.html:addFirstId") }}
+ <span class="fa fa-plus"></span> {{
getMessage("identity_list_html@addFirstId") }}
</button>
</div>
<!-- Identity cards -->
<!-- No match -->
<div *ngIf="canSearch()">
- <div *ngIf="(identities | search: searchTerm).length == 0"
style="text-align: center;" class="alert alert-secondary alert-dismissible fade
show" role="alert">{{ getMessage("identity-list.html:noMatchingIds") }}</div>
+ <div *ngIf="(identities | search: searchTerm).length == 0"
style="text-align: center;" class="alert alert-secondary alert-dismissible fade
show" role="alert">{{ getMessage("identity_list_html@noMatchingIds") }}</div>
</div>
<!-- Cards -->
<div class="card-columns p-2 mr-5 ml-5" [ngStyle]="{'column-count': '1'}"
style="display: flex; flex-direction:column; align-items:center">
@@ -69,7 +69,7 @@
</div>
<!-- Identity deletion confirmation -->
<div class="alert alert-danger fade show" [hidden]="showConfirmDelete !=
identity">
- {{ getMessage("identity-list.html:verifyDelete") }}<br/><br/>
+ {{ getMessage("identity_list_html@verifyDelete") }}<br/><br/>
<button class="btn btn-primary" (click)="deleteIdentity(identity)">
<span class="fa fa-trash"></span> {{ getMessage("Delete") }}
</button>
@@ -79,23 +79,23 @@
</div>
<!-- Maybe add some info to identities? - dialog -->
<div class="alert alert-secondary fade show"
[hidden]="hasAttributes(identity)" >
- {{ getMessage("identity-list.html:noAttributes1") }} <a
class="buttonlink" [routerLink]="['/edit-identity', identity.name]">{{
getMessage("identity-list.html:noAttributes2") }}</a>
+ {{ getMessage("identity_list_html@noAttributes1") }} <a
class="buttonlink" [routerLink]="['/edit-identity', identity.name]">{{
getMessage("identity_list_html@noAttributes2") }}</a>
</div>
<div [hidden]="!isAnyRequestedClaimMissing(identity)"
class="alert alert-warning alert-dismissible fade show"
[class.alert-warning]="!isAnyRequiredClaimMissing(identity)"
[class.alert-danger]="isAnyRequiredClaimMissing(identity)"
role="alert" >
- <span class="fa fa-openid"></span> {{
getMessage("identity-list.html:missingInformation") }}
+ <span class="fa fa-openid"></span> {{
getMessage("identity_list_html@missingInformation") }}
<ul>
<li *ngIf="isProfileRequested() && isProfileMissing(identity)"><b>{{
getProfileDescription() }}</b></li>
<li *ngIf="isEmailRequested() && isEmailMissing(identity)"><b>{{
getEmailDescription() }}</b></li>
<li *ngIf="isPhoneRequested() && isPhoneMissing(identity)"><b>{{
getPhoneDescription() }}</b></li>
<li *ngIf="isAddressRequested() && isAddressMissing(identity)"><b>{{
getAddressDescription() }}</b></li>
- <li *ngFor="let attr of
getMissingClaims(identity)"><b>{{attr.name}}</b><i *ngIf="!isOptional(attr)">
({{ getMessage("identity-list.html:required") }})</i></li>
+ <li *ngFor="let attr of
getMissingClaims(identity)"><b>{{attr.name}}</b><i *ngIf="!isOptional(attr)">
({{ getMessage("identity_list_html@required") }})</i></li>
</ul>
<button class="btn btn-primary" [routerLink]="['/edit-identity',
identity.name]">
- <span class="fa fa-edit"></span> {{
getMessage("identity-list.html:editId") }}
+ <span class="fa fa-edit"></span> {{
getMessage("identity_list_html@editId") }}
</button>
</div>
@@ -121,14 +121,14 @@
</div>
<div *ngIf="(openIdentity != identity) &&
hasLotsOfAttributes(identity)" class="ml-4">
<div>
- <i>{{ getMessage("identity-list.html:moreAttributes",
attributes[identity.pubkey].length - 5) }}</i><br/>
+ <i>{{ getMessage("identity_list_html@moreAttributes",
attributes[identity.pubkey].length - 5) }}</i><br/>
</div>
</div>
</div>
</div>
<button class="btn btn-primary mt-3" (click)="openIdentity = identity"
*ngIf="(openIdentity != identity) && hasLotsOfAttributes(identity)">
<i class="fa fa-expand"></i>
- {{ getMessage("identity-list.html:showAll") }}
+ {{ getMessage("identity_list_html@showAll") }}
</button>
</div>
</div>
@@ -136,8 +136,8 @@
<button [disabled]="!isClientVerified() ||
isAnyRequiredClaimMissing(identity)"
(click)="loginIdentity(identity)"
class="btn btn-primary mr-1 openid-login">
- <span *ngIf="isClientVerified()" >{{
getMessage("identity-list.html:shareInfo1") }} <i class="fa fa-openid
text-primary"></i> {{ getMessage("identity-list.html:shareInfo2") }}</span>
- <span *ngIf="!isClientVerified()" ><i class="fa
fa-exclamation-circle"></i> {{ getMessage("identity-list.html:sharingDisabled")
}}</span>
+ <span *ngIf="isClientVerified()" >{{
getMessage("identity_list_html@shareInfo1") }} <i class="fa fa-openid
text-primary"></i> {{ getMessage("identity_list_html@shareInfo2") }}</span>
+ <span *ngIf="!isClientVerified()" ><i class="fa
fa-exclamation-circle"></i> {{ getMessage("identity_list_html@sharingDisabled")
}}</span>
</button>
</div>
</div>
@@ -148,12 +148,12 @@
<div class="card-avatar-character text-dark">
<!--<div class="icon m-1 text-uppercase"
[style.background-color]="intToRGB(identity.pubkey)">{{
identity.name[0]}}</div>-->
<i class="fa fa-user-circle"></i>
- <span class="m-1" style="display: inline-block" ><i>{{
getMessage("identity-list.html:newId") }}</i></span>
+ <span class="m-1" style="display: inline-block" ><i>{{
getMessage("identity_list_html@newId") }}</i></span>
</div>
</div>
<div class="card-body">
<div style="text-align:center" class="mb-4">
- <i>{{ getMessage("identity-list.html:addId") }}</i>
+ <i>{{ getMessage("identity_list_html@addId") }}</i>
</div>
<div style="text-align:center">
<img src="assets/reclaim_icon.png" style="width: 5em;opacity: 0.3;">
diff --git a/src/app/identity-list/identity-list.component.ts
b/src/app/identity-list/identity-list.component.ts
index 40d3f69..0e0a596 100644
--- a/src/app/identity-list/identity-list.component.ts
+++ b/src/app/identity-list/identity-list.component.ts
@@ -126,7 +126,7 @@ export class IdentityListComponent implements OnInit {
}
},
err => {
- this.errorInfos.push(this.getMessage("identity-list.ts:errorReferences",
identity.name));
+ this.errorInfos.push(this.getMessage("identity_list_ts@errorReferences",
identity.name));
console.log(err);
});
}
@@ -156,7 +156,7 @@ export class IdentityListComponent implements OnInit {
this.updateMissingClaims(identity);
},
err => {
- this.errorInfos.push(this.getMessage("identity-list.ts:errorAttributes",
identity.name));
+ this.errorInfos.push(this.getMessage("identity_list_ts@errorAttributes",
identity.name));
console.log(err);
});
}
@@ -168,7 +168,7 @@ export class IdentityListComponent implements OnInit {
this.updateIdentities();
},
err => {
-
this.errorInfos.push(this.getMessage("identity-list.ts:errorDeletingId",
identity.name));
+
this.errorInfos.push(this.getMessage("identity_list_ts@errorDeletingId",
identity.name));
console.log(err);
});
}
@@ -482,6 +482,12 @@ export class IdentityListComponent implements OnInit {
//Internationalization
getMessage(key, sub?){
- return browser.i18n.getMessage(key, sub);
+ var usrAgent = navigator.userAgent;
+ if (usrAgent.indexOf("Firefox") > -1){
+ return browser.i18n.getMessage(key, sub);
+ }
+ else if (usrAgent.indexOf("Chrome") > -1){
+ return chrome.i18n.getMessage(key, sub);
+ }
}
}
diff --git a/src/app/new-identity/new-identity.component.html
b/src/app/new-identity/new-identity.component.html
index ca723a5..9922eaa 100644
--- a/src/app/new-identity/new-identity.component.html
+++ b/src/app/new-identity/new-identity.component.html
@@ -3,20 +3,20 @@
<div class="m-2 card" style="text-align:center; width:100%; max-width:
50em;">
<div class="card-avatar card-img-top">
<div class="card-avatar-character text-dark">
- {{getMessage("new-identity.html:newId")}}
+ {{getMessage("new_identity_html@newId")}}
</div>
</div>
<!-- Invalid input -->
<div *ngIf="'' !== newIdentity.name && !canSave() && !isDuplicate()"
class="alert alert-danger alert-dismissible fade show" role="alert">
- {{getMessage("new-identity.html:inputSpecification")}}
+ {{getMessage("new_identity_html@inputSpecification")}}
</div>
<!--Identity already exists -->
<div *ngIf="isDuplicate()" class="alert alert-warning alert-dismissible
fade show" role="alert">
- {{getMessage("new-identity.html:usernameDuplicate")}}
+ {{getMessage("new_identity_html@usernameDuplicate")}}
</div>
<!-- Input text -->
<div *ngIf="'' === newIdentity.name || canSave()" class="alert
alert-secondary alert-dismissible fade show" role="alert">
- {{getMessage("new-identity.html:enterUsername")}}
+ {{getMessage("new_identity_html@enterUsername")}}
</div>
<div class="card-body">
<input [class.text-danger]="'' !== newIdentity.name && !canSave()"
style="text-align: center; border: 1px solid #111;"
(keyup.enter)="saveIdentity()" pattern="^[a-zA-Z0-9-]+" placeholder="Username"
title="Only Alphanumeric input. No spaces or special characters allowed."
class="mr-2" [(ngModel)]="newIdentity.name" autofocus>
diff --git a/src/app/new-identity/new-identity.component.ts
b/src/app/new-identity/new-identity.component.ts
index 833bdae..6c26f7b 100644
--- a/src/app/new-identity/new-identity.component.ts
+++ b/src/app/new-identity/new-identity.component.ts
@@ -82,7 +82,13 @@ export class NewIdentityComponent implements OnInit {
//Internationalization
getMessage(key, sub?){
- return browser.i18n.getMessage(key, sub);
+ var usrAgent = navigator.userAgent;
+ if (usrAgent.indexOf("Firefox") > -1){
+ return browser.i18n.getMessage(key, sub);
+ }
+ else if (usrAgent.indexOf("Chrome") > -1){
+ return chrome.i18n.getMessage(key, sub);
+ }
}
}
diff --git a/yarn.lock b/yarn.lock
index 96fc9e5..aae8453 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1187,11 +1187,31 @@
semver "7.3.2"
semver-intersect "1.4.0"
+"@types/chrome@^0.0.124":
+ version "0.0.124"
+ resolved
"https://registry.yarnpkg.com/@types/chrome/-/chrome-0.0.124.tgz#1cdb8e1c1ddb04b15844f5a71b9907f73bbb84a2"
+ integrity
sha512-0UmDQ6A9gaahvztKryIonSTyUMEhuhKNyyJAnBB7ZJN/YXP7YRkL4onPFSTxnIbXcMnYsQFo8TxsGP8jY2mdEw==
+ dependencies:
+ "@types/filesystem" "*"
+ "@types/har-format" "*"
+
"@types/color-name@^1.1.1":
version "1.1.1"
resolved
"https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
integrity
sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==
+"@types/filesystem@*":
+ version "0.0.29"
+ resolved
"https://registry.yarnpkg.com/@types/filesystem/-/filesystem-0.0.29.tgz#ee3748eb5be140dcf980c3bd35f11aec5f7a3748"
+ integrity
sha512-85/1KfRedmfPGsbK8YzeaQUyV1FQAvMPMTuWFQ5EkLd2w7szhNO96bk3Rh/SKmOfd9co2rCLf0Voy4o7ECBOvw==
+ dependencies:
+ "@types/filewriter" "*"
+
+"@types/filewriter@*":
+ version "0.0.28"
+ resolved
"https://registry.yarnpkg.com/@types/filewriter/-/filewriter-0.0.28.tgz#c054e8af4d9dd75db4e63abc76f885168714d4b3"
+ integrity sha1-wFTor02d11205jq8dviFFocU1LM=
+
"@types/glob@^7.1.1":
version "7.1.3"
resolved
"https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183"
@@ -1200,6 +1220,11 @@
"@types/minimatch" "*"
"@types/node" "*"
+"@types/har-format@*":
+ version "1.2.4"
+ resolved
"https://registry.yarnpkg.com/@types/har-format/-/har-format-1.2.4.tgz#3275842095abb60d14b47fa798cc9ff708dab6d4"
+ integrity
sha512-iUxzm1meBm3stxUMzRqgOVHjj4Kgpgu5w9fm4X7kPRfSgVRzythsucEN7/jtOo8SQzm+HfcxWWzJS0mJDH/3DQ==
+
"@types/json-schema@^7.0.4":
version "7.0.5"
resolved
"https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.5.tgz#dcce4430e64b443ba8945f0290fb564ad5bac6dd"
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [reclaim-ui] 356/459: Merge branch 'master' of gitlab.com:reclaimid/ui, (continued)
- [reclaim-ui] 356/459: Merge branch 'master' of gitlab.com:reclaimid/ui, gnunet, 2021/06/11
- [reclaim-ui] 335/459: add template, gnunet, 2021/06/11
- [reclaim-ui] 391/459: fix requested attribute, gnunet, 2021/06/11
- [reclaim-ui] 363/459: fix radio button, gnunet, 2021/06/11
- [reclaim-ui] 362/459: missing credential source, gnunet, 2021/06/11
- [reclaim-ui] 403/459: update state loading, gnunet, 2021/06/11
- [reclaim-ui] 361/459: authorization request dialog in identity list, gnunet, 2021/06/11
- [reclaim-ui] 370/459: build fix, gnunet, 2021/06/11
- [reclaim-ui] 364/459: fine tuning authorization, gnunet, 2021/06/11
- [reclaim-ui] 401/459: improve import logic and UI, gnunet, 2021/06/11
- [reclaim-ui] 320/459: works on chrome,
gnunet <=
- [reclaim-ui] 342/459: Translated using Weblate (German), gnunet, 2021/06/11
- [reclaim-ui] 349/459: fix translations, gnunet, 2021/06/11
- [reclaim-ui] 387/459: update, gnunet, 2021/06/11
- [reclaim-ui] 358/459: clean up, gnunet, 2021/06/11
- [reclaim-ui] 386/459: fix import for browser plugin, other import may be broken, gnunet, 2021/06/11
- [reclaim-ui] 394/459: fix default selection, gnunet, 2021/06/11
- [reclaim-ui] 369/459: add code for straight attribute import, gnunet, 2021/06/11
- [reclaim-ui] 407/459: use share icon, gnunet, 2021/06/11
- [reclaim-ui] 397/459: fix address handling, gnunet, 2021/06/11
- [reclaim-ui] 406/459: allow authorization from edit component, gnunet, 2021/06/11