╭ changed ───────────────╮ │src/ui/Repo/Settings.zig│ ╰────────────────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭─────────────────────────────────────────────────────────────╮ │30 patch_role: ?evt.Repo.Role, │ │31 hash_kind: hash.HashKind, │ │32 // the sub tab the route names │ │33 -view: enum { settings, members, branches }, │ │33 +view: enum { settings, members, branches, delete }, │ │34 members: Members, │ │35 branches: Branches, │ │36 +// the delete sub tab's form, for the repo's creator only│ │37 +delete: ?ui.Delete, │ │38 │ │39 const Self = @This(); │ │40 │ ╰─────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────╮ │64 return error.InvalidRole; │ │65 } │ │66 │ │65 -// the repo settings, members and branches sub tabs over their content │ │67 +// the repo settings, members, branches and delete sub tabs over their content│ │68 pub const View = struct { │ │69 box: wgt.Box(ui.Widget), │ │70 │ ╰──────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │80 errdefer header_scroll.deinit(allocator); │ │81 const header = header_scroll.row(); │ │82 const on_tab = switch (session.data.current_page) { │ │81 - .repo_settings, .repo_members, .repo_branches => true, │ │83 + .repo_settings, .repo_members, .repo_branches, .repo_delete => true, │ │84 else => false, │ │85 }; │ │84 - const routes = [_]?ui.RoutablePage{ ui.RoutablePage.repoSettingsRoute(data.identity), ui.RoutablePage.repoMembersRoute(data.identity, 0), ui.RoutablePage.repoBranchesRoute(data.identity) }; │ │85 - for ([_]@FieldType(Self, "view"){ .settings, .members, .branches }, [_][]const u8{ "repo settings", "members", "branches" }, routes) |view, label, route| { │ │86 + const routes = [_]?ui.RoutablePage{ ui.RoutablePage.repoSettingsRoute(data.identity), ui.RoutablePage.repoMembersRoute(data.identity, 0), ui.RoutablePage.repoBranchesRoute(data.identity), ui.RoutablePage.repoDeleteRoute(data.identity) };│ │87 + const views = [_]@FieldType(Self, "view"){ .settings, .members, .branches, .delete }; │ │88 + const labels = [_][]const u8{ "repo settings", "members", "branches", "delete repo" }; │ │89 + // the delete tab is last, so leaving it out keeps the stack's order │ │90 + const tab_count = if (data.delete != null) views.len else views.len - 1; │ │91 + for (views[0..tab_count], labels[0..tab_count], routes[0..tab_count]) |view, label, route| { │ │92 var tab = try wgt.TextBox.init(allocator, label, .{ .border = .hidden, .round_corners = true, .wrap_kind = .none }); │ │93 errdefer tab.deinit(allocator); │ │94 tab.getFocus().mode = .all; │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │118 errdefer branches.deinit(allocator); │ │119 try stack.children.put(allocator, branches.getFocus().id, .{ .repo_branches = branches }); │ │120 } │ │121 + if (data.delete) |delete| { │ │122 + var view = try ui.Delete.View.init(allocator, delete, session, ui.RoutablePage.repoDeleteRoute(data.identity) orelse return error.RouteTooLong);│ │123 + errdefer view.deinit(allocator); │ │124 + try stack.children.put(allocator, view.getFocus().id, .{ .delete_form = view }); │ │125 + } │ │126 stack.getFocus().child_id = stack.children.keys()[@backingInt(data.view)]; │ │127 try box.children.put(allocator, stack.getFocus().id, .{ .widget = .{ .stack = stack }, .rect = null, .min_size = null }); │ │128 } │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯