@@ -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
4052func 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