= {
+ url: `/rpc/${guid}`,
+ openObserver: {
+ next: () => {
+ this.websocketStatus = 'connected'
+ },
+ },
+ }
+
+ return this.api.openLogsWebsocket$(config).pipe(
+ tap(_ => this.count++),
+ bufferTime(1000),
+ tap(msgs => {
+ this.loading = false
+ this.processRes({ entries: msgs })
+ if (this.infiniteStatus === 0 && this.count >= this.limit)
+ this.infiniteStatus = 1
+ }),
+ catchError(() => {
+ this.recordConnectionChange(false)
+ return this.connectionService.connected$.pipe(
+ tap(
+ connected =>
+ (this.websocketStatus = connected
+ ? 'reconnecting'
+ : 'disconnected'),
+ ),
+ filter(Boolean),
+ switchMap(() => this.reconnect$()),
+ )
+ }),
+ )
+ }
+
+ private recordConnectionChange(success = true) {
+ const container = document.getElementById('container')
+ const elem = document.getElementById('template')?.cloneNode()
+ if (!(elem instanceof HTMLElement)) return
+ elem.innerHTML = `${
+ success ? 'Reconnected' : 'Disconnected'
+ } at ${toLocalIsoString(new Date())}
`
+ container?.append(elem)
+ if (this.isOnBottom) {
+ setTimeout(() => {
+ this.scrollToBottom()
+ }, 25)
+ }
+ }
+
private processRes(res: LogsRes) {
const { entries, 'start-cursor': startCursor } = res
@@ -180,7 +225,7 @@ export class LogsComponent {
container?.prepend(newLogs)
const afterContainerHeight = container?.scrollHeight || 0
- // scroll down
+ // maintain scroll height
setTimeout(() => {
this.content?.scrollToPoint(
0,
@@ -189,12 +234,11 @@ export class LogsComponent {
}, 25)
if (entries.length < this.limit) {
- this.needInfinite = false
+ this.infiniteStatus = 2
}
} else {
container?.append(newLogs)
if (this.autoScroll) {
- // scroll to bottom
setTimeout(() => {
this.scrollToBottom()
}, 25)
diff --git a/frontend/projects/ui/src/app/pages/apps-routes/app-logs/app-logs.page.html b/frontend/projects/ui/src/app/pages/apps-routes/app-logs/app-logs.page.html
index 30bdea964..4617646f5 100644
--- a/frontend/projects/ui/src/app/pages/apps-routes/app-logs/app-logs.page.html
+++ b/frontend/projects/ui/src/app/pages/apps-routes/app-logs/app-logs.page.html
@@ -3,6 +3,6 @@
[followLogs]="followLogs()"
[defaultBack]="'/services/' + pkgId"
[context]="pkgId"
- title="Service Logs"
+ pageTitle="Service Logs"
class="ion-page"
>
diff --git a/frontend/projects/ui/src/app/pages/server-routes/kernel-logs/kernel-logs.page.html b/frontend/projects/ui/src/app/pages/server-routes/kernel-logs/kernel-logs.page.html
index f37d9c886..e744ec68f 100644
--- a/frontend/projects/ui/src/app/pages/server-routes/kernel-logs/kernel-logs.page.html
+++ b/frontend/projects/ui/src/app/pages/server-routes/kernel-logs/kernel-logs.page.html
@@ -2,7 +2,7 @@
[fetchLogs]="fetchLogs()"
[followLogs]="followLogs()"
context="kernel"
- defaultBack="embassy"
- title="Kernel Logs"
+ defaultBack="system"
+ pageTitle="Kernel Logs"
class="ion-page"
>
diff --git a/frontend/projects/ui/src/app/pages/server-routes/server-logs/server-logs.page.html b/frontend/projects/ui/src/app/pages/server-routes/server-logs/server-logs.page.html
index 3d84f5968..e9501c2b9 100644
--- a/frontend/projects/ui/src/app/pages/server-routes/server-logs/server-logs.page.html
+++ b/frontend/projects/ui/src/app/pages/server-routes/server-logs/server-logs.page.html
@@ -2,7 +2,7 @@
[fetchLogs]="fetchLogs()"
[followLogs]="followLogs()"
context="eos"
- defaultBack="embassy"
- title="OS Logs"
+ defaultBack="system"
+ pageTitle="OS Logs"
class="ion-page"
>
diff --git a/frontend/projects/ui/src/app/services/api/embassy-mock-api.service.ts b/frontend/projects/ui/src/app/services/api/embassy-mock-api.service.ts
index d511c8a60..558dc71e2 100644
--- a/frontend/projects/ui/src/app/services/api/embassy-mock-api.service.ts
+++ b/frontend/projects/ui/src/app/services/api/embassy-mock-api.service.ts
@@ -171,6 +171,7 @@ export class MockApiService extends ApiService {
map((_, index) => {
// mock fire open observer
if (index === 0) config.openObserver?.next(new Event(''))
+ if (index === 100) throw new Error('HAAHHA')
return Mock.ServerLogs[0]
}),
)
diff --git a/frontend/projects/ui/src/styles.scss b/frontend/projects/ui/src/styles.scss
index e7bdfb8fc..b11b0bdcd 100644
--- a/frontend/projects/ui/src/styles.scss
+++ b/frontend/projects/ui/src/styles.scss
@@ -295,24 +295,6 @@ h2 {
line-height: unset;
}
-@keyframes ellipsis-dot {
- 25% {
- content: '';
- }
-
- 50% {
- content: '.';
- }
-
- 75% {
- content: '..';
- }
-
- 100% {
- content: '...';
- }
-}
-
@keyframes flickerAnimation {
0% {
opacity: 1;