Fix Organization Management dialog type errors
- Fix JSON key mismatch in Flutter models: change 'User' to 'user' in Member and JoinRequest fromJson - Update backend userInfo to send displayName as *string (null when empty) - Add json tags to database User struct for consistent lowercase keys - Handle displayName nullability in backend handlers
This commit is contained in:
@@ -21,7 +21,7 @@ class Member {
|
|||||||
orgId: json['OrgID'] ?? json['orgId'],
|
orgId: json['OrgID'] ?? json['orgId'],
|
||||||
role: json['Role'] ?? json['role'],
|
role: json['Role'] ?? json['role'],
|
||||||
createdAt: DateTime.parse(json['CreatedAt'] ?? json['createdAt']),
|
createdAt: DateTime.parse(json['CreatedAt'] ?? json['createdAt']),
|
||||||
user: User.fromJson(json['User'] ?? json),
|
user: User.fromJson(json['user']),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -90,7 +90,7 @@ class JoinRequest {
|
|||||||
inviteToken: json['InviteToken'] ?? json['inviteToken'],
|
inviteToken: json['InviteToken'] ?? json['inviteToken'],
|
||||||
requestedAt: DateTime.parse(json['RequestedAt'] ?? json['requestedAt']),
|
requestedAt: DateTime.parse(json['RequestedAt'] ?? json['requestedAt']),
|
||||||
status: json['Status'] ?? json['status'],
|
status: json['Status'] ?? json['status'],
|
||||||
user: User.fromJson(json['User'] ?? json),
|
user: User.fromJson(json['user']),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -63,13 +63,13 @@ func (sa StringArray) Value() (driver.Value, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type User struct {
|
type User struct {
|
||||||
ID uuid.UUID
|
ID uuid.UUID `json:"id"`
|
||||||
Email string
|
Email string `json:"email"`
|
||||||
Username string
|
Username string `json:"username"`
|
||||||
DisplayName string
|
DisplayName string `json:"displayName"`
|
||||||
PasswordHash *string
|
PasswordHash *string `json:"-"`
|
||||||
CreatedAt time.Time
|
CreatedAt time.Time `json:"createdAt"`
|
||||||
LastLoginAt *time.Time
|
LastLoginAt *time.Time `json:"lastLoginAt"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type Credential struct {
|
type Credential struct {
|
||||||
|
|||||||
@@ -899,7 +899,7 @@ type memberResponse struct {
|
|||||||
type userInfo struct {
|
type userInfo struct {
|
||||||
ID string `json:"id"`
|
ID string `json:"id"`
|
||||||
Username string `json:"username"`
|
Username string `json:"username"`
|
||||||
DisplayName string `json:"displayName"`
|
DisplayName *string `json:"displayName"`
|
||||||
Email string `json:"email"`
|
Email string `json:"email"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -924,7 +924,12 @@ func listMembersHandler(w http.ResponseWriter, r *http.Request, db *database.DB)
|
|||||||
User: userInfo{
|
User: userInfo{
|
||||||
ID: m.User.ID.String(),
|
ID: m.User.ID.String(),
|
||||||
Username: m.User.Username,
|
Username: m.User.Username,
|
||||||
DisplayName: m.User.DisplayName,
|
DisplayName: func() *string {
|
||||||
|
if m.User.DisplayName == "" {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return &m.User.DisplayName
|
||||||
|
}(),
|
||||||
Email: m.User.Email,
|
Email: m.User.Email,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@@ -1191,7 +1196,12 @@ func listJoinRequestsHandler(w http.ResponseWriter, r *http.Request, db *databas
|
|||||||
User: userInfo{
|
User: userInfo{
|
||||||
ID: req.User.ID.String(),
|
ID: req.User.ID.String(),
|
||||||
Username: req.User.Username,
|
Username: req.User.Username,
|
||||||
DisplayName: req.User.DisplayName,
|
DisplayName: func() *string {
|
||||||
|
if req.User.DisplayName == "" {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return &req.User.DisplayName
|
||||||
|
}(),
|
||||||
Email: req.User.Email,
|
Email: req.User.Email,
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user