╭ changed ─────────────╮ │src/ui/Repo/Events.zig│ ╰──────────────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │342 item.view_url = try route.toUrl(arena); │ │343 }, │ │344 .attach => { │ │345 - const record = (try evt.readRecordSubset(evt.Attachment, struct { author_email: ?[]const u8, event: struct { parent_id: [evt.event_id_size * 2]u8 } }, DB, hash_kind, haxy_moment, arena, id)) orelse return null;│ │345 + const record = (try evt.readRecordSubset(evt.Attachment, struct { author_email: ?[]const u8, event: struct { target_id: [evt.event_id_size * 2]u8 } }, DB, hash_kind, haxy_moment, arena, id)) orelse return null;│ │346 item.author = try ui.Author.initFromEmail(admin_moment, arena, record.author_email); │ │347 if (!include_view_url) return item; │ │348 - var parent_id: [evt.event_id_size]u8 = undefined; │ │349 - _ = std.fmt.hexToBytes(&parent_id, &record.event.parent_id) catch return error.InvalidEventId; │ │350 - const parent_kind = (try evt.readEventKind(hash_kind, kind_map, &parent_id)) orelse return item; │ │351 - if (repo_event.threadRole(parent_kind) == null) return item; │ │352 - const route = ui.RoutablePage.repoThreadCommentsRoute(parent_kind, identity, &record.event.parent_id, 0) orelse return item; │ │348 + const target_id = try evt.parseEventId(&record.event.target_id); │ │349 + const target_kind = (try evt.readEventKind(hash_kind, kind_map, &target_id)) orelse return item; │ │350 + if (repo_event.threadRole(target_kind) == null) return item; │ │351 + const route = ui.RoutablePage.repoThreadCommentsRoute(target_kind, identity, &record.event.target_id, 0) orelse return item; │ │352 item.view_url = try route.toUrl(arena); │ │353 }, │ │354 .assign => { │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯