Skip to content

Commit

Permalink
Add @nordeck/matrix-meetings-calendar package and move dateTimeUtils …
Browse files Browse the repository at this point in the history
…into it.

Signed-off-by: Mikhail Aheichyk <[email protected]>
  • Loading branch information
Mikhail Aheichyk committed Jan 4, 2024
1 parent bbb7440 commit e6edc93
Show file tree
Hide file tree
Showing 59 changed files with 352 additions and 243 deletions.
6 changes: 6 additions & 0 deletions .changeset/cuddly-rings-beam.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@nordeck/matrix-meetings-widget': patch
'@nordeck/matrix-meetings-bot': patch
---

Use `@nordeck/matrix-meetings-calendar` package.
5 changes: 5 additions & 0 deletions .changeset/heavy-glasses-shout.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@nordeck/matrix-meetings-calendar': major
---

Initial release
2 changes: 2 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,5 @@
!/matrix-meetings-bot/conf
!/matrix-meetings-bot/lib
!/resolutions/matrix-sdk-crypto-nodejs
!/packages/calendar/package.json
!/packages/calendar/lib
16 changes: 16 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ jobs:
- name: type checking and declarations
run: yarn tsc

- name: Check Calendar Linting Rules
working-directory: ./packages/calendar/
run: yarn run lint

- name: Check Linting Rules
working-directory: ./matrix-meetings-widget/
run: yarn run lint
Expand All @@ -40,6 +44,10 @@ jobs:
working-directory: ./matrix-meetings-widget/
run: yarn translate --fail-on-update

- name: test calendar
working-directory: ./packages/calendar/
run: yarn test:all

- name: test
working-directory: ./matrix-meetings-widget/
run: yarn test:all
Expand Down Expand Up @@ -111,6 +119,10 @@ jobs:
- name: type checking and declarations
run: yarn tsc

- name: Check Calendar Linting Rules
working-directory: ./packages/calendar/
run: yarn run lint

- name: Check Linting Rules
working-directory: ./matrix-meetings-bot/
run: yarn run lint
Expand All @@ -119,6 +131,10 @@ jobs:
working-directory: ./matrix-meetings-bot/
run: yarn translate --fail-on-update

- name: test calendar
working-directory: ./packages/calendar/
run: yarn test:all

- name: test
working-directory: ./matrix-meetings-bot/
run: yarn test:all
Expand Down
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
**/coverage/
matrix-meetings-bot/lib/
matrix-meetings-bot/storage
packages/calendar/lib

# Ignore the helm chart
charts/
Expand Down
3 changes: 3 additions & 0 deletions matrix-meetings-bot/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ WORKDIR /build
COPY package.json yarn.lock ./
COPY matrix-meetings-bot/package.json ./matrix-meetings-bot/
COPY resolutions/matrix-sdk-crypto-nodejs ./resolutions/matrix-sdk-crypto-nodejs/
COPY packages/calendar/package.json ./packages/calendar/package.json
COPY packages/calendar/lib ./packages/calendar/lib
RUN yarn install --production --frozen-lockfile --network-timeout 1000000

FROM node:20-alpine3.19
Expand All @@ -15,6 +17,7 @@ RUN set -x\
&& chmod -R g+w /app/storage
USER 101
COPY --from=node_modules /build/node_modules/ ./node_modules
COPY --from=node_modules /build/packages/calendar/ ./packages/calendar/
COPY matrix-meetings-bot/conf ./conf
COPY matrix-meetings-bot/lib ./lib
CMD ["node", "./lib/index.js"]
8 changes: 6 additions & 2 deletions matrix-meetings-bot/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,11 +45,12 @@
"html-entities": "^2.4.0",
"i18next": "^23.7.14",
"i18next-fs-backend": "^2.3.1",
"joi": "^17.11.0",
"i18next-http-middleware": "^3.5.0",
"joi": "^17.11.0",
"lodash": "^4.17.20",
"luxon": "^3.3.0",
"matrix-bot-sdk": "^0.7.0",
"@nordeck/matrix-meetings-calendar": "0.0.1",
"mime-types": "^2.1.35",
"mustache": "^4.2.0",
"nestjs-pino": "^3.5.0",
Expand Down Expand Up @@ -109,7 +110,10 @@
"roots": [
"<rootDir>/src",
"<rootDir>/test"
]
],
"moduleNameMapper": {
"matrix-meetings-(.*)": "<rootDir>/../packages/$1/src/index.ts"
}
},
"files": [
"test/*",
Expand Down
4 changes: 2 additions & 2 deletions matrix-meetings-bot/src/client/JitsiClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import { MeetingSharingInformationDto } from '../dto/MeetingSharingInformationDt
export class JitsiClient {
private logger = new Logger(JitsiClient.name);

private cached_jitsi_dial_in_numbers = null;
private cached_jitsi_dial_in_numbers: unknown = null;

constructor(
@Inject(ModuleProviderToken.APP_CONFIGURATION)
Expand Down Expand Up @@ -110,7 +110,7 @@ export class JitsiClient {
);
const response = await fetch(url, { method: 'get' });
if (response.ok) {
result = (await response.json()).id;
result = ((await response.json()) as any).id;
} else {
this.logger.error(
`Could not fetch jitsi_pin_url ${this.appConfig.jitsi_pin_url} ${
Expand Down
5 changes: 2 additions & 3 deletions matrix-meetings-bot/src/middleware/MatrixAuthMiddleware.ts
Original file line number Diff line number Diff line change
Expand Up @@ -127,8 +127,7 @@ export class MatrixAuthMiddleware implements NestMiddleware {

if (response.ok) {
const result = await response.json();
const userId = result.sub;
return userId;
return (result as any).sub; // user id
} else {
const text = await response.text();
const status = response.status;
Expand Down Expand Up @@ -156,7 +155,7 @@ export class MatrixAuthMiddleware implements NestMiddleware {
}
if (response.ok) {
const json = await response.json();
return json.user_id;
return (json as any).user_id;
} else {
const text = await response.text();
const status = response.status;
Expand Down
2 changes: 1 addition & 1 deletion matrix-meetings-bot/src/service/RoomMessageService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
*/

import { Injectable, Logger } from '@nestjs/common';
import { parseICalDate } from '@nordeck/matrix-meetings-calendar';
import i18next from 'i18next';
import { MatrixClient } from 'matrix-bot-sdk';
import { MatrixEndpoint } from '../MatrixEndpoint';
Expand All @@ -24,7 +25,6 @@ import { ISyncParams } from '../matrix/dto/ISyncParams';
import { IMeeting } from '../model/IMeeting';
import { IUserContext } from '../model/IUserContext';
import { StateEventName } from '../model/StateEventName';
import { parseICalDate } from '../shared';
import { formatRRuleText } from '../shared/format';
import { IMeetingChanges } from '../util/IMeetingChanges';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,12 @@
* limitations under the License.
*/

import {
formatICalDate,
parseICalDate,
} from '@nordeck/matrix-meetings-calendar';
import { differenceWith, isEqual } from 'lodash';
import { CalendarEntryDto, DateTimeEntryDto } from '../../dto/CalendarEntryDto';
import { formatICalDate, parseICalDate } from '../dateTimeUtils';
import { isRRuleEntry, isRRuleOverrideEntry, isSingleEntry } from './helpers';

export type CalendarChange =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@
* limitations under the License.
*/

import { parseICalDate } from '@nordeck/matrix-meetings-calendar';
import { DateTime } from 'luxon';
import { RRule, RRuleSet } from 'rrule';
import { CalendarEntryDto } from '../../dto/CalendarEntryDto';
import { parseICalDate } from '../dateTimeUtils';
import { isFiniteSeries } from './helpers';

export function generateRruleSet(entry: CalendarEntryDto & { rrule: string }): {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@
* limitations under the License.
*/

import { parseICalDate } from '@nordeck/matrix-meetings-calendar';
import { max } from 'lodash';
import { DateTime } from 'luxon';
import { CalendarEntryDto } from '../../dto/CalendarEntryDto';
import { parseICalDate } from '../dateTimeUtils';
import { generateRruleSet } from './generateRruleSet';
import { isRRuleEntry, isRRuleOverrideEntry, isSingleEntry } from './helpers';

Expand Down
1 change: 0 additions & 1 deletion matrix-meetings-bot/src/shared/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,3 @@
*/

export { getForceDeletionTime } from './calendarUtils';
export { formatICalDate, parseICalDate, toISOString } from './dateTimeUtils';
2 changes: 1 addition & 1 deletion matrix-meetings-bot/src/util/TemplateHelper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@
* limitations under the License.
*/

import { parseICalDate } from '@nordeck/matrix-meetings-calendar';
import i18next from 'i18next';
import { fullNumericDateFormat } from '../dateFormat';
import { CalendarEntryDto } from '../dto/CalendarEntryDto';
import { IUserContext } from '../model/IUserContext';
import { parseICalDate } from '../shared';
import { getSingleOrRecurringEntry } from '../shared/calendarUtils';
import { formatRRuleText } from '../shared/format';

Expand Down
2 changes: 1 addition & 1 deletion matrix-meetings-bot/src/util/migrateMeetingTime.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@
* limitations under the License.
*/

import { formatICalDate } from '@nordeck/matrix-meetings-calendar';
import { DateTime } from 'luxon';
import { v4 as uuiv4 } from 'uuid';
import { CalendarEntryDto } from '../dto/CalendarEntryDto';
import { formatICalDate } from '../shared';

export interface IMeetingTime {
start_time?: string;
Expand Down
1 change: 1 addition & 0 deletions matrix-meetings-bot/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"emitDecoratorMetadata": true,
"module": "commonjs",
"target": "es6",
"lib": ["esnext"],
"noImplicitAny": true,
"sourceMap": true,
"outDir": "./lib",
Expand Down
33 changes: 32 additions & 1 deletion matrix-meetings-widget/craco.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@
*/

module.exports = {
plugins: [{ plugin: require('./scripts/craco/ignoreRRuleWarnings') }],
plugins: [
{ plugin: require('./scripts/craco/ignoreRRuleWarnings') },
{ plugin: importLocalPackages() },
],

webpack: {
configure: {
Expand All @@ -28,3 +31,31 @@ module.exports = {
},
},
};

/**
* Craco plugin for using local packages from the same mono repository.
*/
function importLocalPackages() {
const path = require('path');
const { getLoader, loaderByName } = require('@craco/craco');
const absolutePath = path.join(__dirname, '../packages');

function overrideWebpackConfig({ webpackConfig }) {
const { isFound, match } = getLoader(
webpackConfig,
loaderByName('babel-loader'),
);
if (isFound) {
const include = Array.isArray(match.loader.include)
? match.loader.include
: [match.loader.include];

match.loader.include = include.concat(absolutePath);
}
return webpackConfig;
}

return {
overrideWebpackConfig,
};
}
6 changes: 5 additions & 1 deletion matrix-meetings-widget/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
"joi": "^17.11.0",
"lodash": "^4.17.20",
"luxon": "^3.3.0",
"@nordeck/matrix-meetings-calendar": "0.0.1",
"matrix-widget-api": "^1.5.0",
"mustache": "^4.2.0",
"react": "^17.0.2",
Expand Down Expand Up @@ -103,7 +104,10 @@
"jest": {
"transformIgnorePatterns": [
"(?!(/node_modules/(@fullcalendar)/))(/node_modules/.+.(js|jsx|mjs|cjs|ts|tsx)$)"
]
],
"moduleNameMapper": {
"matrix-meetings-(.*)": "<rootDir>/../packages/$1/src/index.ts"
}
},
"repository": {
"type": "git",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,17 @@
* limitations under the License.
*/

import {
CalendarEntry,
DateTimeEntry,
formatICalDate,
parseICalDate,
} from '@nordeck/matrix-meetings-calendar';
import { isArray, uniq } from 'lodash';
import { DateTime } from 'luxon';
import { useEffect, useMemo, useState } from 'react';
import { tzlib_get_ical_block } from 'timezones-ical-library';
import { CalendarEntry, DateTimeEntry } from '../../../lib/matrix';
import { formatICalDate, isDefined, parseICalDate } from '../../../lib/utils';
import { isDefined } from '../../../lib/utils';
import {
Meeting,
selectNordeckMeetingMetadataEventByRoomId,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,10 @@
* limitations under the License.
*/

import { parseICalDate } from '@nordeck/matrix-meetings-calendar';
import { useMemo } from 'react';
import { useTranslation } from 'react-i18next';
import {
isRecurringCalendarSourceEntry,
parseICalDate,
} from '../../../lib/utils';
import { isRecurringCalendarSourceEntry } from '../../../lib/utils';
import { Meeting } from '../../../reducer/meetingsApi';
import { fullNumericDateFormat } from '../../common/DateTimePickers';
import { formatRRuleText } from '../RecurrenceEditor/utils';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,14 @@ import {
TextField,
} from '@mui/material';
import { unstable_useId as useId, visuallyHidden } from '@mui/utils';
import { parseICalDate } from '@nordeck/matrix-meetings-calendar';
import { DateTime } from 'luxon';
import { ChangeEvent, useCallback, useEffect, useMemo, useState } from 'react';
import { useTranslation } from 'react-i18next';
import {
getInitialMeetingTimes,
isBotUser,
isRecurringCalendarSourceEntry,
parseICalDate,
} from '../../../lib/utils';
import {
Meeting,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,9 @@
*/

import { useWidgetApi } from '@matrix-widget-toolkit/react';
import { parseICalDate, toISOString } from '@nordeck/matrix-meetings-calendar';
import { useEffect, useMemo, useState } from 'react';
import {
isRecurringCalendarSourceEntry,
parseICalDate,
toISOString,
} from '../../../lib/utils';
import { isRecurringCalendarSourceEntry } from '../../../lib/utils';
import { Meeting } from '../../../reducer/meetingsApi';
import { EditRecurringMessage } from './EditRecurringMessage';
import { ScheduleMeeting } from './ScheduleMeeting';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,15 @@
* limitations under the License.
*/

import {
CalendarEntry,
formatICalDate,
} from '@nordeck/matrix-meetings-calendar';
import { createAsyncThunk } from '@reduxjs/toolkit';
import { t } from 'i18next';
import { DateTime } from 'luxon';
import { ModalButtonKind } from 'matrix-widget-api';
import { CalendarEntry } from '../../../lib/matrix';
import { formatICalDate, normalizeCalendarEntry } from '../../../lib/utils';
import { normalizeCalendarEntry } from '../../../lib/utils';
import { overrideCalendarEntries } from '../../../lib/utils/calendarUtils/overrideCalendarEntries';
import { meetingBotApi } from '../../../reducer/meetingBotApi';
import {
Expand Down
Loading

0 comments on commit e6edc93

Please sign in to comment.