Skip to content

Commit 3518e52

Browse files
authored
features/sync (#2)
* chore: version bump * build: set up github release from gren config * feat: github base api setup * feat(wip): setup add update gists service and settings * feat(wip): load remote gist
1 parent 862a8ba commit 3518e52

17 files changed

+312
-39
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
/dist
55
/tmp
66
/out-tsc
7+
src/environments/secrets.ts
78

89
# dependencies
910
/node_modules
@@ -34,6 +35,7 @@ npm-debug.log
3435
yarn-error.log
3536
testem.log
3637
/typings
38+
.env
3739

3840
# System Files
3941
.DS_Store

config/env.secrets.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { writeFile } from 'fs';
2+
import { argv } from 'yargs';
3+
4+
require('dotenv').config();
5+
6+
const targetPath = `./src/environments/secrets.ts`;
7+
const envConfigFile = `
8+
export const githubClientSecret= '${process.env.GITHUB_CLIENT_SECRET}';
9+
export const githubClientID= '${process.env.GITHUB_CLIENT_ID}';
10+
`;
11+
writeFile(targetPath, envConfigFile, function(err) {
12+
if (err) {
13+
console.log(err);
14+
}
15+
16+
console.log(`secrets file generated at ${targetPath}`);
17+
});

config/proxy.conf.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"/ghtoken/*": {
3+
"target": "https://github.com/login/oauth/access_token",
4+
"secure": false,
5+
"logLevel": "debug",
6+
"changeOrigin": true,
7+
"pathRewrite": { "^/ghtoken": "" }
8+
}
9+
}

package-lock.json

Lines changed: 32 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
"main": "main.js",
55
"scripts": {
66
"ng": "ng",
7-
"start": "ng serve",
7+
"config:secrets": "ts-node ./config/env.secrets.ts",
8+
"start":
9+
"npm run config:secrets && ng serve --proxy-config config/proxy.conf.json -o --host=0.0.0.0 --disable-host-check",
810
"build": "ng build",
911
"test": "ng test",
1012
"lint": "ng lint",
@@ -31,6 +33,8 @@
3133
"@angular/platform-browser-dynamic": "^6.0.0",
3234
"@angular/pwa": "^0.6.5",
3335
"@angular/router": "^6.0.0",
36+
"@angular/service-worker": "^6.0.0",
37+
"@auth0/angular-jwt": "^2.0.0",
3438
"@ctrl/tinycolor": "^2.0.0",
3539
"@ngxs/devtools-plugin": "^3.0.1",
3640
"@ngxs/store": "^3.0.1",
@@ -41,6 +45,7 @@
4145
"babel-polyfill": "^6.26.0",
4246
"bootstrap": "^4.1.1",
4347
"core-js": "^2.5.4",
48+
"deepmerge": "^2.1.1",
4449
"fuse.js": "^3.2.0",
4550
"gun": "^0.9.996",
4651
"keypress.js": "^2.1.5",
@@ -56,8 +61,7 @@
5661
"relational-pouch": "^3.0.1",
5762
"rxdb": "^7.6.0",
5863
"rxjs": "^6.0.0",
59-
"zone.js": "^0.8.26",
60-
"@angular/service-worker": "^6.0.0"
64+
"zone.js": "^0.8.26"
6165
},
6266
"devDependencies": {
6367
"@angular-devkit/build-angular": "~0.6.0",
@@ -72,6 +76,7 @@
7276
"@types/node": "~8.9.4",
7377
"@types/pouchdb": "^6.3.2",
7478
"codelyzer": "~4.2.1",
79+
"dotenv": "^5.0.1",
7580
"electron": "^2.0.2",
7681
"github-release-notes": "^0.15.0",
7782
"husky": "^0.14.3",

src/app/ink.component.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Component, OnInit, NgZone } from '@angular/core';
22
import { Store } from '@ngxs/store';
3-
import { ChangeView, LoadSettings } from './store/actions/settings.action';
3+
import { LoadSettings } from './store/actions/settings.action';
44
import { InkAppView, InkDb } from './models';
55
import { DBService } from './services/db.service';
66
import { tap } from 'rxjs/operators';
@@ -21,7 +21,9 @@ export class InkApp implements OnInit {
2121
}
2222
ngOnInit() {
2323
this._settingsService.setDefaultSettings().then((doc: any) => {
24-
if (doc) { this._store.dispatch(new LoadSettings(doc)); }
24+
if (doc) {
25+
this._store.dispatch(new LoadSettings(doc));
26+
}
2527
});
2628
}
2729
}

src/app/ink.module.ts

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import { NgModule } from '@angular/core';
22
import { FormsModule } from '@angular/forms';
3+
import { HttpClientModule } from '@angular/common/http';
34
import { BrowserModule } from '@angular/platform-browser';
45
import { NgxsModule } from '@ngxs/store';
6+
import { JwtModule } from '@auth0/angular-jwt';
57
import { ClipboardModule } from 'ngx-clipboard';
68
import { NgxsReduxDevtoolsPluginModule } from '@ngxs/devtools-plugin';
79
import {
@@ -20,21 +22,34 @@ import { RoutingModule } from './ink.routing';
2022
import { HomePage } from './pages/home/home.component';
2123
import { SettingsPage } from './pages/settings/settings.component';
2224
import { ExportPage } from './pages/export/export.component';
25+
import { RedirectPage } from './pages/redirect/redirect.component';
2326
import { SettingsState, BucketState, BoardState, InkState } from './store/states';
2427
import { ColorModule } from './modules/color/color.module';
2528

2629
import { OverlayModule } from '@angular/cdk/overlay';
2730
import { ServiceWorkerModule } from '@angular/service-worker';
2831
import { environment } from '../environments/environment';
2932

33+
export function tokenGetter() {
34+
return localStorage.getItem('inkapp_access_token');
35+
}
36+
3037
export const MODULES = [
38+
BrowserModule,
3139
RoutingModule,
40+
HttpClientModule,
3241
FormsModule,
3342
NgxsModule.forRoot([SettingsState, BucketState, BoardState, InkState]),
3443
NgxsReduxDevtoolsPluginModule.forRoot(),
3544
ColorModule,
3645
ClipboardModule,
37-
OverlayModule
46+
OverlayModule,
47+
JwtModule.forRoot({
48+
config: {
49+
tokenGetter: tokenGetter,
50+
whitelistedDomains: ['github.com']
51+
}
52+
})
3853
];
3954
export const COMPONENTS = [
4055
InkApp,
@@ -48,11 +63,11 @@ export const COMPONENTS = [
4863
MagicTitleComponent,
4964
SettingsItemComponent
5065
];
51-
export const PAGES = [HomePage, SettingsPage, ExportPage];
66+
export const PAGES = [HomePage, SettingsPage, ExportPage, RedirectPage];
5267

5368
@NgModule({
5469
declarations: [...COMPONENTS, ...PAGES, SettingsItemComponent],
55-
imports: [BrowserModule, ...MODULES, ServiceWorkerModule.register('/ngsw-worker.js', { enabled: environment.production })],
70+
imports: [...MODULES, ServiceWorkerModule.register('/ngsw-worker.js', { enabled: environment.production })],
5671
providers: [],
5772
bootstrap: [InkApp]
5873
})

src/app/ink.routing.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@ import { Routes, RouterModule } from '@angular/router';
44
import { HomePage } from './pages/home/home.component';
55
import { SettingsPage } from './pages/settings/settings.component';
66
import { ExportPage } from './pages/export/export.component';
7+
import { RedirectPage } from './pages/redirect/redirect.component';
78

89
const routes: Routes = [
910
{ path: '', component: HomePage },
1011
{ path: 'settings', component: SettingsPage },
11-
{ path: 'export', component: ExportPage }
12+
{ path: 'export', component: ExportPage },
13+
{ path: 'redirect', component: RedirectPage }
1214
];
1315

1416
@NgModule({
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { Component, OnInit } from '@angular/core';
2+
import { Router, ActivatedRoute, Params } from '@angular/router';
3+
import { GithubService } from '../../services/github.service';
4+
5+
@Component({
6+
selector: 'inkapp-redirect',
7+
template: 'Redirecting...'
8+
})
9+
export class RedirectPage implements OnInit {
10+
params: Params = {};
11+
constructor(private _router: Router, private _route: ActivatedRoute, private _githubService: GithubService) {
12+
this.params = this._route.snapshot.queryParams;
13+
}
14+
15+
ngOnInit() {
16+
if (this.params.error) {
17+
console.error('Error!', this.params.error);
18+
}
19+
this._githubService.getToken(this.params.code, this.params.state).subscribe((res: any) => {
20+
const data = res
21+
.split('&')
22+
.map(s => s.split('='))
23+
.map(d => ({ [d[0]]: d[1] }));
24+
localStorage.setItem('inkapp_access_token', data[0].access_token);
25+
this._router.navigateByUrl('/settings');
26+
});
27+
}
28+
}

0 commit comments

Comments
 (0)