diff --git a/packages/mattermost-plugin/Atmosphere.ts b/packages/mattermost-plugin/Atmosphere.ts index 088e211c3e6..fca5be364e2 100644 --- a/packages/mattermost-plugin/Atmosphere.ts +++ b/packages/mattermost-plugin/Atmosphere.ts @@ -23,34 +23,40 @@ type State = { } const fetchGraphQL = (state: State) => (params: RequestParameters, variables: Variables) => { - const {serverUrl, store} = state - const authToken = getAuthToken(store.getState()) - const response = fetch( - serverUrl + '/graphql', - Client4.getOptions({ - method: 'POST', - headers: { - accept: 'application/json', - 'content-type': 'application/json', - 'x-application-authorization': authToken ? `Bearer ${authToken}` : '' - }, - body: JSON.stringify({ - type: 'start', - payload: { - documentId: params.id, - query: params.text, - variables - } + return Observable.create((sink) => { + const {serverUrl, store} = state + const authToken = getAuthToken(store.getState()) + const response = fetch( + serverUrl + '/graphql', + Client4.getOptions({ + method: 'POST', + headers: { + accept: 'application/json', + 'content-type': 'application/json', + 'x-application-authorization': authToken ? `Bearer ${authToken}` : '' + }, + body: JSON.stringify({ + type: 'start', + payload: { + documentId: params.id, + query: params.text, + variables + } + }) }) - }) - ) + ) - return Observable.from( - response.then(async (data) => { - const json = await data.json() - return json.payload - }) - ) + response + .then(async (data) => { + const json = await data.json() + sink.next(json.payload) + sink.complete() + }) + .catch((error) => { + sink.error(error) + sink.complete() + }) + }) } const login = (state: State) => async () => { diff --git a/packages/mattermost-plugin/components/Sidepanel/ActiveMeetings.tsx b/packages/mattermost-plugin/components/Sidepanel/ActiveMeetings.tsx index 235c1fb4fbc..4b3385cdfcd 100644 --- a/packages/mattermost-plugin/components/Sidepanel/ActiveMeetings.tsx +++ b/packages/mattermost-plugin/components/Sidepanel/ActiveMeetings.tsx @@ -32,6 +32,12 @@ const ActiveMeetings = () => { `, { channel: channel?.id ?? '' + }, + { + networkCacheConfig: { + force: true, + poll: 15000 + } } ) const {viewer, linkedTeamIds} = data