mirror of
https://github.com/mastermindzh/rickvanlieshout.com
synced 2025-08-02 23:52:36 +02:00
refactor(starter): upgrade to new version of gatsby
This commit is contained in:
@@ -1,59 +0,0 @@
|
||||
// @flow strict
|
||||
const getContactHref = (name: string, contact: string) => {
|
||||
let href;
|
||||
|
||||
switch (name) {
|
||||
case 'twitter':
|
||||
href = `https://www.twitter.com/${contact}`;
|
||||
break;
|
||||
case 'github':
|
||||
href = `https://github.com/${contact}`;
|
||||
break;
|
||||
case 'vkontakte':
|
||||
href = `https://vk.com/${contact}`;
|
||||
break;
|
||||
case 'telegram':
|
||||
href = `https://t.me/${contact}`;
|
||||
break;
|
||||
case 'email':
|
||||
href = `mailto:${contact}`;
|
||||
break;
|
||||
case 'linkedin':
|
||||
href = `https://www.linkedin.com/in/${contact}`;
|
||||
break;
|
||||
case 'instagram':
|
||||
href = `https://www.instagram.com/${contact}`;
|
||||
break;
|
||||
case 'line':
|
||||
href = `line://ti/p/${contact}`;
|
||||
break;
|
||||
case 'facebook':
|
||||
href = `https://www.facebook.com/${contact}`;
|
||||
break;
|
||||
case 'gitlab':
|
||||
href = `https://www.gitlab.com/${contact}`;
|
||||
break;
|
||||
case 'weibo':
|
||||
href = `https://www.weibo.com/${contact}`;
|
||||
break;
|
||||
case 'codepen':
|
||||
href = `https://www.codepen.io/${contact}`;
|
||||
break;
|
||||
case 'youtube':
|
||||
href = `https://www.youtube.com/channel/${contact}`;
|
||||
break;
|
||||
case 'soundcloud':
|
||||
href = `https://soundcloud.com/${contact}`;
|
||||
break;
|
||||
case 'medium':
|
||||
href = `https://medium.com/${contact}`;
|
||||
break;
|
||||
default:
|
||||
href = contact;
|
||||
break;
|
||||
}
|
||||
|
||||
return href;
|
||||
};
|
||||
|
||||
export default getContactHref;
|
@@ -1,21 +0,0 @@
|
||||
// @flow strict
|
||||
import getContactHref from './get-contact-href';
|
||||
|
||||
test('getContactHref', () => {
|
||||
expect(getContactHref('twitter', '#')).toBe('https://www.twitter.com/#');
|
||||
expect(getContactHref('github', '#')).toBe('https://github.com/#');
|
||||
expect(getContactHref('email', '#')).toBe('mailto:#');
|
||||
expect(getContactHref('vkontakte', '#')).toBe('https://vk.com/#');
|
||||
expect(getContactHref('telegram', '#')).toBe('https://t.me/#');
|
||||
expect(getContactHref('rss', '#')).toBe('#');
|
||||
expect(getContactHref('linkedin', '#')).toBe('https://www.linkedin.com/in/#');
|
||||
expect(getContactHref('instagram', '#')).toBe('https://www.instagram.com/#');
|
||||
expect(getContactHref('line', '#')).toBe('line://ti/p/#');
|
||||
expect(getContactHref('facebook', '#')).toBe('https://www.facebook.com/#');
|
||||
expect(getContactHref('gitlab', '#')).toBe('https://www.gitlab.com/#');
|
||||
expect(getContactHref('weibo', '#')).toBe('https://www.weibo.com/#');
|
||||
expect(getContactHref('codepen', '#')).toBe('https://www.codepen.io/#');
|
||||
expect(getContactHref('youtube', '#')).toBe('https://www.youtube.com/channel/#');
|
||||
expect(getContactHref('soundcloud', '#')).toBe('https://soundcloud.com/#');
|
||||
expect(getContactHref('medium', '#')).toBe('https://medium.com/#');
|
||||
});
|
19
src/utils/get-contact-href.test.ts
Normal file
19
src/utils/get-contact-href.test.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import getContactHref from "./get-contact-href";
|
||||
|
||||
test("getContactHref", () => {
|
||||
expect(getContactHref("rss", "#")).toBe("#");
|
||||
expect(getContactHref("email", "#")).toBe("mailto:#");
|
||||
expect(getContactHref("line", "#")).toBe("line://ti/p/#");
|
||||
expect(getContactHref("telegram", "#")).toBe("https://t.me/#");
|
||||
expect(getContactHref("vkontakte", "#")).toBe("https://vk.com/#");
|
||||
expect(getContactHref("medium", "#")).toBe("https://medium.com/#");
|
||||
expect(getContactHref("github", "#")).toBe("https://github.com/#");
|
||||
expect(getContactHref("weibo", "#")).toBe("https://www.weibo.com/#");
|
||||
expect(getContactHref("gitlab", "#")).toBe("https://www.gitlab.com/#");
|
||||
expect(getContactHref("codepen", "#")).toBe("https://www.codepen.io/#");
|
||||
expect(getContactHref("twitter", "#")).toBe("https://www.twitter.com/#");
|
||||
expect(getContactHref("facebook", "#")).toBe("https://www.facebook.com/#");
|
||||
expect(getContactHref("soundcloud", "#")).toBe("https://soundcloud.com/#");
|
||||
expect(getContactHref("instagram", "#")).toBe("https://www.instagram.com/#");
|
||||
expect(getContactHref("linkedin", "#")).toBe("https://www.linkedin.com/in/#");
|
||||
});
|
23
src/utils/get-contact-href.ts
Normal file
23
src/utils/get-contact-href.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
const getContactHref = (name: string, contact: string) => {
|
||||
const hrefs: { [key: string]: string } = {
|
||||
email: `mailto:${contact}`,
|
||||
line: `line://ti/p/${contact}`,
|
||||
telegram: `https://t.me/${contact}`,
|
||||
vkontakte: `https://vk.com/${contact}`,
|
||||
medium: `https://medium.com/${contact}`,
|
||||
github: `https://github.com/${contact}`,
|
||||
weibo: `https://www.weibo.com/${contact}`,
|
||||
gitlab: `https://www.gitlab.com/${contact}`,
|
||||
codepen: `https://www.codepen.io/${contact}`,
|
||||
twitter: `https://www.twitter.com/${contact}`,
|
||||
soundcloud: `https://soundcloud.com/${contact}`,
|
||||
facebook: `https://www.facebook.com/${contact}`,
|
||||
instagram: `https://www.instagram.com/${contact}`,
|
||||
linkedin: `https://www.linkedin.com/in/${contact}`,
|
||||
youtube: `https://www.youtube.com/channel/${contact}`,
|
||||
};
|
||||
|
||||
return hrefs[name] ?? contact;
|
||||
};
|
||||
|
||||
export default getContactHref;
|
@@ -1,22 +0,0 @@
|
||||
// @flow strict
|
||||
import getIcon from './get-icon';
|
||||
import { ICONS } from '../constants';
|
||||
|
||||
test('getIcon', () => {
|
||||
expect(getIcon('twitter')).toBe(ICONS.TWITTER);
|
||||
expect(getIcon('github')).toBe(ICONS.GITHUB);
|
||||
expect(getIcon('vkontakte')).toBe(ICONS.VKONTAKTE);
|
||||
expect(getIcon('telegram')).toEqual(ICONS.TELEGRAM);
|
||||
expect(getIcon('email')).toEqual(ICONS.EMAIL);
|
||||
expect(getIcon('rss')).toEqual(ICONS.RSS);
|
||||
expect(getIcon('linkedin')).toEqual(ICONS.LINKEDIN);
|
||||
expect(getIcon('instagram')).toEqual(ICONS.INSTAGRAM);
|
||||
expect(getIcon('line')).toEqual(ICONS.LINE);
|
||||
expect(getIcon('facebook')).toEqual(ICONS.FACEBOOK);
|
||||
expect(getIcon('gitlab')).toEqual(ICONS.GITLAB);
|
||||
expect(getIcon('weibo')).toEqual(ICONS.WEIBO);
|
||||
expect(getIcon('codepen')).toEqual(ICONS.CODEPEN);
|
||||
expect(getIcon('youtube')).toEqual(ICONS.YOUTUBE);
|
||||
expect(getIcon('soundcloud')).toEqual(ICONS.SOUNDCLOUD);
|
||||
expect(getIcon('medium')).toEqual(ICONS.MEDIUM);
|
||||
});
|
21
src/utils/get-icon.test.ts
Normal file
21
src/utils/get-icon.test.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
import { ICONS } from "@/constants";
|
||||
import { getIcon } from "@/utils";
|
||||
|
||||
test("getIcon", () => {
|
||||
expect(getIcon("rss")).toEqual(ICONS.RSS);
|
||||
expect(getIcon("line")).toEqual(ICONS.LINE);
|
||||
expect(getIcon("github")).toBe(ICONS.GITHUB);
|
||||
expect(getIcon("email")).toEqual(ICONS.EMAIL);
|
||||
expect(getIcon("weibo")).toEqual(ICONS.WEIBO);
|
||||
expect(getIcon("twitter")).toBe(ICONS.TWITTER);
|
||||
expect(getIcon("gitlab")).toEqual(ICONS.GITLAB);
|
||||
expect(getIcon("medium")).toEqual(ICONS.MEDIUM);
|
||||
expect(getIcon("codepen")).toEqual(ICONS.CODEPEN);
|
||||
expect(getIcon("youtube")).toEqual(ICONS.YOUTUBE);
|
||||
expect(getIcon("vkontakte")).toBe(ICONS.VKONTAKTE);
|
||||
expect(getIcon("facebook")).toEqual(ICONS.FACEBOOK);
|
||||
expect(getIcon("telegram")).toEqual(ICONS.TELEGRAM);
|
||||
expect(getIcon("linkedin")).toEqual(ICONS.LINKEDIN);
|
||||
expect(getIcon("instagram")).toEqual(ICONS.INSTAGRAM);
|
||||
expect(getIcon("soundcloud")).toEqual(ICONS.SOUNDCLOUD);
|
||||
});
|
@@ -1,56 +1,55 @@
|
||||
// @flow strict
|
||||
import { ICONS } from '../constants';
|
||||
import { ICONS } from "../constants";
|
||||
|
||||
const getIcon = (name: string) => {
|
||||
let icon;
|
||||
|
||||
switch (name) {
|
||||
case 'twitter':
|
||||
case "twitter":
|
||||
icon = ICONS.TWITTER;
|
||||
break;
|
||||
case 'github':
|
||||
case "github":
|
||||
icon = ICONS.GITHUB;
|
||||
break;
|
||||
case 'vkontakte':
|
||||
case "vkontakte":
|
||||
icon = ICONS.VKONTAKTE;
|
||||
break;
|
||||
case 'telegram':
|
||||
case "telegram":
|
||||
icon = ICONS.TELEGRAM;
|
||||
break;
|
||||
case 'email':
|
||||
case "email":
|
||||
icon = ICONS.EMAIL;
|
||||
break;
|
||||
case 'rss':
|
||||
case "rss":
|
||||
icon = ICONS.RSS;
|
||||
break;
|
||||
case 'linkedin':
|
||||
case "linkedin":
|
||||
icon = ICONS.LINKEDIN;
|
||||
break;
|
||||
case 'instagram':
|
||||
case "instagram":
|
||||
icon = ICONS.INSTAGRAM;
|
||||
break;
|
||||
case 'line':
|
||||
case "line":
|
||||
icon = ICONS.LINE;
|
||||
break;
|
||||
case 'facebook':
|
||||
case "facebook":
|
||||
icon = ICONS.FACEBOOK;
|
||||
break;
|
||||
case 'gitlab':
|
||||
case "gitlab":
|
||||
icon = ICONS.GITLAB;
|
||||
break;
|
||||
case 'weibo':
|
||||
case "weibo":
|
||||
icon = ICONS.WEIBO;
|
||||
break;
|
||||
case 'codepen':
|
||||
case "codepen":
|
||||
icon = ICONS.CODEPEN;
|
||||
break;
|
||||
case 'youtube':
|
||||
case "youtube":
|
||||
icon = ICONS.YOUTUBE;
|
||||
break;
|
||||
case 'soundcloud':
|
||||
case "soundcloud":
|
||||
icon = ICONS.SOUNDCLOUD;
|
||||
break;
|
||||
case 'medium':
|
||||
case "medium":
|
||||
icon = ICONS.MEDIUM;
|
||||
break;
|
||||
default:
|
@@ -1,3 +0,0 @@
|
||||
// @flow strict
|
||||
export { default as getIcon } from './get-icon';
|
||||
export { default as getContactHref } from './get-contact-href';
|
3
src/utils/index.ts
Normal file
3
src/utils/index.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
export { default as getIcon } from "./get-icon";
|
||||
export { default as getContactHref } from "./get-contact-href";
|
||||
export { default as toKebabCase } from "./to-kebab-case";
|
10
src/utils/to-kebab-case.test.ts
Normal file
10
src/utils/to-kebab-case.test.ts
Normal file
@@ -0,0 +1,10 @@
|
||||
import toKebabCase from "./to-kebab-case";
|
||||
|
||||
test("toKebabCase", () => {
|
||||
expect(toKebabCase()).toBe("");
|
||||
expect(toKebabCase("lorEm")).toBe("lorem");
|
||||
expect(toKebabCase("lorem ipsum")).toBe("lorem-ipsum");
|
||||
expect(toKebabCase("lorem_ipsum")).toBe("lorem-ipsum");
|
||||
expect(toKebabCase("lorem #ipsum")).toBe("lorem-ipsum");
|
||||
expect(toKebabCase("Lorem Ipsum Dolor")).toBe("lorem-ipsum-dolor");
|
||||
});
|
6
src/utils/to-kebab-case.ts
Normal file
6
src/utils/to-kebab-case.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
const toKebabCase = (str: string = ""): string => str.toLowerCase()
|
||||
.replace(/[^\w\s]/gi, "")
|
||||
.split(" ").join("-")
|
||||
.split("_").join("-");
|
||||
|
||||
export default toKebabCase;
|
Reference in New Issue
Block a user