Skip to content

Commit 84cb3cd

Browse files
authored
fix: remote logs base class (#1640)
Signed-off-by: Jason C. Leach <[email protected]>
1 parent 7d82796 commit 84cb3cd

File tree

5 files changed

+64
-13
lines changed

5 files changed

+64
-13
lines changed

.changeset/tiny-llamas-try.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@bifold/remote-logs': patch
3+
'@bifold/core': patch
4+
---
5+
6+
fix issues with class relations

packages/core/src/components/misc/ErrorBoundary.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@ import Icon from 'react-native-vector-icons/MaterialIcons'
88
import { getBuildNumber, getVersion } from 'react-native-device-info'
99
import { testIdWithKey } from '../../utils/testable'
1010
import { BifoldError } from '../../types/error'
11-
import { BifoldLogger } from '../../services/logger'
11+
import { AbstractBifoldLogger } from '../../services/AbstractBifoldLogger'
1212

1313
const iconSize = 30
1414

1515
interface ErrorBoundaryProps {
1616
children: ReactNode
1717
styles: ReturnType<typeof StyleSheet.create>
1818
t: (key: string) => string
19-
logger: BifoldLogger
19+
logger: AbstractBifoldLogger
2020
}
2121

2222
interface ErrorBoundaryState {
@@ -41,7 +41,7 @@ class ErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundarySta
4141
logger.error('ErrorBoundary caught an error:', error)
4242
}
4343

44-
reportError = (error: Error, logger: BifoldLogger) => {
44+
reportError = (error: Error, logger: AbstractBifoldLogger) => {
4545
if (error) {
4646
this.setState({ reported: true })
4747
logger.report(error as BifoldError)
@@ -178,7 +178,7 @@ const ErrorBoundaryInfoBox: React.FC<ErrorBoundaryInfoBoxProps> = ({
178178

179179
interface ErrorBoundaryWrapperProps {
180180
children: ReactNode
181-
logger: BifoldLogger
181+
logger: AbstractBifoldLogger
182182
}
183183

184184
const ErrorBoundaryWrapper: React.FC<ErrorBoundaryWrapperProps> = ({ children, logger }) => {

packages/core/src/services/AbstractBifoldLogger.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
import { BaseLogger } from '@credo-ts/core'
1+
import { BaseLogger, LogLevel } from '@credo-ts/core'
22

33
import { BifoldError } from '../types/error'
44

55
export abstract class AbstractBifoldLogger extends BaseLogger {
6+
public logLevel: LogLevel = LogLevel.debug
67
// eslint-disable-next-line @typescript-eslint/no-explicit-any
78
protected _log: any
89
protected _config = {
@@ -21,6 +22,10 @@ export abstract class AbstractBifoldLogger extends BaseLogger {
2122
printDate: false,
2223
}
2324

25+
public isEnabled(logLevel: LogLevel): boolean {
26+
return logLevel >= this.logLevel
27+
}
28+
2429
public test(message: string, data?: Record<string, unknown>): void {
2530
this._log?.test({ message, data })
2631
}

packages/remote-logs/src/__tests__/logger.comprehensive.test.ts

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,55 @@ jest.mock('react-native-logs', () => ({
2323
},
2424
}))
2525

26+
jest.mock('@credo-ts/core', () => ({
27+
LogLevel: {
28+
test: 0,
29+
trace: 1,
30+
debug: 2,
31+
info: 3,
32+
warn: 4,
33+
error: 5,
34+
fatal: 6,
35+
off: 7,
36+
},
37+
}))
38+
2639
jest.mock('@bifold/core', () => ({
2740
BifoldLogger: class BifoldLogger {},
41+
AbstractBifoldLogger: class AbstractBifoldLogger {
42+
public logLevel = 2 // LogLevel.debug
43+
protected _log: any
44+
protected _config = {
45+
levels: {
46+
test: 0,
47+
trace: 0,
48+
debug: 0,
49+
info: 1,
50+
warn: 2,
51+
error: 3,
52+
fatal: 4,
53+
},
54+
severity: 'debug',
55+
async: true,
56+
dateFormat: 'time',
57+
printDate: false,
58+
}
59+
60+
public isEnabled(logLevel: number): boolean {
61+
return logLevel >= this.logLevel
62+
}
63+
64+
public report(bifoldError: any): void {
65+
// Mock implementation
66+
}
67+
},
2868
BifoldError: class BifoldError {
2969
title: string
3070
description: string
31-
code: string
71+
code: number
3272
message: string
3373

34-
constructor(title: string, description: string, code: string, message: string) {
74+
constructor(title: string, description: string, message: string, code: number) {
3575
this.title = title
3676
this.description = description
3777
this.code = code
@@ -407,7 +447,7 @@ describe('RemoteLogger', () => {
407447
})
408448

409449
it('should send incident report to Loki', () => {
410-
const bifoldError = new BifoldError('Error Title', 'Error Description', 'ERR001', 'Error Message')
450+
const bifoldError = new BifoldError('Error Title', 'Error Description', 'Error Message', 1001)
411451

412452
remoteLogger.report(bifoldError)
413453

@@ -423,7 +463,7 @@ describe('RemoteLogger', () => {
423463
data: {
424464
title: 'Error Title',
425465
description: 'Error Description',
426-
code: 'ERR001',
466+
code: 1001,
427467
message: 'Error Message',
428468
},
429469
},

packages/remote-logs/src/logger.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import { BifoldError, BifoldLogger } from '@bifold/core'
1+
import { BifoldError, AbstractBifoldLogger, BifoldLogger } from '@bifold/core'
2+
import { LogLevel } from '@credo-ts/core'
23
import { DeviceEventEmitter, EmitterSubscription } from 'react-native'
34
import { logger } from 'react-native-logs'
45

@@ -59,7 +60,7 @@ interface InternalLoggerInstance {
5960
fatal?: (props: { message: string; data?: Record<string, unknown>; error?: Error }) => void
6061
}
6162

62-
export class RemoteLogger {
63+
export class RemoteLogger extends AbstractBifoldLogger {
6364
private readonly baseLogger: BifoldLogger
6465
private _remoteLoggingEnabled = false
6566
private _sessionId: number | undefined
@@ -68,10 +69,9 @@ export class RemoteLogger {
6869
private lokiLabels: Record<string, string>
6970
private remoteLoggingAutoDisableTimer: ReturnType<typeof setTimeout> | undefined
7071
private eventListener: EmitterSubscription | undefined
71-
protected _log: InternalLoggerInstance | null = null
72-
protected _config = DEFAULT_LOG_CONFIG
7372

7473
constructor(options: RemoteLoggerOptions) {
74+
super()
7575
this.baseLogger = new BifoldLogger()
7676

7777
this.lokiUrl = options.lokiUrl ?? undefined

0 commit comments

Comments
 (0)