fix(17-02): handle float64 numeric values from Wails JSON deserialization

Wails deserializes JSON numbers from JavaScript as float64, not int.
All .(int) type assertions on year, track_number, and disc_number
silently failed. Add asInt() helper, replace all assertions.
This commit is contained in:
2026-03-18 07:46:29 -04:00
parent ffcdc41b0d
commit 900db2e56c
4 changed files with 40 additions and 11 deletions
+6 -6
View File
@@ -117,7 +117,7 @@ func syncDatabase(
// Determine year value.
yearVal := params.oldRecording.Year
if yv, yOK := params.changes[FieldYear].(int); yOK {
if yv, yOK := asInt(params.changes[FieldYear]); yOK {
yearVal = toNullInt64(yv)
}
@@ -147,12 +147,12 @@ func syncDatabase(
// Determine track/disc numbers.
trackNum := params.oldRecording.TrackNumber
if tn, tnOK := params.changes[FieldTrackNumber].(int); tnOK {
if tn, tnOK := asInt(params.changes[FieldTrackNumber]); tnOK {
trackNum = toNullInt64(tn)
}
discNum := params.oldRecording.DiscNumber
if dn, dnOK := params.changes[FieldDiscNumber].(int); dnOK {
if dn, dnOK := asInt(params.changes[FieldDiscNumber]); dnOK {
discNum = toNullInt64(dn)
}
@@ -216,17 +216,17 @@ func syncDatabase(
}
newYear := rec.Year
if v, ok := params.changes[FieldYear].(int); ok {
if v, ok := asInt(params.changes[FieldYear]); ok {
newYear = toNullInt64(v)
}
newTrackNum := rec.TrackNumber
if v, ok := params.changes[FieldTrackNumber].(int); ok {
if v, ok := asInt(params.changes[FieldTrackNumber]); ok {
newTrackNum = toNullInt64(v)
}
newDiscNum := rec.DiscNumber
if v, ok := params.changes[FieldDiscNumber].(int); ok {
if v, ok := asInt(params.changes[FieldDiscNumber]); ok {
newDiscNum = toNullInt64(v)
}