╭ changed ──────╮ │src/ui/User.zig│ ╰───────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ 93 const repo_cursor = try event_id_to_repo.getCursor(hash.hashInt(hash_kind, event_id)) orelse continue;│ │ 94 const repo_map = try DB.HashMap(.read_only).init(repo_cursor); │ │ 95 const repo_event = try evt.read(evt.Repo.Record, DB, hash_kind, arena, repo_map); │ │ 96 + // unreadable repos leave their window short rather than shifting the others │ │ 97 + if (evt.Repo.roleOf(repo_event, session.userId()) == .none) continue; │ │ 98 try repos.append(arena.allocator(), repo_event); │ │ 99 } │ │100 repos_next_start = if (end < count) end else null; │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │125 │ │126 const repo_cursor = try repo_records.getCursor(hash.hashInt(hash_kind, record.event.repo_id)) orelse continue; │ │127 const target_repo = try evt.read(evt.Repo.Record, DB, hash_kind, arena, try DB.HashMap(.read_only).init(repo_cursor));│ │128 + if (evt.Repo.roleOf(target_repo, session.userId()) == .none) continue; │ │129 const owner = (try evt.User.readById(DB, hash_kind, haxy_moment, arena, target_repo.event.user_id)) orelse continue; │ │130 const target = try std.fmt.allocPrint(arena.allocator(), "{s}/{s}", .{ owner.event.name, target_repo.event.name }); │ │131 │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯