chore: add back logs

This commit is contained in:
waterplea
2024-08-11 00:41:26 +04:00
parent 846189b15b
commit 7850681ce1
6 changed files with 50 additions and 4 deletions

View File

@@ -2,7 +2,11 @@ import { HttpClientModule } from '@angular/common/http'
import { NgModule } from '@angular/core'
import { BrowserAnimationsModule } from '@angular/platform-browser/animations'
import { PreloadAllModules, RouterModule } from '@angular/router'
import { RELATIVE_URL, WorkspaceConfig } from '@start9labs/shared'
import {
provideSetupLogsService,
RELATIVE_URL,
WorkspaceConfig,
} from '@start9labs/shared'
import { tuiButtonOptionsProvider, TuiRoot } from '@taiga-ui/core'
import { NG_EVENT_PLUGINS } from '@taiga-ui/event-plugins'
import { ApiService } from 'src/app/services/api.service'
@@ -29,6 +33,7 @@ const {
],
providers: [
NG_EVENT_PLUGINS,
provideSetupLogsService(ApiService),
tuiButtonOptionsProvider({ size: 'm' }),
{
provide: ApiService,

View File

@@ -21,6 +21,7 @@ import { StateService } from 'src/app/services/state.service'
@Component({
standalone: true,
template: '<app-initializing [setupType]="type" [progress]="progress()" />',
styles: ':host { max-width: unset; align-items: stretch; }',
imports: [InitializingComponent],
changeDetection: ChangeDetectionStrategy.OnPush,
})

View File

@@ -2,6 +2,9 @@ import * as jose from 'node-jose'
import {
DiskInfo,
DiskListResponse,
FollowLogsReq,
FollowLogsRes,
Log,
PartitionInfo,
StartOSDiskInfo,
} from '@start9labs/shared'
@@ -22,6 +25,10 @@ export abstract class ApiService {
abstract execute(setupInfo: T.SetupExecuteParams): Promise<T.SetupProgress> // setup.execute
abstract complete(): Promise<T.SetupResult> // setup.complete
abstract exit(): Promise<void> // setup.exit
abstract followServerLogs(params: FollowLogsReq): Promise<FollowLogsRes> // setup.logs.follow
abstract openLogsWebsocket$(
config: WebSocketSubjectConfig<Log>,
): Observable<Log>
abstract openProgressWebsocket$(guid: string): Observable<T.FullProgress>
async encrypt(toEncrypt: string): Promise<T.EncryptedWire> {

View File

@@ -3,8 +3,11 @@ import { Inject, Injectable } from '@angular/core'
import {
DiskListResponse,
encodeBase64,
FollowLogsReq,
FollowLogsRes,
HttpService,
isRpcError,
Log,
RpcError,
RPCOptions,
StartOSDiskInfo,
@@ -12,7 +15,7 @@ import {
import { T } from '@start9labs/start-sdk'
import * as jose from 'node-jose'
import { Observable } from 'rxjs'
import { webSocket } from 'rxjs/webSocket'
import { webSocket, WebSocketSubjectConfig } from 'rxjs/webSocket'
import { ApiService } from './api.service'
@Injectable({
@@ -96,6 +99,14 @@ export class LiveApiService extends ApiService {
})
}
async followServerLogs(params: FollowLogsReq): Promise<FollowLogsRes> {
return this.rpcRequest({ method: 'setup.logs.follow', params })
}
openLogsWebsocket$({ url }: WebSocketSubjectConfig<Log>): Observable<Log> {
return webSocket(`http://start.local/ws/${url}`)
}
async complete(): Promise<T.SetupResult> {
const res = await this.rpcRequest<T.SetupResult>({
method: 'setup.complete',

View File

@@ -2,12 +2,16 @@ import { Injectable } from '@angular/core'
import {
DiskListResponse,
encodeBase64,
FollowLogsReq,
FollowLogsRes,
Log,
pauseFor,
StartOSDiskInfo,
} from '@start9labs/shared'
import { T } from '@start9labs/start-sdk'
import * as jose from 'node-jose'
import { Observable, of } from 'rxjs'
import { interval, map, Observable, of } from 'rxjs'
import { WebSocketSubjectConfig } from 'rxjs/webSocket'
import { ApiService } from './api.service'
@Injectable({
@@ -266,6 +270,24 @@ export class MockApiService extends ApiService {
}
}
async followServerLogs(params: FollowLogsReq): Promise<FollowLogsRes> {
await pauseFor(1000)
return {
startCursor: 'fakestartcursor',
guid: 'fake-guid',
}
}
openLogsWebsocket$(config: WebSocketSubjectConfig<Log>): Observable<Log> {
return interval(500).pipe(
map(() => ({
timestamp: new Date().toISOString(),
message: 'fake log entry',
bootId: 'boot-id',
})),
)
}
async complete(): Promise<T.SetupResult> {
await pauseFor(1000)
return {

View File

@@ -23,7 +23,7 @@ import { LogsWindowComponent } from './logs-window.component'
></progress>
<p>{{ progress.message }}</p>
</section>
<!-- <logs-window />-->
<logs-window />
`,
styles: `
section {