forked from Archives/Athou_commafeed
113 lines
3.3 KiB
TypeScript
113 lines
3.3 KiB
TypeScript
import { t } from "@lingui/macro"
|
|
import type { IconType } from "react-icons"
|
|
import { FaAt } from "react-icons/fa"
|
|
import { SiBuffer, SiFacebook, SiGmail, SiInstapaper, SiPocket, SiTumblr, SiTwitter } from "react-icons/si"
|
|
import type { Category, Entry, SharingSettings } from "./types"
|
|
|
|
const categories: Record<string, Category> = {
|
|
all: {
|
|
id: "all",
|
|
name: t`All`,
|
|
expanded: false,
|
|
children: [],
|
|
feeds: [],
|
|
position: 0,
|
|
},
|
|
starred: {
|
|
id: "starred",
|
|
name: t`Starred`,
|
|
expanded: false,
|
|
children: [],
|
|
feeds: [],
|
|
position: 1,
|
|
},
|
|
}
|
|
|
|
const sharing: {
|
|
[key in keyof SharingSettings]: {
|
|
label: string
|
|
icon: IconType
|
|
color: `#${string}`
|
|
url: (url: string, description: string) => string
|
|
}
|
|
} = {
|
|
email: {
|
|
label: "Email",
|
|
icon: FaAt,
|
|
color: "#000000",
|
|
url: (url, desc) => `mailto:?subject=${desc}&body=${url}`,
|
|
},
|
|
gmail: {
|
|
label: "Gmail",
|
|
icon: SiGmail,
|
|
color: "#EA4335",
|
|
url: (url, desc) => `https://mail.google.com/mail/?view=cm&fs=1&tf=1&source=mailto&su=${desc}&body=${url}`,
|
|
},
|
|
facebook: {
|
|
label: "Facebook",
|
|
icon: SiFacebook,
|
|
color: "#1B74E4",
|
|
url: url => `https://www.facebook.com/sharer/sharer.php?u=${url}`,
|
|
},
|
|
twitter: {
|
|
label: "Twitter",
|
|
icon: SiTwitter,
|
|
color: "#1D9BF0",
|
|
url: (url, desc) => `https://twitter.com/share?text=${desc}&url=${url}`,
|
|
},
|
|
tumblr: {
|
|
label: "Tumblr",
|
|
icon: SiTumblr,
|
|
color: "#375672",
|
|
url: (url, desc) => `https://www.tumblr.com/share/link?url=${url}&name=${desc}`,
|
|
},
|
|
pocket: {
|
|
label: "Pocket",
|
|
icon: SiPocket,
|
|
color: "#EF4154",
|
|
url: (url, desc) => `https://getpocket.com/save?url=${url}&title=${desc}`,
|
|
},
|
|
instapaper: {
|
|
label: "Instapaper",
|
|
icon: SiInstapaper,
|
|
color: "#010101",
|
|
url: (url, desc) => `https://www.instapaper.com/hello2?url=${url}&title=${desc}`,
|
|
},
|
|
buffer: {
|
|
label: "Buffer",
|
|
icon: SiBuffer,
|
|
color: "#000000",
|
|
url: (url, desc) => `https://bufferapp.com/add?url=${url}&text=${desc}`,
|
|
},
|
|
}
|
|
|
|
export const Constants = {
|
|
categories,
|
|
sharing,
|
|
layout: {
|
|
mobileBreakpoint: 992,
|
|
mobileBreakpointName: "md",
|
|
headerHeight: 60,
|
|
entryMaxWidth: 650,
|
|
isTopVisible: (div: HTMLElement) => {
|
|
const header = document.getElementById(Constants.dom.headerId)?.getBoundingClientRect()
|
|
return div.getBoundingClientRect().top >= (header?.bottom ?? 0)
|
|
},
|
|
isBottomVisible: (div: HTMLElement) => {
|
|
const footer = document.getElementById(Constants.dom.footerId)?.getBoundingClientRect()
|
|
return div.getBoundingClientRect().bottom <= (footer?.top ?? window.innerHeight)
|
|
},
|
|
},
|
|
dom: {
|
|
headerId: "header",
|
|
footerId: "footer",
|
|
entryId: (entry: Entry) => `entry-id-${entry.id}`,
|
|
entryContextMenuId: (entry: Entry) => entry.id,
|
|
},
|
|
tooltip: {
|
|
delay: 500,
|
|
},
|
|
browserExtensionUrl: "https://github.com/Athou/commafeed-browser-extension",
|
|
bitcoinWalletAddress: "1dymfUxqCWpyD7a6rQSqNy4rLVDBsAr5e",
|
|
}
|