Skip to content

Commit d3517c8

Browse files
committed
PB-1895: Refactor messages to use objects as Parameters
- Issue: With the extra parameters `isAcknowledged` and `sourceId` in the messages, we could end up with disgracious instantiation with empty parameters just to add the last one. - Fix: We Refactor the messages to accept objects as parameters
1 parent 258e713 commit d3517c8

20 files changed

+171
-100
lines changed

packages/geoadmin-log/src/Message.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,15 @@ export class Message {
1212
* @param {string} msg Translation key message
1313
* @param {any} params Translation params to pass to i18n (used for message formatting)
1414
*/
15-
constructor(msg: string, params: Record<string, any> | null = null, sourceId? : string, isAcknowledged: boolean = false ) {
15+
constructor(msgParams: Record<string, any> ) {
16+
const {
17+
msg = 'unknown_message',
18+
params = {},
19+
isAcknowledged = false,
20+
sourceId = undefined
21+
} = msgParams
1622
this.msg = msg
17-
this.params = params ?? {}
23+
this.params = params
1824
this.isAcknowledged = isAcknowledged
1925
this.sourceId = sourceId
2026
}

packages/geoadmin-log/src/__test__/message.spec.js

Lines changed: 57 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -5,54 +5,76 @@ import { describe, it } from 'vitest'
55
describe('Unit Tests for messages', () => {
66
describe('checking equality between messages', () => {
77
it('Ensure that errors with no sources are considered equal too when the rest is equal', () => {
8-
const msg1 = new ErrorMessage('test text', {}, null)
9-
const msg2 = new ErrorMessage('test text', {}, null)
10-
const msg3 = new ErrorMessage('test text', { key1: 'value1', key2: 'value2' }, null)
11-
const msg4 = new ErrorMessage('test text', { key1: 'value1', key2: 'value2' }, null)
8+
const msg1 = new ErrorMessage({ msg: 'test text', params: {} })
9+
const msg2 = new ErrorMessage({ msg: 'test text', params: {} })
10+
const msg3 = new ErrorMessage({
11+
msg: 'test text',
12+
params: { key1: 'value1', key2: 'value2' },
13+
})
14+
const msg4 = new ErrorMessage({
15+
msg: 'test text',
16+
params: { key1: 'value1', key2: 'value2' },
17+
})
1218
expect(msg1.isEquals(msg1)).to.equal(true)
1319
expect(msg1.isEquals(msg2)).to.equal(true)
1420
expect(msg3.isEquals(msg3)).to.equal(true)
1521
expect(msg3.isEquals(msg4)).to.equal(true)
1622
})
1723
it('detects equality and inequality between two messages', () => {
1824
// messages without parameter
19-
const simpleTextMsg1 = new ErrorMessage('test text', {}, 'test_source_12345')
20-
const copyOfimpleTextMsg1 = new ErrorMessage('test text', {}, 'test_source_12345')
21-
const simpleTextMsg1OtherSource = new ErrorMessage('test text', {}, 'test_source_02345')
22-
const simpleTextMsg2 = new ErrorMessage('Another test text', {}, 'test_source_12345')
25+
const simpleTextMsg1 = new ErrorMessage({
26+
msg: 'test text',
27+
params: {},
28+
sourceId: 'test_source_12345',
29+
})
30+
const copyOfimpleTextMsg1 = new ErrorMessage({
31+
msg: 'test text',
32+
params: {},
33+
sourceId: 'test_source_12345',
34+
})
35+
const simpleTextMsg1OtherSource = new ErrorMessage({
36+
msg: 'test text',
37+
params: {},
38+
sourceId: 'test_source_02345',
39+
})
40+
const simpleTextMsg2 = new ErrorMessage({
41+
msg: 'Another test text',
42+
params: {},
43+
sourceId: 'test_source_12345',
44+
})
2345

2446
expect(simpleTextMsg1.isEquals(simpleTextMsg1)).to.be.true
2547
expect(simpleTextMsg1.isEquals(copyOfimpleTextMsg1)).to.be.true
2648
expect(simpleTextMsg1.isEquals(simpleTextMsg1OtherSource)).to.be.false // different source
2749
expect(simpleTextMsg1.isEquals(simpleTextMsg2)).to.be.false // different msg
2850

2951
// messages with parameters
30-
const paramMsg1 = new ErrorMessage(
31-
'test text',
32-
{ key1: 'value1', key2: 'value2' },
33-
'test_source_12345'
34-
)
35-
const copyOfParamMsg1 = new ErrorMessage(
36-
'test text',
37-
{ key1: 'value1', key2: 'value2' },
38-
'test_source_12345'
39-
)
40-
const paramMsg2 = new ErrorMessage(
41-
'test text',
42-
{ key1: 'value2', key2: 'value2' },
43-
'test_source_12345'
44-
)
52+
const paramMsg1 = new ErrorMessage({
53+
msg: 'test text',
54+
params: { key1: 'value1', key2: 'value2' },
55+
sourceId: 'test_source_12345',
56+
})
57+
const copyOfParamMsg1 = new ErrorMessage({
58+
msg: 'test text',
59+
params: { key1: 'value1', key2: 'value2' },
60+
sourceId: 'test_source_12345',
61+
})
62+
const paramMsg2 = new ErrorMessage({
63+
msg: 'test text',
64+
params: { key1: 'value2', key2: 'value2' },
65+
sourceId: 'test_source_12345',
66+
})
4567

46-
const paramMsg3 = new ErrorMessage(
47-
'test text',
48-
{ key2: 'value1', key3: 'value2' },
49-
'test_source_12345'
50-
)
51-
const paramMsg4 = new ErrorMessage(
52-
'Another test text',
53-
{ key1: 'value1', key2: 'value2' },
54-
'test_source_12345'
55-
)
68+
const paramMsg3 = new ErrorMessage({
69+
msg: 'test text',
70+
params: { key2: 'value1', key3: 'value2' },
71+
sourceId: 'test_source_12345',
72+
})
73+
const paramMsg4 = new ErrorMessage({
74+
msg: 'Another test text',
75+
params: { key1: 'value1', key2: 'value2' },
76+
sourceId: 'test_source_12345',
77+
})
5678
expect(simpleTextMsg1.isEquals(paramMsg1)).to.be.false // empty params vs params
5779
expect(paramMsg1.isEquals(paramMsg1)).to.be.true
5880
expect(paramMsg1.isEquals(copyOfParamMsg1)).to.be.true
@@ -61,8 +83,8 @@ describe('Unit Tests for messages', () => {
6183
expect(paramMsg1.isEquals(paramMsg3)).to.be.false // different keys in params
6284
})
6385
it('ensure that acknowledement of a message does not change equality', () => {
64-
const msg1 = new ErrorMessage('test', {}, null, false)
65-
const msg2 = new ErrorMessage('test', {}, null, true)
86+
const msg1 = new ErrorMessage({ msg: 'test', params: {}, isAcknowledged: false })
87+
const msg2 = new ErrorMessage({ msg: 'test', params: {}, isAcknowledged: true })
6688
expect(msg1.isEquals(msg2)).to.be.true
6789
})
6890
})

packages/mapviewer/src/api/errorQueues.api.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
import { ErrorMessage } from '@geoadmin/log/Message'
22

33
export function getStandardErrorMessage(query, urlParamName) {
4-
return new ErrorMessage('url_parameter_error', {
5-
param: urlParamName,
6-
value: query,
4+
return new ErrorMessage({
5+
msg: 'url_parameter_error',
6+
params: {
7+
param: urlParamName,
8+
value: query,
9+
},
710
})
811
}
912

packages/mapviewer/src/modules/drawing/DrawingModule.vue

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,11 @@ watch(availableIconSets, () => {
138138
const icon = getIcon(iconArgs, null /*iconStyle*/, availableIconSets.value, () => {
139139
store.dispatch('addWarnings', {
140140
warnings: [
141-
new WarningMessage('kml_icon_set_not_found', {
142-
iconSetName: iconArgs.set,
141+
new WarningMessage({
142+
msg: 'kml_icon_set_not_found',
143+
params: {
144+
iconSetName: iconArgs.set,
145+
},
143146
}),
144147
],
145148
...dispatcher,

packages/mapviewer/src/modules/map/components/cesium/CesiumWMTSLayer.vue

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,10 @@ import { getWmtsXyzUrl } from '@/utils/layerUtils'
1515
const dispatcher = { dispatcher: 'CesiumWMTSLayer.vue' }
1616
1717
const MAXIMUM_LEVEL_OF_DETAILS = 18
18-
const unsupportedProjectionError = new ErrorMessage(
19-
'3d_unsupported_projection',
20-
{},
21-
wmtsLayerConfig.id
22-
)
18+
const unsupportedProjectionError = new ErrorMessage({
19+
msg: '3d_unsupported_projection',
20+
sourceId: wmtsLayerConfig.id,
21+
})
2322
2423
const { wmtsLayerConfig, zIndex, parentLayerOpacity } = defineProps({
2524
wmtsLayerConfig: {

packages/mapviewer/src/modules/map/components/openlayers/OpenLayersKMLLayer.vue

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -91,9 +91,12 @@ function iconUrlProxy(url) {
9191
(url) => {
9292
store.dispatch('addWarnings', {
9393
warnings: [
94-
new WarningMessage('kml_icon_url_cors_issue', {
95-
layerName: layerName.value,
96-
url: url,
94+
new WarningMessage({
95+
msg: 'kml_icon_url_cors_issue',
96+
params: {
97+
layerName: layerName.value,
98+
url: url,
99+
},
97100
}),
98101
],
99102
...dispatcher,
@@ -102,9 +105,12 @@ function iconUrlProxy(url) {
102105
(url) => {
103106
store.dispatch('addWarnings', {
104107
warnings: [
105-
new WarningMessage('kml_icon_url_scheme_http', {
106-
layerName: layerName.value,
107-
url: url,
108+
new WarningMessage({
109+
msg: 'kml_icon_url_scheme_http',
110+
params: {
111+
layerName: layerName.value,
112+
url: url,
113+
},
108114
}),
109115
],
110116
...dispatcher,

packages/mapviewer/src/modules/menu/components/advancedTools/ImportFile/ImportFileOnlineTab.vue

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,9 @@ async function loadFile() {
8383
await handleFileSource(fileUrl.value, false)
8484
if (!fileUrl.value.match(/^https:\/\//)) {
8585
store.dispatch('addWarnings', {
86-
warnings: [new WarningMessage('import_http_external_file_warning', {})],
86+
warnings: [
87+
new WarningMessage({ msg: 'import_http_external_file_warning', params: {} }),
88+
],
8789
dispatcher: 'Import File Online Tab',
8890
})
8991
}

packages/mapviewer/src/modules/menu/components/advancedTools/ImportFile/parser/KMLParser.class.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,12 @@ export class KMLParser extends FileParser {
7474

7575
if (!isKmlFeaturesValid(kmlAsText)) {
7676
kmlLayer.addWarningMessage(
77-
new WarningMessage('kml_malformed', {
78-
filename: kmlLayer.name ?? kmlLayer.id,
77+
new WarningMessage({
78+
msg: 'kml_malformed',
79+
params: {
80+
filename: kmlLayer.name ?? kmlLayer.id,
81+
},
82+
sourceId: kmlLayer.id,
7983
})
8084
)
8185
}

packages/mapviewer/src/modules/menu/components/advancedTools/ImportFile/parser/errors/generateErrorMessageFromErrorType.utils.js

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,23 @@ import UnknownProjectionError from '@/modules/menu/components/advancedTools/Impo
1515
*/
1616
export default function generateErrorMessageFromErrorType(error, layer) {
1717
if (error instanceof AxiosError || /fetch/.test(error.message)) {
18-
return new ErrorMessage('loading_error_network_failure', {}, layer?.id)
18+
return new ErrorMessage({
19+
msg: 'loading_error_network_failure',
20+
sourceId: layer?.id,
21+
})
1922
} else if (error instanceof OutOfBoundsError) {
20-
return new ErrorMessage('imported_file_out_of_bounds', {}, layer?.id)
23+
return new ErrorMessage({
24+
msg: 'imported_file_out_of_bounds',
25+
sourceId: layer?.id,
26+
})
2127
} else if (error instanceof EmptyFileContentError) {
22-
return new ErrorMessage('kml_gpx_file_empty', {}, layer?.id)
28+
return new ErrorMessage({ msg: 'kml_gpx_file_empty', sourceId: layer?.id })
2329
} else if (error instanceof UnknownProjectionError) {
24-
return new ErrorMessage('unknown_projection_error', { epsg: error.epsg }, layer?.id)
30+
return new ErrorMessage({
31+
msg: 'unknown_projection_error',
32+
params: { epsg: error.epsg },
33+
sourceId: layer?.id,
34+
})
2535
}
26-
return new ErrorMessage('invalid_import_file_error', {}, layer?.id)
36+
return new ErrorMessage({ msg: 'invalid_import_file_error', sourceId: layer?.id })
2737
}

packages/mapviewer/src/modules/menu/components/advancedTools/ImportFile/useImportFile.composable.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,12 @@ export default function useImportFile() {
4343
projection.value.bounds.isInBounds(extent[2], extent[3])
4444
if (!isLayerFullyInBound) {
4545
layer.addWarningMessage(
46-
new WarningMessage('file_imported_partially_out_of_bounds', {
47-
filename: layer.name ?? layer.id,
46+
new WarningMessage({
47+
msg: 'file_imported_partially_out_of_bounds',
48+
params: {
49+
filename: layer.name ?? layer.id,
50+
},
51+
sourceId: layer.id,
4852
})
4953
)
5054
}

0 commit comments

Comments
 (0)