fix(import): LinkedIn Profile.csv parsing fixes

This commit is contained in:
Sergej Kasper
2024-01-15 10:43:32 +01:00
parent e1ec60af92
commit 45a936c05d
2 changed files with 23 additions and 10 deletions

View File

@ -11,7 +11,7 @@ import {
ResumeData,
resumeDataSchema,
} from "@reactive-resume/schema";
import { extractUrl, Json, parseCSV } from "@reactive-resume/utils";
import { extractUrl, Json, parseArrayLikeCSVEntry, parseCSV } from "@reactive-resume/utils";
import * as JSZip from "jszip";
import { Schema } from "zod";
@ -64,8 +64,12 @@ export class LinkedInParser implements Parser<JSZip, LinkedIn> {
result.basics.name = `${profile["First Name"]} ${profile["Last Name"]}`;
result.basics.location = profile["Geo Location"];
result.basics.headline = profile.Headline;
result.basics.url.href = extractUrl(profile.Websites) ?? "";
// profile.Websites is represented as an array-like structure f.e. [COMPANY:https://some.link,PORTFOLIO:...]
const extractFirstWebsiteLink = (entry: string) =>
(parseArrayLikeCSVEntry(entry)[0] ?? "").replace(/.*?:/, "");
result.basics.url.href = extractUrl(extractFirstWebsiteLink(profile.Websites)) ?? "";
result.sections.summary.content = profile.Summary;
if (twitterHandle) {
result.sections.profiles.items.push({
...defaultProfile,
id: createId(),
@ -75,6 +79,7 @@ export class LinkedInParser implements Parser<JSZip, LinkedIn> {
url: { ...defaultProfile.url, href: `https://twitter.com/${twitterHandle}` },
});
}
}
// Email Addresses
if (data["Email Addresses"] && data["Email Addresses"].length > 0) {

View File

@ -12,3 +12,11 @@ export const parseCSV = async (string: string) => {
});
});
};
/**
* Parser for cases when we receive an array like structure f.e. a in the LinkedIn Profile.csv import
* @param csvEntry array-like entry such as [TAG:https://some.link,TAG:https://someother.link]
* @returns
*/
export const parseArrayLikeCSVEntry = (csvEntry: string) =>
csvEntry.replace(/^\[/, "").replace(/$\]/, "").split(",");