Merge branch 'master' into soft-delete

This commit is contained in:
Chad Scharf 2020-05-08 09:20:35 -04:00
commit 40ffda4da4
10 changed files with 42 additions and 17 deletions

2
jslib

@ -1 +1 @@
Subproject commit e9db844285e21525f5152e782063f04e02543553 Subproject commit 0092aac275e8efca66838a8c266eec1d455883aa

6
package-lock.json generated
View File

@ -904,9 +904,9 @@
"dev": true "dev": true
}, },
"@types/lunr": { "@types/lunr": {
"version": "2.1.6", "version": "2.3.3",
"resolved": "https://registry.npmjs.org/@types/lunr/-/lunr-2.1.6.tgz", "resolved": "https://registry.npmjs.org/@types/lunr/-/lunr-2.3.3.tgz",
"integrity": "sha512-Bz6fUhX1llTa7ygQJN3ttoVkkrpW7xxSEP7D7OYFO/FCBKqKqruRUZtJzTtYA0GkQX13lxU5u+8LuCviJlAXkQ==", "integrity": "sha512-09sXZZVsB3Ib41U0fC+O1O+4UOZT1bl/e+/QubPxpqDWHNEchvx/DEb1KJMOwq6K3MTNzZFoNSzVdR++o1DVnw==",
"dev": true "dev": true
}, },
"@types/mousetrap": { "@types/mousetrap": {

View File

@ -28,7 +28,7 @@
"@ngtools/webpack": "^7.2.2", "@ngtools/webpack": "^7.2.2",
"@types/chrome": "^0.0.73", "@types/chrome": "^0.0.73",
"@types/jasmine": "^3.3.12", "@types/jasmine": "^3.3.12",
"@types/lunr": "^2.1.6", "@types/lunr": "^2.3.3",
"@types/mousetrap": "^1.6.0", "@types/mousetrap": "^1.6.0",
"@types/node-forge": "^0.7.5", "@types/node-forge": "^0.7.5",
"@types/papaparse": "^4.5.3", "@types/papaparse": "^4.5.3",

View File

@ -1282,5 +1282,11 @@
}, },
"restoredItem": { "restoredItem": {
"message": "Restored Item" "message": "Restored Item"
},
"vaultTimeoutLogOutConfirmation": {
"message": "Logging out will remove all access to your vault and requires online authentication after the timeout period. Are you sure you want to use this setting?"
},
"vaultTimeoutLogOutConfirmationTitle": {
"message": "Timeout Action Confirmation"
} }
} }

View File

@ -15,7 +15,7 @@ table {
.outter-table > tbody > tr > td { .outter-table > tbody > tr > td {
padding: 0 0 0 10px; padding: 0 0 0 10px;
border-bottom: 2px solid #3c8dbc; border-bottom: 2px solid #175DDC;
height: 40px; height: 40px;
} }
@ -56,7 +56,7 @@ img {
} }
button:not(.link) { button:not(.link) {
background-color: #3c8dbc; background-color: #175DDC;
padding: 5px 15px; padding: 5px 15px;
border-radius: 3px; border-radius: 3px;
color: #ffffff; color: #ffffff;
@ -65,13 +65,13 @@ button:not(.link) {
button:not(.link):hover { button:not(.link):hover {
cursor: pointer; cursor: pointer;
background-color: #3681ad; background-color: #1751bd;
} }
button.link { button.link {
background: none; background: none;
padding: 5px 15px; padding: 5px 15px;
color: #3c8dbc; color: #175DDC;
border: 0; border: 0;
} }

View File

@ -17,15 +17,14 @@ $gray: #555;
$gray-light: #777; $gray-light: #777;
$text-muted: $gray-light; $text-muted: $gray-light;
$brand-primary: #3c8dbc; $brand-primary: #175DDC;
$brand-danger: #dd4b39; $brand-danger: #dd4b39;
$brand-success: #00a65a; $brand-success: #00a65a;
$brand-info: #555555; $brand-info: #555555;
$brand-warning: #bf7e16; $brand-warning: #bf7e16;
$brand-primary-accent: #286090; $brand-primary-accent: #1252A3;
$background-color: #efeff4; $background-color: #f0f0f0;
$background-color-alt: #ecf0f5;
$box-background-color: white; $box-background-color: white;
$box-background-hover-color: $list-item-hover; $box-background-hover-color: $list-item-hover;

View File

@ -33,8 +33,8 @@
</div> </div>
<div class="box-content-row display-block" appBoxRow> <div class="box-content-row display-block" appBoxRow>
<label for="vaultTimeoutAction">{{'vaultTimeoutAction' | i18n}}</label> <label for="vaultTimeoutAction">{{'vaultTimeoutAction' | i18n}}</label>
<select id="vaultTimeoutAction" name="VaultTimeoutActions" [ngModel]="vaultTimeoutAction" <select #vaultTimeoutActionSelect id="vaultTimeoutAction" name="VaultTimeoutActions"
(ngModelChange)="saveVaultTimeoutAction($event)"> [ngModel]="vaultTimeoutAction" (ngModelChange)="saveVaultTimeoutAction($event)">
<option *ngFor="let o of vaultTimeoutActions" [ngValue]="o.value">{{o.name}}</option> <option *ngFor="let o of vaultTimeoutActions" [ngValue]="o.value">{{o.name}}</option>
</select> </select>
</div> </div>

View File

@ -45,6 +45,7 @@ const RateUrls = {
}) })
export class SettingsComponent implements OnInit { export class SettingsComponent implements OnInit {
@ViewChild('vaultTimeoutSelect', { read: ElementRef }) vaultTimeoutSelectRef: ElementRef; @ViewChild('vaultTimeoutSelect', { read: ElementRef }) vaultTimeoutSelectRef: ElementRef;
@ViewChild('vaultTimeoutActionSelect', { read: ElementRef }) vaultTimeoutActionSelectRef: ElementRef;
vaultTimeouts: any[]; vaultTimeouts: any[];
vaultTimeout: number = null; vaultTimeout: number = null;
vaultTimeoutActions: any[]; vaultTimeoutActions: any[];
@ -126,6 +127,20 @@ export class SettingsComponent implements OnInit {
} }
async saveVaultTimeoutAction(newValue: string) { async saveVaultTimeoutAction(newValue: string) {
if (newValue === 'logOut') {
const confirmed = await this.platformUtilsService.showDialog(
this.i18nService.t('vaultTimeoutLogOutConfirmation'),
this.i18nService.t('vaultTimeoutLogOutConfirmationTitle'),
this.i18nService.t('yes'), this.i18nService.t('cancel'), 'warning');
if (!confirmed) {
this.vaultTimeoutActions.forEach((option: any, i) => {
if (option.value === this.vaultTimeoutAction) {
this.vaultTimeoutActionSelectRef.nativeElement.value = i + ': ' + this.vaultTimeoutAction;
}
});
return;
}
}
this.vaultTimeoutAction = newValue; this.vaultTimeoutAction = newValue;
await this.vaultTimeoutService.setVaultTimeoutOptions(this.vaultTimeout != null ? this.vaultTimeout : null, await this.vaultTimeoutService.setVaultTimeoutOptions(this.vaultTimeout != null ? this.vaultTimeout : null,
this.vaultTimeoutAction); this.vaultTimeoutAction);

View File

@ -10,7 +10,5 @@
<true/> <true/>
<key>com.apple.security.network.server</key> <key>com.apple.security.network.server</key>
<true/> <true/>
<key>com.apple.security.automation.apple-events</key>
<true/>
</dict> </dict>
</plist> </plist>

View File

@ -43,6 +43,10 @@ const MonthAbbr = ['mm', 'mm', 'mm', 'mm', 'mm', 'mm'];
const YearAbbrShort = ['yy', 'åå', 'jj', 'aa', 'гг', 'rr']; const YearAbbrShort = ['yy', 'åå', 'jj', 'aa', 'гг', 'rr'];
const YearAbbrLong = ['yyyy', 'åååå', 'jjjj', 'aa', 'гггг', 'rrrr']; const YearAbbrLong = ['yyyy', 'åååå', 'jjjj', 'aa', 'гггг', 'rrrr'];
const OperationDelays = new Map<string, number>([
['buzzsprout.com', 100],
]);
/* tslint:disable */ /* tslint:disable */
const IsoCountries: { [id: string]: string; } = { const IsoCountries: { [id: string]: string; } = {
afghanistan: "AF", "aland islands": "AX", albania: "AL", algeria: "DZ", "american samoa": "AS", andorra: "AD", afghanistan: "AF", "aland islands": "AX", albania: "AL", algeria: "DZ", "american samoa": "AS", andorra: "AD",
@ -174,6 +178,9 @@ export default class AutofillService implements AutofillServiceInterface {
return; return;
} }
// Add a small delay between operations
fillScript.properties.delay_between_operations = 20;
didAutofill = true; didAutofill = true;
if (!options.skipLastUsed) { if (!options.skipLastUsed) {
this.cipherService.updateLastUsedDate(options.cipher.id); this.cipherService.updateLastUsedDate(options.cipher.id);