diff --git a/cli/testdata/coder_list_--output_json.golden b/cli/testdata/coder_list_--output_json.golden index 9cdaa98c3f813..c37c89c4efe2a 100644 --- a/cli/testdata/coder_list_--output_json.golden +++ b/cli/testdata/coder_list_--output_json.golden @@ -24,7 +24,6 @@ "workspace_name": "test-workspace", "workspace_owner_id": "==========[first user ID]===========", "workspace_owner_name": "testuser", - "workspace_owner_avatar_url": "", "template_version_id": "============[version ID]============", "template_version_name": "===========[version name]===========", "build_number": 1, diff --git a/cli/testdata/coder_users_list_--output_json.golden b/cli/testdata/coder_users_list_--output_json.golden index 61b17e026d290..7243200f6bdb1 100644 --- a/cli/testdata/coder_users_list_--output_json.golden +++ b/cli/testdata/coder_users_list_--output_json.golden @@ -2,7 +2,6 @@ { "id": "==========[first user ID]===========", "username": "testuser", - "avatar_url": "", "name": "Test User", "email": "testuser@coder.com", "created_at": "====[timestamp]=====", @@ -23,8 +22,6 @@ { "id": "==========[second user ID]==========", "username": "testuser2", - "avatar_url": "", - "name": "", "email": "testuser2@coder.com", "created_at": "====[timestamp]=====", "updated_at": "====[timestamp]=====", diff --git a/codersdk/organizations.go b/codersdk/organizations.go index dd2eab50cf57e..728540ef2e6e1 100644 --- a/codersdk/organizations.go +++ b/codersdk/organizations.go @@ -74,8 +74,8 @@ type OrganizationMember struct { type OrganizationMemberWithUserData struct { Username string `table:"username,default_sort" json:"username"` - Name string `table:"name" json:"name"` - AvatarURL string `json:"avatar_url"` + Name string `table:"name" json:"name,omitempty"` + AvatarURL string `json:"avatar_url,omitempty"` Email string `json:"email"` GlobalRoles []SlimRole `json:"global_roles"` OrganizationMember `table:"m,recursive_inline"` diff --git a/codersdk/users.go b/codersdk/users.go index 3d9d95e683066..3207e3fbabaa1 100644 --- a/codersdk/users.go +++ b/codersdk/users.go @@ -40,7 +40,7 @@ type UsersRequest struct { type MinimalUser struct { ID uuid.UUID `json:"id" validate:"required" table:"id" format:"uuid"` Username string `json:"username" validate:"required" table:"username,default_sort"` - AvatarURL string `json:"avatar_url" format:"uri"` + AvatarURL string `json:"avatar_url,omitempty" format:"uri"` } // ReducedUser omits role and organization information. Roles are deduced from @@ -49,11 +49,11 @@ type MinimalUser struct { // required by the frontend. type ReducedUser struct { MinimalUser `table:"m,recursive_inline"` - Name string `json:"name"` + Name string `json:"name,omitempty"` Email string `json:"email" validate:"required" table:"email" format:"email"` CreatedAt time.Time `json:"created_at" validate:"required" table:"created at" format:"date-time"` UpdatedAt time.Time `json:"updated_at" table:"updated at" format:"date-time"` - LastSeenAt time.Time `json:"last_seen_at" format:"date-time"` + LastSeenAt time.Time `json:"last_seen_at,omitempty" format:"date-time"` Status UserStatus `json:"status" table:"status" enums:"active,suspended"` LoginType LoginType `json:"login_type"` diff --git a/codersdk/workspacebuilds.go b/codersdk/workspacebuilds.go index 7b67dc3b86171..ee31876f44fab 100644 --- a/codersdk/workspacebuilds.go +++ b/codersdk/workspacebuilds.go @@ -58,7 +58,7 @@ type WorkspaceBuild struct { WorkspaceName string `json:"workspace_name"` WorkspaceOwnerID uuid.UUID `json:"workspace_owner_id" format:"uuid"` WorkspaceOwnerName string `json:"workspace_owner_name"` - WorkspaceOwnerAvatarURL string `json:"workspace_owner_avatar_url"` + WorkspaceOwnerAvatarURL string `json:"workspace_owner_avatar_url,omitempty"` TemplateVersionID uuid.UUID `json:"template_version_id" format:"uuid"` TemplateVersionName string `json:"template_version_name"` BuildNumber int32 `json:"build_number"` diff --git a/site/src/api/typesGenerated.ts b/site/src/api/typesGenerated.ts index 95546529feac9..74631c2be32fd 100644 --- a/site/src/api/typesGenerated.ts +++ b/site/src/api/typesGenerated.ts @@ -1366,7 +1366,7 @@ export interface MinimalOrganization { export interface MinimalUser { readonly id: string; readonly username: string; - readonly avatar_url: string; + readonly avatar_url?: string; } // From netcheck/netcheck.go @@ -1639,8 +1639,8 @@ export interface OrganizationMember { // From codersdk/organizations.go export interface OrganizationMemberWithUserData extends OrganizationMember { readonly username: string; - readonly name: string; - readonly avatar_url: string; + readonly name?: string; + readonly avatar_url?: string; readonly email: string; readonly global_roles: readonly SlimRole[]; } @@ -2253,11 +2253,11 @@ export interface RateLimitConfig { // From codersdk/users.go export interface ReducedUser extends MinimalUser { - readonly name: string; + readonly name?: string; readonly email: string; readonly created_at: string; readonly updated_at: string; - readonly last_seen_at: string; + readonly last_seen_at?: string; readonly status: UserStatus; readonly login_type: LoginType; readonly theme_preference?: string; @@ -3609,7 +3609,7 @@ export interface WorkspaceBuild { readonly workspace_name: string; readonly workspace_owner_id: string; readonly workspace_owner_name: string; - readonly workspace_owner_avatar_url: string; + readonly workspace_owner_avatar_url?: string; readonly template_version_id: string; readonly template_version_name: string; readonly build_number: number; diff --git a/site/src/components/UserAutocomplete/UserAutocomplete.tsx b/site/src/components/UserAutocomplete/UserAutocomplete.tsx index e375116cd2d22..c1b86e4d23afc 100644 --- a/site/src/components/UserAutocomplete/UserAutocomplete.tsx +++ b/site/src/components/UserAutocomplete/UserAutocomplete.tsx @@ -20,7 +20,7 @@ import { prepareQuery } from "utils/filters"; // The common properties between users and org members that we need. export type SelectedUser = { - avatar_url: string; + avatar_url?: string; email: string; username: string; }; diff --git a/site/src/pages/ChatPage/ChatLanding.tsx b/site/src/pages/ChatPage/ChatLanding.tsx index fb49c609e6639..2902ae8663da5 100644 --- a/site/src/pages/ChatPage/ChatLanding.tsx +++ b/site/src/pages/ChatPage/ChatLanding.tsx @@ -62,7 +62,7 @@ const ChatLanding: FC = () => { textAlign: "center", }} > - Good evening, {user?.name.split(" ")[0]} + Good evening, {(user.name ?? user.username).split(" ")[0]}
{ // Given const mockInitialValues: UpdateUserProfileRequest = { username: MockUserMember.username, - name: MockUserMember.name, + name: MockUserMember.name ?? MockUserMember.username, }; // When @@ -44,7 +44,7 @@ describe("AccountForm", () => { // Given const mockInitialValues: UpdateUserProfileRequest = { username: MockUserMember.username, - name: MockUserMember.name, + name: MockUserMember.name ?? MockUserMember.username, }; // When diff --git a/site/src/pages/UserSettingsPage/AccountPage/AccountPage.tsx b/site/src/pages/UserSettingsPage/AccountPage/AccountPage.tsx index c013e9086b242..7772d00fba856 100644 --- a/site/src/pages/UserSettingsPage/AccountPage/AccountPage.tsx +++ b/site/src/pages/UserSettingsPage/AccountPage/AccountPage.tsx @@ -29,7 +29,7 @@ const AccountPage: FC = () => { email={me.email} updateProfileError={updateProfileError} isLoading={isUpdatingProfile} - initialValues={{ username: me.username, name: me.name }} + initialValues={{ username: me.username, name: me.name ?? "" }} onSubmit={updateProfile} /> diff --git a/site/src/testHelpers/entities.ts b/site/src/testHelpers/entities.ts index 1e8d6f3aa7b0b..0b0041ffdf18c 100644 --- a/site/src/testHelpers/entities.ts +++ b/site/src/testHelpers/entities.ts @@ -539,8 +539,8 @@ export const MockOrganizationMember: TypesGen.OrganizationMemberWithUserData = { user_id: MockUserOwner.id, username: MockUserOwner.username, email: MockUserOwner.email, - created_at: "", - updated_at: "", + updated_at: "2025-05-22T17:51:49.49745Z", + created_at: "2025-05-22T17:51:49.497449Z", name: MockUserOwner.name, avatar_url: MockUserOwner.avatar_url, global_roles: MockUserOwner.roles, @@ -553,8 +553,8 @@ export const MockOrganizationMember2: TypesGen.OrganizationMemberWithUserData = user_id: MockUserMember.id, username: MockUserMember.username, email: MockUserMember.email, - created_at: "", - updated_at: "", + updated_at: "2025-05-22T17:51:49.49745Z", + created_at: "2025-05-22T17:51:49.497449Z", name: MockUserMember.name, avatar_url: MockUserMember.avatar_url, global_roles: MockUserMember.roles,
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: