mirror of
https://github.com/bitwarden/browser.git
synced 2024-12-25 16:59:17 +01:00
importers parse
This commit is contained in:
parent
154c087b97
commit
ce40a803d8
@ -50,15 +50,15 @@ export abstract class BaseImporter {
|
||||
const result = papa.parse(data, {
|
||||
header: header,
|
||||
encoding: 'UTF-8',
|
||||
skipEmptyLines: false,
|
||||
});
|
||||
if (result.errors != null && result.errors.length > 0) {
|
||||
result.errors.forEach((e) => {
|
||||
// tslint:disable-next-line
|
||||
console.warn('Error parsing row ' + e.row + ': ' + e.message);
|
||||
});
|
||||
return null;
|
||||
}
|
||||
return result.data;
|
||||
return result.data && result.data.length > 0 ? result.data : null;
|
||||
}
|
||||
|
||||
protected parseSingleRowCsv(rowData: string) {
|
||||
|
@ -14,7 +14,7 @@ import { FieldType } from '../enums/fieldType';
|
||||
import { SecureNoteType } from '../enums/secureNoteType';
|
||||
|
||||
export class BitwardenCsvImporter extends BaseImporter implements Importer {
|
||||
import(data: string): ImportResult {
|
||||
parse(data: string): ImportResult {
|
||||
const result = new ImportResult();
|
||||
const results = this.parseCsv(data, true);
|
||||
if (results == null) {
|
||||
@ -104,6 +104,7 @@ export class BitwardenCsvImporter extends BaseImporter implements Importer {
|
||||
}
|
||||
});
|
||||
|
||||
result.success = true;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
import { ImportResult } from '../models/domain/importResult';
|
||||
|
||||
export interface Importer {
|
||||
import(data: string): ImportResult;
|
||||
parse(data: string): ImportResult;
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ import { LoginView } from '../models/view/loginView';
|
||||
import { CipherType } from '../enums/cipherType';
|
||||
|
||||
export class KeePassXCsvImporter extends BaseImporter implements Importer {
|
||||
import(data: string): ImportResult {
|
||||
parse(data: string): ImportResult {
|
||||
const result = new ImportResult();
|
||||
const results = this.parseCsv(data, true);
|
||||
if (results == null) {
|
||||
@ -62,6 +62,7 @@ export class KeePassXCsvImporter extends BaseImporter implements Importer {
|
||||
}
|
||||
});
|
||||
|
||||
result.success = true;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ import { CipherType } from '../enums/cipherType';
|
||||
import { SecureNoteType } from '../enums/secureNoteType';
|
||||
|
||||
export class LastPassCsvImporter extends BaseImporter implements Importer {
|
||||
import(data: string): ImportResult {
|
||||
parse(data: string): ImportResult {
|
||||
const result = new ImportResult();
|
||||
const results = this.parseCsv(data, true);
|
||||
if (results == null) {
|
||||
@ -22,7 +22,7 @@ export class LastPassCsvImporter extends BaseImporter implements Importer {
|
||||
return result;
|
||||
}
|
||||
|
||||
results.forEach((value) => {
|
||||
results.forEach((value, index) => {
|
||||
let folderIndex = result.folders.length;
|
||||
const cipherIndex = result.ciphers.length;
|
||||
const hasFolder = this.getValueOrDefault(value.grouping, '(none)') !== '(none)';
|
||||
@ -39,6 +39,11 @@ export class LastPassCsvImporter extends BaseImporter implements Importer {
|
||||
}
|
||||
|
||||
const cipher = this.buildBaseCipher(value);
|
||||
if (cipher.name === '--' && results.length > 2 && index >= (results.length - 2)) {
|
||||
// LastPass file traditionally has two empty lines at the end
|
||||
return;
|
||||
}
|
||||
|
||||
if (cipher.type === CipherType.Login) {
|
||||
cipher.notes = this.getValueOrDefault(value.extra);
|
||||
cipher.login = new LoginView();
|
||||
@ -75,6 +80,7 @@ export class LastPassCsvImporter extends BaseImporter implements Importer {
|
||||
}
|
||||
});
|
||||
|
||||
result.success = true;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user