Use momentum to host
This commit is contained in:
12
Dockerfile
12
Dockerfile
@@ -20,11 +20,7 @@ RUN if [ ! -d "dist" ] && [ ! -d "node_modules" ]; then npm install; fi
|
|||||||
RUN BUILD_MODE=$([ "$NODE_ENV" = "prod" ] && echo "prod" || echo "dev") && \
|
RUN BUILD_MODE=$([ "$NODE_ENV" = "prod" ] && echo "prod" || echo "dev") && \
|
||||||
if [ ! -d "dist" ]; then npm run "build:$BUILD_MODE"; fi
|
if [ ! -d "dist" ]; then npm run "build:$BUILD_MODE"; fi
|
||||||
|
|
||||||
# Use Nginx to serve
|
# Use Momentum to serve
|
||||||
FROM nginx:1.20-alpine
|
FROM git.zakscode.com/momentum/momentum:diarization
|
||||||
COPY --from=build /app/dist /usr/share/nginx/html
|
RUN rm -rf /app/server/public/assets /app/server/public/index.html
|
||||||
COPY docker/config/robots.txt /usr/share/nginx/html/robots.txt
|
COPY --from=build /app/dist /app/server/public
|
||||||
COPY docker/config/nginx.conf /etc/nginx/nginx.conf
|
|
||||||
COPY docker/scripts/setup-environment.sh /docker-entrypoint.d/setup-environment.sh
|
|
||||||
RUN chmod +x /docker-entrypoint.d/setup-environment.sh
|
|
||||||
EXPOSE 80
|
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ Website: https://legio-30.org
|
|||||||
### Built With
|
### Built With
|
||||||
[](https://angular.io/)
|
[](https://angular.io/)
|
||||||
[](https://docker.com/)
|
[](https://docker.com/)
|
||||||
|
[](https://momentum.zakscode.com)
|
||||||
[](https://typescriptlang.org/)
|
[](https://typescriptlang.org/)
|
||||||
|
|
||||||
## Setup
|
## Setup
|
||||||
|
|||||||
48
package-lock.json
generated
48
package-lock.json
generated
@@ -18,6 +18,7 @@
|
|||||||
"@angular/platform-browser": "^14.2.0",
|
"@angular/platform-browser": "^14.2.0",
|
||||||
"@angular/platform-browser-dynamic": "^14.2.0",
|
"@angular/platform-browser-dynamic": "^14.2.0",
|
||||||
"@angular/router": "^14.2.0",
|
"@angular/router": "^14.2.0",
|
||||||
|
"@ztimson/momentum": "^1.1.11",
|
||||||
"bootstrap": "^5.2.1",
|
"bootstrap": "^5.2.1",
|
||||||
"jquery": "^3.6.1",
|
"jquery": "^3.6.1",
|
||||||
"ngx-google-analytics": "^14.0.1",
|
"ngx-google-analytics": "^14.0.1",
|
||||||
@@ -3340,6 +3341,26 @@
|
|||||||
"integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==",
|
"integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"node_modules/@ztimson/momentum": {
|
||||||
|
"version": "1.1.11",
|
||||||
|
"resolved": "https://registry.npmjs.org/@ztimson/momentum/-/momentum-1.1.11.tgz",
|
||||||
|
"integrity": "sha512-ArFIOJj0mCbvR/P6XBlOjvICytf3ggPClbMmDDsZNtLMGXIZ+HqNjt58LDuEpLr3a8pe0mXEZ3jGkIAv2no8mA==",
|
||||||
|
"dependencies": {
|
||||||
|
"@ztimson/utils": "0.29.1"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"build-models": "bin/build-models.mjs"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@ztimson/utils": {
|
||||||
|
"version": "0.29.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@ztimson/utils/-/utils-0.29.1.tgz",
|
||||||
|
"integrity": "sha512-tc1Eikjt7bwMHoOvck5eSnV3P69FOVNp6z7n/v1IoEtBmHLtPgz8LsxUtSYLnvl96HZ1bNkvQfuuUxrBob5dJQ==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"var-persist": "^1.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/abab": {
|
"node_modules/abab": {
|
||||||
"version": "2.0.6",
|
"version": "2.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
|
||||||
@@ -11205,6 +11226,12 @@
|
|||||||
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
|
"node": "^12.13.0 || ^14.15.0 || >=16.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/var-persist": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/var-persist/-/var-persist-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-Zon+pwvEpb0dEQCVShoMQQWV1JbWi4P2knW3h2sfSZS3pLecgbFig76tMSHEECQuEQ3KfYhMXgRDDIybtHTyZw==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/vary": {
|
"node_modules/vary": {
|
||||||
"version": "1.1.2",
|
"version": "1.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
||||||
@@ -14070,6 +14097,22 @@
|
|||||||
"integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==",
|
"integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"@ztimson/momentum": {
|
||||||
|
"version": "1.1.11",
|
||||||
|
"resolved": "https://registry.npmjs.org/@ztimson/momentum/-/momentum-1.1.11.tgz",
|
||||||
|
"integrity": "sha512-ArFIOJj0mCbvR/P6XBlOjvICytf3ggPClbMmDDsZNtLMGXIZ+HqNjt58LDuEpLr3a8pe0mXEZ3jGkIAv2no8mA==",
|
||||||
|
"requires": {
|
||||||
|
"@ztimson/utils": "0.29.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"@ztimson/utils": {
|
||||||
|
"version": "0.29.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@ztimson/utils/-/utils-0.29.1.tgz",
|
||||||
|
"integrity": "sha512-tc1Eikjt7bwMHoOvck5eSnV3P69FOVNp6z7n/v1IoEtBmHLtPgz8LsxUtSYLnvl96HZ1bNkvQfuuUxrBob5dJQ==",
|
||||||
|
"requires": {
|
||||||
|
"var-persist": "^1.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
"abab": {
|
"abab": {
|
||||||
"version": "2.0.6",
|
"version": "2.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz",
|
||||||
@@ -19750,6 +19793,11 @@
|
|||||||
"builtins": "^5.0.0"
|
"builtins": "^5.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"var-persist": {
|
||||||
|
"version": "1.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/var-persist/-/var-persist-1.0.1.tgz",
|
||||||
|
"integrity": "sha512-Zon+pwvEpb0dEQCVShoMQQWV1JbWi4P2knW3h2sfSZS3pLecgbFig76tMSHEECQuEQ3KfYhMXgRDDIybtHTyZw=="
|
||||||
|
},
|
||||||
"vary": {
|
"vary": {
|
||||||
"version": "1.1.2",
|
"version": "1.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
"@angular/platform-browser": "^14.2.0",
|
"@angular/platform-browser": "^14.2.0",
|
||||||
"@angular/platform-browser-dynamic": "^14.2.0",
|
"@angular/platform-browser-dynamic": "^14.2.0",
|
||||||
"@angular/router": "^14.2.0",
|
"@angular/router": "^14.2.0",
|
||||||
|
"@ztimson/momentum": "^1.1.11",
|
||||||
"bootstrap": "^5.2.1",
|
"bootstrap": "^5.2.1",
|
||||||
"jquery": "^3.6.1",
|
"jquery": "^3.6.1",
|
||||||
"ngx-google-analytics": "^14.0.1",
|
"ngx-google-analytics": "^14.0.1",
|
||||||
|
|||||||
50
src/app/services/momentum.service.ts
Normal file
50
src/app/services/momentum.service.ts
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
import {Injectable} from '@angular/core';
|
||||||
|
import {Momentum, type User} from '@ztimson/momentum';
|
||||||
|
import {BehaviorSubject} from 'rxjs';
|
||||||
|
import {from, map} from 'rxjs';
|
||||||
|
import {filter} from 'rxjs/operators';
|
||||||
|
|
||||||
|
declare global {
|
||||||
|
interface Window {
|
||||||
|
momentum: Momentum;
|
||||||
|
electronEnvironment: any;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface location {
|
||||||
|
port: string;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Injectable({providedIn: 'root'})
|
||||||
|
export class MomentumService {
|
||||||
|
static SCHEMA: {[key: string]: string} = {
|
||||||
|
// TODO: Add paths
|
||||||
|
}
|
||||||
|
|
||||||
|
api!: Momentum;
|
||||||
|
|
||||||
|
installable = new BehaviorSubject(false);
|
||||||
|
settings = new BehaviorSubject<{[key: string]: any}>({});
|
||||||
|
title = new BehaviorSubject<string | null>(null);
|
||||||
|
|
||||||
|
// @ts-ignore
|
||||||
|
user = new BehaviorSubject<User | null | undefined>(undefined); // Undefined at init, null when logged out, object when logged in.
|
||||||
|
admin = from(this.user).pipe(filter((u: any) => u !== undefined), map((u: User | null) => u?.groups.includes('admin')));
|
||||||
|
isLoggedIn = from(this.user).pipe(filter(u => u !== undefined), map(Boolean));
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
this.api = new Momentum("https://legio-30.org", {
|
||||||
|
app: "Website",
|
||||||
|
analytics: "prompt",
|
||||||
|
logLevel: "ERROR",
|
||||||
|
});
|
||||||
|
|
||||||
|
this.api.auth.on('logout', () => location.reload());
|
||||||
|
this.api.client.on('install', () => this.installable.next(this.api.client.canInstall));
|
||||||
|
this.installable.next(this.api.client.canInstall);
|
||||||
|
this.api.settings.sync((event, value) => {
|
||||||
|
this.title.next(value['title']);
|
||||||
|
this.settings.next(value);
|
||||||
|
}, {map: true});
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user