╭ changed ─╮ │src/ui.zig│ ╰──────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1999 return a.parent() == .fork and b.parent() == .fork and !a.eql(b); │ │2000 } │ │2001 │ │2002 - // true when `a` and `b` are the same user paginated to a different repos │ │2003 - // window or search. switching between a user's tabs is in-page, so only a │ │2004 - // changed `start` or search on the same list navigates. │ │2002 + // true when `a` and `b` are different users' pages, or the same user │ │2003 + // paginated to a different repos window or search. switching between a │ │2004 + // user's tabs is in-page, so only a changed `start` or search on the same │ │2005 + // list navigates. │ │2006 pub fn userPageChanged(a: RoutablePage, b: RoutablePage) bool { │ │2007 + if (a.userPageName()) |a_name| if (b.userPageName()) |b_name| { │ │2008 + if (!std.mem.eql(u8, a_name, b_name)) return true; │ │2009 + }; │ │2010 return switch (a) { │ │2011 .user_repos => |aa| switch (b) { │ │2012 .user_repos => |bb| std.mem.eql(u8, aa.name.slice(), bb.name.slice()) and !a.eql(b),│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────╮ │2024 }; │ │2025 } │ │2026 │ │2027 + // the user a user page belongs to, or null for any other page │ │2028 + fn userPageName(self: *const RoutablePage) ?[]const u8 { │ │2029 + return switch (self.*) { │ │2030 + .user_repos => |*page| page.name.slice(), │ │2031 + .user_forks => |*page| page.name.slice(), │ │2032 + .user_user => |*page| page.name.slice(), │ │2033 + .user_repo_new, .user_user_new => |*name| name.slice(), │ │2034 + else => null, │ │2035 + }; │ │2036 + } │ │2037 + │ │2038 // true when `a` and `b` are the same home list tab paginated to a different│ │2039 // window or search. switching tabs is in-page, so only a changed `start` or│ │2040 // search on the same tab navigates. │ ╰──────────────────────────────────────────────────────────────────────────────────────╯