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:
Leon Bösche
2026-01-24 02:30:15 +01:00
parent 273976a69e
commit c7e740e732
3 changed files with 25 additions and 15 deletions

View File

@@ -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']),
); );
} }
} }

View File

@@ -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 {

View File

@@ -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,
}, },
}) })