Skip to content

Commit 0d8c53d

Browse files
committedAug 3, 2022
feat: REPOSITORY CONFIGURABLE VIA URL ?repo=
1 parent 9d3191a commit 0d8c53d

File tree

6 files changed

+18
-4
lines changed

6 files changed

+18
-4
lines changed
 

‎README.md

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Notes saved in your private Github repository.
55
## Features
66

77
- [Configurable](https://pensieve.amatiasq.com/settings) for settings and shortcuts (`CMD+,`)
8+
- use [`?repo=` query parameter](https://pensieve.amatiasq.com/?repo=my-repository) to change the private Github (default `pensieve-data`).
89
- Installable from Chrome. This is required for some shortcuts to work
910
- Works offline for notes opened in the past
1011

‎src/3-github/gh-utils.ts

+9
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1+
import { Note } from '../2-entities/Note';
12
import { GithubToken } from './GithubAuth';
3+
import { GithubUsername } from './models/GHApiUser';
24

35
const GH_API = 'https://api.github.com';
46

@@ -11,3 +13,10 @@ export function ghUrl(path: string) {
1113
export function ghAuthHeaders(token: GithubToken) {
1214
return { Authorization: `token ${token}` };
1315
}
16+
17+
export function ghPublicPage(username: GithubUsername, note: Note) {
18+
return `https://github.com/${username}/pensieve-data/blob/main/note/${note.id}`;
19+
}
20+
21+
export const ghRepository =
22+
new URLSearchParams(location.search).get('repo') || 'pensieve-data';

‎src/4-storage/AppStorage.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1+
import { GithubUsername } from '../3-github/models/GHApiUser';
12
import { NotesStorage } from './NotesStorage';
23

34
export class AppStorage extends NotesStorage {
45
constructor(
5-
readonly username: string,
6+
readonly username: GithubUsername,
67
...rest: ConstructorParameters<typeof NotesStorage>
78
) {
89
super(...rest);

‎src/4-storage/index.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import localforage from 'localforage';
22
import { GHRepository } from '../3-github/GHRepository';
33
import { GithubToken } from '../3-github/GithubAuth';
4+
import { GithubUsername } from '../3-github/models/GHApiUser';
45
import { AppStorage } from './AppStorage';
56
import { CachedStore } from './middleware/CachedStore';
67
import { ForageStore } from './middleware/ForageStore';
@@ -12,7 +13,7 @@ Object.assign(window, { localforage });
1213

1314
export async function createStore(
1415
token: GithubToken,
15-
username: string,
16+
username: GithubUsername,
1617
repoName: string,
1718
) {
1819
const repo = new GHRepository(token, username, repoName);

‎src/5-app/renderApp.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { Global } from '@emotion/react';
22
import { useEffect, useState } from 'react';
33
import { render } from 'react-dom';
44
import { BrowserRouter } from 'react-router-dom';
5+
import { ghRepository } from '../3-github/gh-utils';
56
import { createStore } from '../4-storage';
67
import { AppStorage } from '../4-storage/AppStorage';
78
import { Loader } from '../7-components/atoms/Loader';
@@ -20,7 +21,7 @@ function Scaffold() {
2021

2122
useEffect(() => {
2223
if (!token || !username) return;
23-
createStore(token, username, 'pensieve-data').then(setStore);
24+
createStore(token, username, ghRepository).then(setStore);
2425
}, [token]);
2526

2627
if (!store) {

‎src/7-components/NotesList/NoteActions.tsx

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import styled from '@emotion/styled';
33
import { Menu, MenuItem } from '@szhsin/react-menu';
44
import { ButtonHTMLAttributes, useCallback } from 'react';
55
import { NoteId } from '../../2-entities/Note';
6+
import { ghPublicPage } from '../../3-github/gh-utils';
67
import { useNavigator } from '../../6-hooks/useNavigator';
78
import { useNote } from '../../6-hooks/useNote';
89
import { useUsername } from '../../6-hooks/useUsername';
@@ -78,7 +79,7 @@ export function NoteActions({ id, ...divProps }: NoteActionsProps) {
7879

7980
if (!note) return null;
8081

81-
const githubUrl = `https://github.com/${username}/pensieve-data/blob/main/note/${note.id}`;
82+
const githubUrl = ghPublicPage(username, note);
8283
const button = <IconButton {...divProps} icon={<MenuIcon title="asdf" />} />;
8384

8485
return (

0 commit comments

Comments
 (0)
Please sign in to comment.