╭──────────╮ │← previous│ ╰──────────╯ ╭ changed ─╮ │src/ui.zig│ ╰──────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1914 .repo_repo_new => |a_name| std.mem.eql(u8, a_name.slice(), b.repo_repo_new.slice()), │ │1915 .repo_user_new => |a_name| std.mem.eql(u8, a_name.slice(), b.repo_user_new.slice()), │ │1916 .repo_settings => |a_name| std.mem.eql(u8, a_name.slice(), b.repo_settings.slice()), │ │1917 - .repo_roles => |a_r| std.mem.eql(u8, a_r.name.slice(), b.repo_roles.name.slice()) and │ │1918 - a_r.start == b.repo_roles.start and │ │1919 - std.mem.eql(u8, a_r.user.slice(), b.repo_roles.user.slice()) and │ │1920 - a_r.confirm == b.repo_roles.confirm, │ │1917 + .repo_members => |a_r| std.mem.eql(u8, a_r.name.slice(), b.repo_members.name.slice()) and │ │1918 + a_r.start == b.repo_members.start and │ │1919 + std.mem.eql(u8, a_r.user.slice(), b.repo_members.user.slice()) and │ │1920 + a_r.confirm == b.repo_members.confirm, │ │1921 .repo_user => |a_u| std.mem.eql(u8, a_u.name.slice(), b.repo_user.name.slice()) and a_u.tab.eql(b.repo_user.tab), │ │1922 .fork_patch => |a_f| std.mem.eql(u8, a_f.name.slice(), b.fork_patch.name.slice()) and std.mem.eql(u8, a_f.id.slice(), b.fork_patch.id.slice()),│ │1923 .fork_diff => |a_d| std.mem.eql(u8, a_d.fork.name.slice(), b.fork_diff.fork.name.slice()) and │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────╮ │2368 } │ │2369 }; │ │2370 │ │2371 - pub const RolesFailure = enum { not_found, already_added }; │ │2371 + pub const MembersFailure = enum { not_found, already_added }; │ │2372 │ │2373 pub const AssignmentFailure = enum { not_found, not_an_email, already_assigned };│ │2374 │ ╰───────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────╮ │2455 patch_role: ?evt.Repo.Role,│ │2456 }, │ │2457 }, │ │2458 - repo_roles: struct { │ │2459 - failure: RolesFailure, │ │2458 + repo_members: struct { │ │2459 + failure: MembersFailure, │ │2460 name: []const u8, │ │2461 }, │ │2462 assignment: struct { │ ╰─────────────────────────────────────────────────╯ ╭ changed ──────╮ │src/ui/Repo.zig│ ╰───────────────╯ ╭────────────────────────────────────────────────────────╮ │27 pub const Undo = @import("./Repo/Undo.zig"); │ │28 pub const Events = @import("./Repo/Events.zig"); │ │29 pub const Settings = @import("./Repo/Settings.zig");│ │30 -pub const Roles = @import("./Repo/Roles.zig"); │ │30 +pub const Members = @import("./Repo/Members.zig"); │ │31 pub const Quit = @import("./Quit.zig"); │ │32 │ │33 header: Header, │ ╰────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────╮ │212 .repo_events => |*e| e.selected.slice(), │ │213 else => "", │ │214 }; │ │215 - const roles_route: ui.RoutablePage.RepoRolesRoute = switch (route) { │ │216 - .repo_roles => |r| r, │ │215 + const members_route: ui.RoutablePage.RepoMembersRoute = switch (route) {│ │216 + .repo_members => |r| r, │ │217 else => .{ .name = .{} }, │ │218 }; │ │219 // the thread the route shows, whose notif viewing it reads │ ╰─────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │325 .issue_role = repo.event.issue_role, │ │326 .patch_role = repo.event.patch_role, │ │327 .hash_kind = opened.self_repo_opts.hash, │ │328 - .view = if (route == .repo_roles) .roles else .settings, │ │329 - .roles = try Roles.init(io, gpa, arena, session.haxy_moment orelse return error.NoMoment, session.users_dir orelse return error.NoMoment, repo_identity.identity, &owner_id, &repo_id, roles_route.start, if (roles_route.confirm) |action| .{ .action = action, .name = roles_route.user.slice() } else null), │ │328 + .view = if (route == .repo_members) .members else .settings, │ │329 + .members = try Members.init(io, gpa, arena, session.haxy_moment orelse return error.NoMoment, session.users_dir orelse return error.NoMoment, repo_identity.identity, &owner_id, &repo_id, members_route.start, if (members_route.confirm) |action| .{ .action = action, .name = members_route.user.slice() } else null),│ │330 }; │ │331 } │ │332 // tabs switch in-page, so every tab's data is read here │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │390 }; │ │391 }; │ │392 if (route == .repo_undo and undo_data == null) return error.NotFound; │ │393 - if ((route == .repo_settings or route == .repo_roles) and settings == null) return error.NotFound; │ │393 + if ((route == .repo_settings or route == .repo_members) and settings == null) return error.NotFound;│ │394 if (undo_data) |*undo| undo.clear = undo_clear; │ │395 discussions.repo_source = source; │ │396 issues.repo_source = source; │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ─────────────╮ │src/ui/Repo/Header.zig│ ╰──────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │303 var text_box = try wgt.TextBox.init(allocator, ui.Repo.Settings.tab_label, .{ .border = .single, .round_corners = true, .wrap_kind = .none });│ │304 errdefer text_box.deinit(allocator); │ │305 text_box.getFocus().mode = .all; │ │306 - const selected = current_tag == .repo_settings or current_tag == .repo_roles; │ │306 + const selected = current_tag == .repo_settings or current_tag == .repo_members; │ │307 text_box.getFocus().kind = .{ .custom = try ui.inPageTabLink(session, route, selected) }; │ │308 try tab_ids.put(allocator, text_box.getFocus().id, {}); │ │309 if (selected) selected_tab = text_box.getFocus().id; │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ removed ────────────╮ │src/ui/Repo/Roles.zig│ ╰─────────────────────╯ ╭ changed ───────────────╮ │src/ui/Repo/Settings.zig│ ╰────────────────────────╯ ╭────────────────────────────────────────────────────╮ │12 const Grid = xitui.grid.Grid; │ │13 const Focus = xitui.focus.Focus; │ │14 │ │15 -const Roles = @import("./Roles.zig"); │ │15 +const Members = @import("./Members.zig"); │ │16 │ │17 const wasm = builtin.target.cpu.arch == .wasm32;│ │18 │ ╰────────────────────────────────────────────────────╯ ╭──────╮ │next →│ ╰──────╯