mirror of
https://github.com/CaramelFur/Picsur.git
synced 2026-03-22 03:21:31 +01:00
add demo identifier to footer
This commit is contained in:
@@ -2,6 +2,7 @@ import { CommonModule } from '@angular/common';
|
||||
import { NgModule } from '@angular/core';
|
||||
import { ApiService } from './api.service';
|
||||
import { ImageService } from './image.service';
|
||||
import { InfoService } from './info.service';
|
||||
import { KeyService } from './key.service';
|
||||
import { PermissionService } from './permission.service';
|
||||
import { UserService } from './user.service';
|
||||
@@ -13,6 +14,7 @@ import { UserService } from './user.service';
|
||||
UserService,
|
||||
PermissionService,
|
||||
KeyService,
|
||||
InfoService,
|
||||
],
|
||||
imports: [CommonModule],
|
||||
})
|
||||
|
||||
35
frontend/src/app/api/info.service.ts
Normal file
35
frontend/src/app/api/info.service.ts
Normal file
@@ -0,0 +1,35 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
import { InfoResponse } from 'picsur-shared/dist/dto/api/info.dto';
|
||||
import { AsyncFailable, HasFailed } from 'picsur-shared/dist/types';
|
||||
import { BehaviorSubject } from 'rxjs';
|
||||
import { ServerInfo } from '../models/server-info';
|
||||
import { ApiService } from './api.service';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root',
|
||||
})
|
||||
export class InfoService {
|
||||
private readonly logger = console;
|
||||
|
||||
public get live() {
|
||||
return this.infoSubject;
|
||||
}
|
||||
|
||||
private infoSubject = new BehaviorSubject<ServerInfo>(new ServerInfo());
|
||||
|
||||
constructor(private api: ApiService) {
|
||||
this.pollInfo().catch(this.logger.error);
|
||||
}
|
||||
|
||||
public async pollInfo(): AsyncFailable<ServerInfo> {
|
||||
const response = await this.api.get(InfoResponse, '/api/info');
|
||||
if (HasFailed(response)) return response;
|
||||
|
||||
const info = new ServerInfo();
|
||||
info.production = response.production;
|
||||
info.demo = response.demo;
|
||||
|
||||
this.infoSubject.next(info);
|
||||
return info;
|
||||
}
|
||||
}
|
||||
@@ -8,5 +8,6 @@
|
||||
<a class="link-unstyled" href="https://github.com/rubikscraft/picsur"
|
||||
>Source Code</a
|
||||
>
|
||||
{{ isDemo ? " - Demo Version" : "" }}
|
||||
</p>
|
||||
</footer>
|
||||
|
||||
@@ -1,8 +1,25 @@
|
||||
import { Component } from '@angular/core';
|
||||
import { Component, OnInit } from '@angular/core';
|
||||
import { AutoUnsubscribe } from 'ngx-auto-unsubscribe-decorator';
|
||||
import { InfoService } from 'src/app/api/info.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-footer',
|
||||
templateUrl: './footer.component.html',
|
||||
styleUrls: ['./footer.component.scss']
|
||||
styleUrls: ['./footer.component.scss'],
|
||||
})
|
||||
export class FooterComponent {}
|
||||
export class FooterComponent implements OnInit {
|
||||
constructor(private infoService: InfoService) {}
|
||||
|
||||
isDemo: boolean = false;
|
||||
|
||||
ngOnInit(): void {
|
||||
this.subscribeInfo();
|
||||
}
|
||||
|
||||
@AutoUnsubscribe()
|
||||
subscribeInfo() {
|
||||
return this.infoService.live.subscribe((info) => {
|
||||
this.isDemo = info.demo;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
import { CommonModule } from '@angular/common';
|
||||
import { NgModule } from '@angular/core';
|
||||
import { ApiModule } from 'src/app/api/api.module';
|
||||
import { FooterComponent } from './footer.component';
|
||||
|
||||
|
||||
@NgModule({
|
||||
declarations: [FooterComponent],
|
||||
imports: [CommonModule],
|
||||
imports: [CommonModule, ApiModule],
|
||||
exports: [FooterComponent],
|
||||
})
|
||||
export class FooterModule {}
|
||||
|
||||
4
frontend/src/app/models/server-info.ts
Normal file
4
frontend/src/app/models/server-info.ts
Normal file
@@ -0,0 +1,4 @@
|
||||
export class ServerInfo {
|
||||
production: boolean = false;
|
||||
demo: boolean = false;
|
||||
}
|
||||
Reference in New Issue
Block a user