Skip to content

Commit 0ba37cc

Browse files
authored
fix: use iterator to load events from event-query (#2600)
1 parent 764bf12 commit 0ba37cc

File tree

3 files changed

+23
-20
lines changed

3 files changed

+23
-20
lines changed

packages/mgt-components/src/components/mgt-agenda/mgt-agenda.graph.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,16 @@
88
import { GraphPageIterator, IGraph, prepScopes } from '@microsoft/mgt-element';
99
import * as MicrosoftGraph from '@microsoft/microsoft-graph-types';
1010

11+
export const getEventsQueryPageIterator = async (
12+
graph: IGraph,
13+
query: string,
14+
scopes = 'calendars.read'
15+
): Promise<GraphPageIterator<MicrosoftGraph.Event>> => {
16+
const request = graph.api(query).middlewareOptions(prepScopes(scopes)).orderby('start/dateTime');
17+
18+
return GraphPageIterator.create<MicrosoftGraph.Event>(graph, request);
19+
};
20+
1121
/**
1222
* returns Calender events iterator associated with either the logged in user or a specific groupId
1323
*
@@ -24,8 +34,6 @@ export const getEventsPageIterator = async (
2434
endDateTime: Date,
2535
groupId?: string
2636
): Promise<GraphPageIterator<MicrosoftGraph.Event>> => {
27-
const scopes = 'calendars.read';
28-
2937
const sdt = `startdatetime=${startDateTime.toISOString()}`;
3038
const edt = `enddatetime=${endDateTime.toISOString()}`;
3139

@@ -39,7 +47,5 @@ export const getEventsPageIterator = async (
3947

4048
uri += `/calendarview?${sdt}&${edt}`;
4149

42-
const request = graph.api(uri).middlewareOptions(prepScopes(scopes)).orderby('start/dateTime');
43-
44-
return GraphPageIterator.create<MicrosoftGraph.Event>(graph, request);
50+
return getEventsQueryPageIterator(graph, uri);
4551
};

packages/mgt-components/src/components/mgt-agenda/mgt-agenda.ts

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import {
2020
import '../../styles/style-helper';
2121
import '../mgt-person/mgt-person';
2222
import { styles } from './mgt-agenda-css';
23-
import { getEventsPageIterator } from './mgt-agenda.graph';
23+
import { getEventsPageIterator, getEventsQueryPageIterator } from './mgt-agenda.graph';
2424
import { SvgIcon, getSvg } from '../../utils/SvgHelper';
2525
import { MgtPeople } from '../mgt-people/mgt-people';
2626
import { registerFluentComponents } from '../../utils/FluentComponents';
@@ -182,9 +182,9 @@ export class MgtAgenda extends MgtTemplatedComponent {
182182

183183
/**
184184
* allows developer to specify preferred timezone that should be used for
185-
* retrieving events from Graph, eg. `Pacific Standard Time`. The preferred timezone for
186-
* the current user can be retrieved by calling `me/mailboxSettings` and
187-
* retrieving the value of the `timeZone` property.
185+
* rendering events retrieved from Graph, eg. `America/Los_Angeles`.
186+
* By default events are rendered using the current timezone of the
187+
* device being used.
188188
*
189189
* @type {string}
190190
*/
@@ -629,17 +629,14 @@ export class MgtAgenda extends MgtTemplatedComponent {
629629
} else {
630630
query = this.eventQuery;
631631
}
632+
const iterator = await getEventsQueryPageIterator(graph, query, scope);
633+
if (iterator?.value) {
634+
events = iterator.value;
632635

633-
let request = graph.api(query);
634-
635-
if (scope) {
636-
request = request.middlewareOptions(prepScopes(scope));
637-
}
638-
639-
const results = (await request.get()) as CollectionResponse<MicrosoftGraph.Event>;
640-
641-
if (results?.value) {
642-
events = results.value;
636+
while (iterator.hasNext) {
637+
await iterator.next();
638+
events = iterator.value;
639+
}
643640
}
644641
// eslint-disable-next-line no-empty
645642
} catch (e) {}

stories/components/agenda/agenda.properties.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export default {
1515
};
1616

1717
export const getByEventQuery = () => html`
18-
<mgt-agenda event-query="/me/events?orderby=start/dateTime"></mgt-agenda>
18+
<mgt-agenda event-query="/me/calendarview?$orderby=start/dateTime&startdatetime=2023-07-12T00:00:00.000Z&enddatetime=2023-07-18T00:00:00.000Z"></mgt-agenda>
1919
`;
2020

2121
export const groupByDay = () => html`

0 commit comments

Comments
 (0)