╭ changed ─╮ │src/ui.zig│ ╰──────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │41 else => 0, │ │42 }) }, │ │43 .user => switch (route) { │ │44 - .user => |u| .{ .user = try User.init(arena, haxy_moment, u.name, u.after) }, │ │44 + .user_repos => |u| .{ .user = try User.init(arena, haxy_moment, u.name, u.after) }, │ │45 .user_settings, .user_auth => |name| .{ .user = try User.init(arena, haxy_moment, name, 0) },│ │46 else => return error.UnexpectedRoute, │ │47 }, │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────╮ │69 home_repos: usize, // 0 = first page │ │70 home_settings, │ │71 home_auth, │ │72 - user: struct { name: Array(evt.User.name_max_len), after: usize = 0 }, │ │72 + user_repos: struct { name: Array(evt.User.name_max_len), after: usize = 0 },│ │73 user_settings: Array(evt.User.name_max_len), │ │74 user_auth: Array(evt.User.name_max_len), │ │75 repo_files: struct { name: Array(repo_route_max_len), after: usize = 0 }, │ ╰────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │226 .home_repos => "/repos", │ │227 .home_settings => "/settings", │ │228 .home_auth => "/auth", │ │229 - .user, .user_settings, .user_auth => @compileError("user routes are dynamic; use urlAlloc"), │ │229 + .user_repos, .user_settings, .user_auth => @compileError("user routes are dynamic; use urlAlloc"), │ │230 .repo_files, .repo_commits, .repo_refs, .repo_settings, .repo_auth => @compileError("repo routes are dynamic; use urlAlloc"),│ │231 }; │ │232 } │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │235 return switch (self) { │ │236 .home_users => |after| if (after == 0) @as([]const u8, "/users") else try std.fmt.allocPrint(arena.allocator(), "/users?after={d}", .{after}),│ │237 .home_repos => |after| if (after == 0) @as([]const u8, "/repos") else try std.fmt.allocPrint(arena.allocator(), "/repos?after={d}", .{after}),│ │238 - .user => |u| if (u.after == 0) │ │238 + .user_repos => |u| if (u.after == 0) │ │239 try std.fmt.allocPrint(arena.allocator(), user_segment ++ "{s}", .{u.name.slice()}) │ │240 else │ │241 try std.fmt.allocPrint(arena.allocator(), user_segment ++ "{s}?after={d}", .{ u.name.slice(), u.after }), │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────╮ │262 pub fn parent(self: RoutablePage) PageKind { │ │263 return switch (self) { │ │264 .home_users, .home_repos, .home_settings, .home_auth => .home, │ │265 - .user, .user_settings, .user_auth => .user, │ │265 + .user_repos, .user_settings, .user_auth => .user, │ │266 .repo_files, .repo_commits, .repo_refs, .repo_settings, .repo_auth => .repo,│ │267 }; │ │268 } │ ╰─────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────╮ │288 if (std.mem.eql(u8, sub, "auth")) return .{ .user_auth = parsed };│ │289 return null; // unknown sub-path │ │290 } │ │291 - return .{ .user = .{ .name = parsed, .after = after } }; │ │291 + return .{ .user_repos = .{ .name = parsed, .after = after } }; │ │292 } │ │293 // /repo/<username>/<reponame> (files root), then optionally /settings, │ │294 // /auth, or /files/<dir> for a directory in the files tab. the `repo` │ ╰───────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │371 return switch (a) { │ │372 .home_users => |a_after| a_after == b.home_users, │ │373 .home_repos => |a_after| a_after == b.home_repos, │ │374 - .user => |a_u| std.mem.eql(u8, a_u.name.slice(), b.user.name.slice()) and a_u.after == b.user.after, │ │374 + .user_repos => |a_u| std.mem.eql(u8, a_u.name.slice(), b.user_repos.name.slice()) and a_u.after == b.user_repos.after,│ │375 .user_settings => |a_name| std.mem.eql(u8, a_name.slice(), b.user_settings.slice()), │ │376 .user_auth => |a_name| std.mem.eql(u8, a_name.slice(), b.user_auth.slice()), │ │377 .repo_files => |a_f| std.mem.eql(u8, a_f.name.slice(), b.repo_files.name.slice()) and a_f.after == b.repo_files.after,│ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │398 // only a changed `after` on the repos list navigates. │ │399 pub fn userPageChanged(a: RoutablePage, b: RoutablePage) bool { │ │400 return switch (a) { │ │401 - .user => |aa| switch (b) { │ │402 - .user => |bb| std.mem.eql(u8, aa.name.slice(), bb.name.slice()) and aa.after != bb.after, │ │401 + .user_repos => |aa| switch (b) { │ │402 + .user_repos => |bb| std.mem.eql(u8, aa.name.slice(), bb.name.slice()) and aa.after != bb.after,│ │403 else => false, │ │404 }, │ │405 else => false, │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────╮ │432 try jw.objectField("kind"); │ │433 try jw.write(@tagName(self)); │ │434 switch (self) { │ │435 - .user => |u| { │ │435 + .user_repos => |u| { │ │436 try jw.objectField("name"); │ │437 try jw.write(u.name.slice());│ │438 try jw.objectField("after"); │ ╰──────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │492 .home_repos => .{ .home_repos = helper.after }, │ │493 .home_settings => .home_settings, │ │494 .home_auth => .home_auth, │ │495 - .user => .{ .user = .{ .name = try parseName(evt.User.name_max_len, helper.name), .after = helper.after } }, │ │495 + .user_repos => .{ .user_repos = .{ .name = try parseName(evt.User.name_max_len, helper.name), .after = helper.after } },│ │496 .user_settings => .{ .user_settings = try parseName(evt.User.name_max_len, helper.name) }, │ │497 .user_auth => .{ .user_auth = try parseName(evt.User.name_max_len, helper.name) }, │ │498 .repo_files => .{ .repo_files = .{ .name = try parseName(repo_route_max_len, helper.name), .after = helper.after } }, │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯