Skip to content

Commit e1943c8

Browse files
committed
fix: do not set zero values in RPCState
1 parent c19bd0d commit e1943c8

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

internal/ota/rpc.go

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,18 @@ type RPCState struct {
3636
SystemUpdatedAt *time.Time `json:"systemUpdatedAt,omitempty"`
3737
}
3838

39+
func setTimeIfNotZero(rpcVal reflect.Value, i int, status time.Time) {
40+
if !status.IsZero() {
41+
rpcVal.Field(i).Set(reflect.ValueOf(&status))
42+
}
43+
}
44+
45+
func setFloat32IfNotZero(rpcVal reflect.Value, i int, status float32) {
46+
if status != 0 {
47+
rpcVal.Field(i).Set(reflect.ValueOf(&status))
48+
}
49+
}
50+
3951
// applyComponentStatusToRPCState uses reflection to map componentUpdateStatus fields to RPCState
4052
func applyComponentStatusToRPCState(component string, status componentUpdateStatus, rpcState *RPCState) {
4153
prefix := componentFieldMap[component]
@@ -55,17 +67,17 @@ func applyComponentStatusToRPCState(component string, status componentUpdateStat
5567

5668
switch rpcFieldName {
5769
case "DownloadProgress":
58-
rpcVal.Field(i).Set(reflect.ValueOf(&status.downloadProgress))
70+
setFloat32IfNotZero(rpcVal, i, status.downloadProgress)
5971
case "DownloadFinishedAt":
60-
rpcVal.Field(i).Set(reflect.ValueOf(&status.downloadFinishedAt))
72+
setTimeIfNotZero(rpcVal, i, status.downloadFinishedAt)
6173
case "VerificationProgress":
62-
rpcVal.Field(i).Set(reflect.ValueOf(&status.verificationProgress))
74+
setFloat32IfNotZero(rpcVal, i, status.verificationProgress)
6375
case "VerifiedAt":
64-
rpcVal.Field(i).Set(reflect.ValueOf(&status.verifiedAt))
76+
setTimeIfNotZero(rpcVal, i, status.verifiedAt)
6577
case "UpdateProgress":
66-
rpcVal.Field(i).Set(reflect.ValueOf(&status.updateProgress))
78+
setFloat32IfNotZero(rpcVal, i, status.updateProgress)
6779
case "UpdatedAt":
68-
rpcVal.Field(i).Set(reflect.ValueOf(&status.updatedAt))
80+
setTimeIfNotZero(rpcVal, i, status.updatedAt)
6981
case "UpdatePending":
7082
rpcVal.Field(i).SetBool(status.pending)
7183
default:

0 commit comments

Comments
 (0)