Issue 1: How to Properly Clean Up Event Listeners in Zoom AppSDK?
Description: I’m using the Zoom AppSDK and adding an event listener as follows:
zoomSdk.addEventListener("onParticipantChange", handleParticipantChange);
My issue is that when my component unmounts, I want to remove this listener . However, the following cleanup method does not seem to work:
zoomSdk.removeEventListener("onParticipantChange", handleParticipantChange);
Even after manually executing the removal, the event listener still seems to be active.
Code Snippet of handleParticipantChange
:
const handleParticipantChange = (data) => {
console.log("Participant change event triggered:", data);
setParticipants((prevParticipants) => {
const participantName = data.participants[0]["screenName"];
const status = data.participants[0]["status"];
// Handle participant leaving
if (status === "leave") {
return prevParticipants.filter((p) => p.name !== participantName);
}
// Handle participant joining
if (status === "join") {
// Check if participant already exists
const exists = prevParticipants.some((p) => p.name === participantName);
if (!exists) {
return [...prevParticipants, { name: participantName, talkTime: "0%" }];
}
}
});
};
Questions:
- What is the correct way to ensure
removeEventListener
properly cleans up the event listener? - Could this be related to how the Zoom SDK handles event bindings internally?
- Are there any additional debugging steps or workarounds I should try?
Issue 2: How to Retrieve Meeting Start Time via Zoom API?
Description: I successfully called the Zoom API to retrieve meeting details, but the response does not include start_time
, which is the key attribute I need to calculate elapsed meeting time.
After some investigation, I suspect this is because my app’s scopes do not include meeting:read:admin
, but I also do not see an option to add it in my app’s scope settings.
Additionally, I found a response stating:
“The reason you don’t see
start_time
in the API response is that your meeting type is 4, which means it’s a personal meeting room (PMI) or an instant meeting.start_time
is usually included only for scheduled meetings (type 2) or recurring meetings (type 3).”
Questions:
- Is this explanation correct?
- If so, is there an alternative way to retrieve the start time for an ongoing PMI/instant meeting?
- Is there any Zoom API endpoint that provides this information reliably?
- How can I confirm if my current scopes are preventing
start_time
from appearing in the response?
Additional Information:
I’ve attached a screenshot of my current scope settings for reference.