{"record":{"id":"712dcdefe01d9f53","repo":"tinyhumansai/openhuman","slug":"core-rejected-the-meet-list-upcoming-request","errorCode":null,"errorMessage":"Core rejected the meet_list_upcoming request.","messagePattern":"Core rejected the meet_list_upcoming request\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"app/src/services/meetCallService.ts","lineNumber":409,"sourceCode":"}\n\n/**\n * Fetch upcoming calendar meetings that have a conferencing link.\n * Returns an empty array when no Google Calendar is connected.\n */\nexport async function listUpcomingMeetings(\n  lookaheadMinutes?: number,\n  limit?: number\n): Promise<UpcomingMeeting[]> {\n  const result = await callCoreRpc<CoreListUpcomingResponse>({\n    method: 'openhuman.meet_list_upcoming',\n    params: {\n      ...(lookaheadMinutes != null ? { lookahead_minutes: lookaheadMinutes } : {}),\n      ...(limit != null ? { limit } : {}),\n    },\n  });\n  if (!result?.ok) {\n    throw new Error('Core rejected the meet_list_upcoming request.');\n  }\n  return result.meetings ?? [];\n}\n\n// ---------------------------------------------------------------------------\n// Per-event join-policy overrides\n// ---------------------------------------------------------------------------\n\ninterface CoreSetEventPolicyResponse {\n  ok: boolean;\n}\n\ninterface CoreGetEventPoliciesResponse {\n  ok: boolean;\n  policies: Record<string, string>;\n}\n\n/**","sourceCodeStart":391,"sourceCodeEnd":427,"githubUrl":"https://github.com/tinyhumansai/openhuman/blob/a221052e0df5b1f7598fceba7329fd1af95d6699/app/src/services/meetCallService.ts#L391-L427","documentation":"`openhuman.meet_list_upcoming` resolved with `ok` falsy — the meet controller ran but refused the listing. Upcoming meetings come from the calendar connection plus per-event join-policy data, so failures usually trace to calendar state: not connected, token expired, or event fetch failing core-side. Both `lookahead_minutes` and `limit` are optional and omitted when null; bad values (negative, huge) can also be rejected by the handler.","triggerScenarios":"Calendar integration disconnected or its OAuth token expired mid-session; a negative `lookaheadMinutes` or `limit` of 0; backend calendar sync error propagating as ok:false.","commonSituations":"Fresh install where calendar was never connected but the UI assumes it is; revoked calendar grant; sleep/wake leaving the sync stale; passing `limit: 0` from an unclamped UI control.","solutions":["Check calendar connection status in Settings → Connections and reconnect if needed","Clamp `lookaheadMinutes` (>0) and `limit` (>=1) before calling, or omit them to use defaults","Inspect core logs for the meet_list_upcoming handler error","Retry after reconnecting the calendar provider"],"exampleFix":"// before\nconst meetings = await listUpcomingMeetings(lookahead ?? -1, limit);\n\n// after\nconst meetings = await listUpcomingMeetings(\n  lookahead != null && lookahead > 0 ? Math.min(lookahead, 1440) : undefined,\n  limit != null && limit > 0 ? Math.min(limit, 100) : undefined\n);","handlingStrategy":"try-catch","validationCode":"const args = {\n  ...(lookaheadMinutes != null && lookaheadMinutes > 0 ? { lookahead_minutes: Math.min(lookaheadMinutes, 1440) } : {}),\n  ...(limit != null && limit > 0 ? { limit: Math.min(limit, 100) } : {}),\n};","typeGuard":null,"tryCatchPattern":"let meetings: UpcomingMeeting[] = [];\ntry { meetings = await listUpcomingMeetings(); }\ncatch (e) {\n  // usually calendar auth — prompt reconnect instead of crashing the view\n  showCalendarReconnectPrompt();\n}","preventionTips":["Clamp or omit optional numeric params instead of forwarding raw UI values","Check calendar connection status before rendering upcoming-meeting views","Re-request calendar access on auth-style failures instead of retrying blindly"],"tags":["meet","calendar","core-rpc","validation"],"backgroundTag":null,"analyzedSha":"a221052e0df5b1f7598fceba7329fd1af95d6699","analyzedAt":"2026-08-16T12:47:06.542Z","schemaVersion":2},"datasetVersion":"2026-08-16T13:17:31.715Z"}