╭ changed ──────╮ │src/ui/User.zig│ ╰───────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────╮ │19 pub const page_size = 20; // how many repos one window of the repos tab shows │ │20 │ │21 header: Header, │ │22 -user: evt.User.Safe, │ │23 -repos: []const evt.Repo, │ │22 +user: evt.User.Public, │ │23 +repos: []const evt.Repo.Record, │ │24 repos_start: usize, // the repos window this page was built with, mirrored into the url│ │25 repos_next_start: ?usize, // the `start` for the "next" row, or null on the last window│ │26 settings: Settings, │ ╰───────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │50 │ │51 const user = (try evt.User.readById(DB, hash_kind, haxy_moment, arena, user_id)) orelse return error.NotFound;│ │52 │ │53 - var repos: std.ArrayList(evt.Repo) = .empty; │ │53 + var repos: std.ArrayList(evt.Repo.Record) = .empty; │ │54 var repos_next_start: ?usize = null; │ │55 │ │56 // the user-id->repo-id-set index maps each user to a set of their repo event │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │80 const event_id = order_key[@sizeOf(u64)..]; │ │81 const repo_cursor = try event_id_to_repo.getCursor(hash.hashInt(hash_kind, event_id)) orelse continue;│ │82 const repo_map = try DB.HashMap(.read_only).init(repo_cursor); │ │83 - const repo_event = try evt.read(evt.Repo, DB, hash_kind, arena, repo_map); │ │83 + const repo_event = try evt.read(evt.Repo.Record, DB, hash_kind, arena, repo_map); │ │84 try repos.append(arena.allocator(), repo_event); │ │85 } │ │86 repos_next_start = if (end < count) end else null; │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────╮ │88 } │ │89 │ │90 return .{ │ │91 - .header = try Header.init(arena, user.name), │ │92 - .user = evt.User.Safe.init(user), │ │91 + .header = try Header.init(arena, user.event.name),│ │92 + .user = evt.project(evt.User.Public, user.event), │ │93 .repos = repos.items, │ │94 .repos_start = start, │ │95 .repos_next_start = repos_next_start, │ ╰──────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │145 // clicking a repo opens its page; the "a:" prefix makes the web │ │146 // renderer emit an <a href="/repo/alice/foo"> anchor. │ │147 try items.append(aa, .{ │ │148 - .text = try std.fmt.allocPrint(aa, "{s} - {s}", .{ repo.name, repo.description }), │ │149 - .link = try std.fmt.allocPrint(aa, "a:/repo/{s}/{s}", .{ data.user.name, repo.name }), │ │148 + .text = try std.fmt.allocPrint(aa, "{s} - {s}", .{ repo.event.name, repo.event.description }), │ │149 + .link = try std.fmt.allocPrint(aa, "a:/repo/{s}/{s}", .{ data.user.name, repo.event.name }), │ │150 }); │ │151 if (data.repos_next_start) |next_start| │ │152 try items.append(aa, .{ .text = "next →", .link = try std.fmt.allocPrint(aa, "a:/user/{s}/repos/start:{d}", .{ data.user.name, next_start }) });│ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯