mirror of
https://gitlab.com/openstapps/openstapps.git
synced 2026-10-21 08:51:39 +00:00
Compare commits
11
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f3f6181c29 | ||
|
|
13e95c96d0 | ||
|
|
ae1cad3bb5 | ||
|
|
93c38b749c | ||
|
|
3547ad19f6 | ||
|
|
d5fbd8654c | ||
|
|
c9ada93f87 | ||
|
|
6d782ecb10 | ||
|
|
1cc3ffedf8 | ||
|
|
05a0525320 | ||
|
|
3c08704345 |
@@ -1,5 +1,17 @@
|
||||
# @openstapps/backend
|
||||
|
||||
## 4.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ae1cad3b: upgrade project to Typescript 5.9
|
||||
- 93c38b74: dependency updates
|
||||
- Updated dependencies [ae1cad3b]
|
||||
- Updated dependencies [93c38b74]
|
||||
- @openstapps/core-tools@4.0.7
|
||||
- @openstapps/core@4.0.7
|
||||
- @openstapps/logger@4.0.7
|
||||
|
||||
## 4.0.6
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@openstapps/backend",
|
||||
"description": "A reference implementation for a StApps backend",
|
||||
"version": "4.0.6",
|
||||
"version": "4.0.7",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "AGPL-3.0-only",
|
||||
@@ -53,7 +53,6 @@
|
||||
"@types/geojson": "1.0.6",
|
||||
"@types/node": "22.15.31",
|
||||
"@types/node-cron": "3.0.7",
|
||||
"@types/nodemailer": "8.0.2",
|
||||
"@types/promise-queue": "2.2.0",
|
||||
"@types/uuid": "8.3.4",
|
||||
"body-parser": "1.20.3",
|
||||
@@ -63,13 +62,13 @@
|
||||
"express": "4.21.2",
|
||||
"express-prom-bundle": "6.6.0",
|
||||
"express-promise-router": "4.1.1",
|
||||
"got": "12.6.0",
|
||||
"got": "14.6.6",
|
||||
"moment": "2.30.1",
|
||||
"morgan": "1.10.1",
|
||||
"nock": "13.3.1",
|
||||
"node-cache": "5.1.2",
|
||||
"node-cron": "3.0.2",
|
||||
"nodemailer": "8.0.11",
|
||||
"nodemailer": "10.1.7",
|
||||
"prom-client": "14.1.1",
|
||||
"promise-queue": "2.2.5",
|
||||
"uuid": "8.3.2"
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @openstapps/database
|
||||
|
||||
## 4.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ae1cad3b: upgrade project to Typescript 5.9
|
||||
|
||||
## 4.0.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openstapps/database",
|
||||
"version": "4.0.1",
|
||||
"version": "4.0.7",
|
||||
"private": true,
|
||||
"files": [
|
||||
"config",
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# @openstapps/proxy
|
||||
|
||||
## 4.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ae1cad3b: upgrade project to Typescript 5.9
|
||||
- 93c38b74: dependency updates
|
||||
- Updated dependencies [ae1cad3b]
|
||||
- Updated dependencies [93c38b74]
|
||||
- @openstapps/logger@4.0.7
|
||||
|
||||
## 4.0.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@openstapps/proxy",
|
||||
"description": "NGINX proxy that is dynamically configured by a Node.js script",
|
||||
"version": "4.0.5",
|
||||
"version": "4.0.7",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "AGPL-3.0-only",
|
||||
@@ -43,11 +43,11 @@
|
||||
"dependencies": {
|
||||
"@openstapps/logger": "workspace:*",
|
||||
"@types/config": "3.3.0",
|
||||
"@types/dockerode": "3.3.17",
|
||||
"@types/dockerode": "4.0.2",
|
||||
"@types/node": "22.15.31",
|
||||
"@types/sha1": "1.1.3",
|
||||
"config": "3.3.9",
|
||||
"dockerode": "3.3.5",
|
||||
"dockerode": "5.0.1",
|
||||
"is-cidr": "4.0.2",
|
||||
"mustache": "4.2.0",
|
||||
"semver": "7.6.0",
|
||||
@@ -60,7 +60,7 @@
|
||||
"@openstapps/tsconfig": "workspace:*",
|
||||
"@types/chai": "4.3.20",
|
||||
"@types/config": "3.3.0",
|
||||
"@types/dockerode": "3.3.17",
|
||||
"@types/dockerode": "4.0.2",
|
||||
"@types/mocha": "10.0.10",
|
||||
"@types/mustache": "4.2.2",
|
||||
"@types/node": "22.15.31",
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @openstapps/backend-config
|
||||
|
||||
## 4.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ae1cad3b: upgrade project to Typescript 5.9
|
||||
|
||||
## 4.0.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@openstapps/backend-config",
|
||||
"description": "Backend Configuration for OpenStApps",
|
||||
"version": "4.0.3",
|
||||
"version": "4.0.7",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "GPL-3.0-only",
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @openstapps/eslint-config
|
||||
|
||||
## 4.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ae1cad3b: upgrade project to Typescript 5.9
|
||||
|
||||
## 4.0.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@openstapps/eslint-config",
|
||||
"description": "A collection of configuration base files for StApps projects. Just an (unused) experiment for now.",
|
||||
"version": "4.0.3",
|
||||
"version": "4.0.7",
|
||||
"type": "commonjs",
|
||||
"license": "GPL-3.0-only",
|
||||
"repository": "git@gitlab.com:openstapps/eslint-config.git",
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @openstapps/prettier-config
|
||||
|
||||
## 4.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ae1cad3b: upgrade project to Typescript 5.9
|
||||
|
||||
## 4.0.0
|
||||
|
||||
### Major Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@openstapps/prettier-config",
|
||||
"description": "StApps Prettier Config",
|
||||
"version": "4.0.0",
|
||||
"version": "4.0.7",
|
||||
"type": "commonjs",
|
||||
"license": "GPL-3.0-only",
|
||||
"repository": "git@gitlab.com:openstapps/prettier-config.git",
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
# @openstapps/projectmanagement
|
||||
|
||||
## 4.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ae1cad3b: upgrade project to Typescript 5.9
|
||||
- Updated dependencies [ae1cad3b]
|
||||
- Updated dependencies [93c38b74]
|
||||
- @openstapps/collection-utils@4.0.7
|
||||
- @openstapps/gitlab-api@4.0.7
|
||||
- @openstapps/logger@4.0.7
|
||||
|
||||
## 4.0.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@openstapps/projectmanagement",
|
||||
"description": "Main documentation and scripts for maintenance.",
|
||||
"version": "4.0.5",
|
||||
"version": "4.0.7",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "GPL-3.0-only",
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @openstapps/tsconfig
|
||||
|
||||
## 4.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ae1cad3b: upgrade project to Typescript 5.9
|
||||
|
||||
## 4.0.0
|
||||
|
||||
### Major Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@openstapps/tsconfig",
|
||||
"description": "The tsconfig for the openstapps project",
|
||||
"version": "4.0.0",
|
||||
"version": "4.0.7",
|
||||
"type": "commonjs",
|
||||
"license": "GPL-3.0-only",
|
||||
"repository": "git@gitlab.com:openstapps/eslint-config.git",
|
||||
|
||||
@@ -1,5 +1,16 @@
|
||||
# @openstapps/minimal-connector
|
||||
|
||||
## 4.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ae1cad3b: upgrade project to Typescript 5.9
|
||||
- Updated dependencies [ae1cad3b]
|
||||
- Updated dependencies [93c38b74]
|
||||
- @openstapps/core@4.0.7
|
||||
- @openstapps/api@4.0.7
|
||||
- @openstapps/logger@4.0.7
|
||||
|
||||
## 4.0.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@openstapps/minimal-connector",
|
||||
"description": "This is a minimal connector which serves as an example",
|
||||
"version": "4.0.5",
|
||||
"version": "4.0.7",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "GPL-3.0-only",
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @openstapps/minimal-deployment
|
||||
|
||||
## 4.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ae1cad3b: upgrade project to Typescript 5.9
|
||||
|
||||
## 4.0.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openstapps/minimal-deployment",
|
||||
"version": "4.0.1",
|
||||
"version": "4.0.7",
|
||||
"private": true,
|
||||
"files": [
|
||||
"database",
|
||||
|
||||
@@ -1,5 +1,18 @@
|
||||
# @openstapps/minimal-plugin
|
||||
|
||||
## 4.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ae1cad3b: upgrade project to Typescript 5.9
|
||||
- Updated dependencies [ae1cad3b]
|
||||
- Updated dependencies [93c38b74]
|
||||
- @openstapps/api-plugin@4.0.7
|
||||
- @openstapps/core-tools@4.0.7
|
||||
- @openstapps/core@4.0.7
|
||||
- @openstapps/api@4.0.7
|
||||
- @openstapps/logger@4.0.7
|
||||
|
||||
## 4.0.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@openstapps/minimal-plugin",
|
||||
"description": "Minimal Plugin",
|
||||
"version": "4.0.5",
|
||||
"version": "4.0.7",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "GPL-3.0-only",
|
||||
|
||||
@@ -1,5 +1,17 @@
|
||||
# @openstapps/app
|
||||
|
||||
## 4.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ae1cad3b: upgrade project to Typescript 5.9
|
||||
- 93c38b74: dependency updates
|
||||
- Updated dependencies [ae1cad3b]
|
||||
- Updated dependencies [93c38b74]
|
||||
- @openstapps/core@4.0.7
|
||||
- @openstapps/api@4.0.7
|
||||
- @openstapps/collection-utils@4.0.7
|
||||
|
||||
## 4.0.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@openstapps/app",
|
||||
"description": "The generic app tailored to fulfill needs of German universities, written using Ionic Framework.",
|
||||
"version": "4.0.5",
|
||||
"version": "4.0.7",
|
||||
"private": true,
|
||||
"license": "GPL-3.0-only",
|
||||
"author": "Karl-Philipp Wulfert <krlwlfrt@gmail.com>",
|
||||
@@ -48,13 +48,13 @@
|
||||
"test:integration": "sh integration-test.sh"
|
||||
},
|
||||
"dependencies": {
|
||||
"@angular/animations": "20.3.31",
|
||||
"@angular/animations": "20.3.33",
|
||||
"@angular/cdk": "20.2.14",
|
||||
"@angular/common": "20.3.31",
|
||||
"@angular/core": "20.3.31",
|
||||
"@angular/forms": "20.3.31",
|
||||
"@angular/platform-browser": "20.3.31",
|
||||
"@angular/router": "20.3.31",
|
||||
"@angular/common": "20.3.33",
|
||||
"@angular/core": "20.3.33",
|
||||
"@angular/forms": "20.3.33",
|
||||
"@angular/platform-browser": "20.3.33",
|
||||
"@angular/router": "20.3.33",
|
||||
"@awesome-cordova-plugins/calendar": "8.1.0",
|
||||
"@awesome-cordova-plugins/core": "8.1.0",
|
||||
"@capacitor-community/in-app-review": "8.0.0",
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
/*
|
||||
* Copyright (C) 2026 StApps
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation, version 3.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
import {TestBed} from '@angular/core/testing';
|
||||
import {HttpClient} from '@angular/common/http';
|
||||
import {BehaviorSubject, of} from 'rxjs';
|
||||
import {SCAssessment} from '@openstapps/core';
|
||||
import {AssessmentsProvider} from './assessments.provider';
|
||||
import {ConfigProvider} from '../config/config.provider';
|
||||
import {AuthActions, AuthProvider, IAuthAction} from '../auth/auth.provider';
|
||||
|
||||
class FakeAuth {
|
||||
events$ = new BehaviorSubject<IAuthAction>({action: AuthActions.Init});
|
||||
|
||||
accessToken = 'token-a';
|
||||
|
||||
getValidToken() {
|
||||
return Promise.resolve({accessToken: this.accessToken});
|
||||
}
|
||||
}
|
||||
|
||||
const gradesA = [{uid: 'a', name: 'Grade of A'}] as unknown as SCAssessment[];
|
||||
const gradesB = [{uid: 'b', name: 'Grade of B'}] as unknown as SCAssessment[];
|
||||
|
||||
describe('AssessmentsProvider', () => {
|
||||
let provider: AssessmentsProvider;
|
||||
let fakeAuth: FakeAuth;
|
||||
let httpClient: jasmine.SpyObj<HttpClient>;
|
||||
|
||||
beforeEach(() => {
|
||||
fakeAuth = new FakeAuth();
|
||||
httpClient = jasmine.createSpyObj<HttpClient>('HttpClient', ['get']);
|
||||
httpClient.get.and.callFake(((_url: string, options: {headers: {Authorization: string}}) =>
|
||||
of({data: options.headers.Authorization === 'Bearer token-a' ? gradesA : gradesB})) as never);
|
||||
|
||||
TestBed.configureTestingModule({
|
||||
providers: [
|
||||
AssessmentsProvider,
|
||||
{
|
||||
provide: ConfigProvider,
|
||||
useValue: {config: {app: {features: {extern: {hisometry: {url: 'http://hisometry.local'}}}}}},
|
||||
},
|
||||
{provide: AuthProvider, useValue: fakeAuth},
|
||||
{provide: HttpClient, useValue: httpClient},
|
||||
],
|
||||
});
|
||||
|
||||
provider = TestBed.inject(AssessmentsProvider);
|
||||
});
|
||||
|
||||
it('should use the cache while the same user is logged in', async () => {
|
||||
await provider.getAssessments();
|
||||
fakeAuth.events$.next({action: AuthActions.RefreshSuccess});
|
||||
|
||||
expect(await provider.getAssessments()).toEqual(gradesA);
|
||||
expect(httpClient.get).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
for (const action of [AuthActions.SignOutSuccess, AuthActions.SessionExpired]) {
|
||||
it(`should clear the cache on ${action}`, async () => {
|
||||
await provider.getAssessments();
|
||||
fakeAuth.events$.next({action});
|
||||
|
||||
expect(provider.cache).toBeUndefined();
|
||||
expect(await provider.assessments).toEqual({});
|
||||
});
|
||||
}
|
||||
|
||||
it('should not show the grades of the previous user after a user change', async () => {
|
||||
expect(await provider.getAssessments()).toEqual(gradesA);
|
||||
|
||||
fakeAuth.events$.next({action: AuthActions.SignOutSuccess});
|
||||
fakeAuth.accessToken = 'token-b';
|
||||
fakeAuth.events$.next({action: AuthActions.SignInSuccess});
|
||||
|
||||
expect(await provider.getAssessments()).toEqual(gradesB);
|
||||
expect(httpClient.get).toHaveBeenCalledTimes(2);
|
||||
});
|
||||
});
|
||||
@@ -17,7 +17,7 @@ import {ConfigProvider} from '../config/config.provider';
|
||||
import {SCAssessment, SCUuid} from '@openstapps/core';
|
||||
import {HttpClient} from '@angular/common/http';
|
||||
import {uniqBy, keyBy} from '@openstapps/collection-utils';
|
||||
import {AuthProvider} from '../auth/auth.provider';
|
||||
import {AuthActions, AuthProvider} from '../auth/auth.provider';
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -57,6 +57,24 @@ export class AssessmentsProvider {
|
||||
|
||||
readonly http = inject(HttpClient);
|
||||
|
||||
constructor() {
|
||||
/*
|
||||
* The grades belong to the logged-in user. The next user
|
||||
* should never get the previous user's grades from the cache.
|
||||
*/
|
||||
this.authProvider.events$.subscribe(({action}) => {
|
||||
switch (action) {
|
||||
case AuthActions.SignInSuccess:
|
||||
case AuthActions.SignOutSuccess:
|
||||
case AuthActions.SignOutFailed:
|
||||
case AuthActions.SessionExpired: {
|
||||
this.clearCache();
|
||||
break;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
assessmentPath = 'assessments';
|
||||
|
||||
// usually this wouldn't be necessary, but the assessment service
|
||||
@@ -110,4 +128,13 @@ export class AssessmentsProvider {
|
||||
|
||||
return this.cache;
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes all cached grades.
|
||||
*/
|
||||
clearCache(): void {
|
||||
this.cache = undefined;
|
||||
this.assessments = Promise.resolve({});
|
||||
this.cacheTimestamp = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@ import {DataProvider, DataScope} from '../../data/data.provider';
|
||||
import {DataRoutingService} from '../../data/data-routing.service';
|
||||
import {groupBy, mapValues} from '@openstapps/collection-utils';
|
||||
import {takeUntilDestroyed} from '@angular/core/rxjs-interop';
|
||||
import {environment} from '../../../../environments/environment';
|
||||
|
||||
@Component({
|
||||
selector: 'app-assessments-page',
|
||||
@@ -62,6 +63,26 @@ export class AssessmentsPageComponent implements OnInit, AfterViewInit {
|
||||
|
||||
destroy$ = inject(DestroyRef);
|
||||
|
||||
/**
|
||||
* ?token=... (e.g. ?token=mock) is a development aid only.
|
||||
* In production, no token is read from or passed on in URLs.
|
||||
*/
|
||||
private readonly urlTokenAllowed = !environment.production;
|
||||
|
||||
/**
|
||||
* Token from the URL (?token=...), development only.
|
||||
* Always undefined in production, so no token is read from or passed on in URLs.
|
||||
*/
|
||||
get urlToken(): string | undefined {
|
||||
if (!this.urlTokenAllowed) {
|
||||
return;
|
||||
}
|
||||
|
||||
const token = this.activatedRoute.snapshot.queryParamMap.get('token');
|
||||
|
||||
return token === null ? undefined : token;
|
||||
}
|
||||
|
||||
ngAfterViewInit() {
|
||||
this.segmentView.value = this.sharedAxisChoreographer.currentValue;
|
||||
}
|
||||
@@ -73,7 +94,7 @@ export class AssessmentsPageComponent implements OnInit, AfterViewInit {
|
||||
.subscribe(thing => {
|
||||
void this.router.navigate(['assessments', 'detail', thing.uid], {
|
||||
queryParams: {
|
||||
token: this.activatedRoute.snapshot.queryParamMap.get('token'),
|
||||
token: this.urlToken,
|
||||
},
|
||||
state: {item: thing},
|
||||
});
|
||||
@@ -82,7 +103,7 @@ export class AssessmentsPageComponent implements OnInit, AfterViewInit {
|
||||
this.activatedRoute.queryParams.subscribe(parameters => {
|
||||
try {
|
||||
this.assessments = this.assessmentsProvider
|
||||
.getAssessments(parameters.token)
|
||||
.getAssessments(this.urlTokenAllowed ? parameters.token : undefined)
|
||||
.then(assessments => groupBy(assessments, it => it.courseOfStudy?.uid ?? 'unknown'))
|
||||
.then(it => {
|
||||
this.assessmentKeys = Object.keys(it);
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
[displayValue]="setting | settingValueTranslate | titlecase"
|
||||
[value]="setting"
|
||||
[active]="!!filtersMap.get($any(setting.name))"
|
||||
(toggle)="stateChanged($any($event))"
|
||||
(toggled)="stateChanged($any($event))"
|
||||
>
|
||||
</stapps-chip-filter>
|
||||
}
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
import {ChangeDetectionStrategy, Component, ElementRef, Input, inject} from '@angular/core';
|
||||
import {SCIdCard} from '@openstapps/core';
|
||||
import {ThingTranslateModule} from '../../translation/thing-translate.module';
|
||||
import {AsyncPipe, TitleCasePipe} from '@angular/common';
|
||||
import {IntervalIsNowPipe, ToDateIntervalPipe} from '../../util/in-range.pipe';
|
||||
import {TranslateModule} from '@ngx-translate/core';
|
||||
import {AnimationController, ModalController} from '@ionic/angular/standalone';
|
||||
import {ScreenBrightness} from '@capacitor-community/screen-brightness';
|
||||
import {ScreenOrientation} from '@capacitor/screen-orientation';
|
||||
@@ -15,14 +12,7 @@ import {iosDuration, iosEasing, mdDuration, mdEasing} from 'src/app/animation/ea
|
||||
templateUrl: 'id-card.html',
|
||||
styleUrls: ['id-card.scss'],
|
||||
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||
imports: [
|
||||
ThingTranslateModule,
|
||||
IntervalIsNowPipe,
|
||||
ToDateIntervalPipe,
|
||||
AsyncPipe,
|
||||
TranslateModule,
|
||||
TitleCasePipe,
|
||||
],
|
||||
imports: [ThingTranslateModule],
|
||||
})
|
||||
export class IdCardComponent {
|
||||
private modalController = inject(ModalController);
|
||||
|
||||
@@ -4,6 +4,3 @@
|
||||
draggable="false"
|
||||
(click)="presentFullscreen()"
|
||||
/>
|
||||
@if (item.validity && (item.validity | rangeToDateInterval | dfnsIntervalIsNow | async) === false) {
|
||||
<div class="expired">{{ 'profile.userInfo.expired' | translate | titlecase }}</div>
|
||||
}
|
||||
|
||||
@@ -6,24 +6,3 @@
|
||||
img {
|
||||
border-radius: 3mm;
|
||||
}
|
||||
|
||||
.expired {
|
||||
position: absolute;
|
||||
top: 48px;
|
||||
left: 48px;
|
||||
transform-origin: center;
|
||||
translate: -50% -50%;
|
||||
rotate: -45deg;
|
||||
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
width: 256px;
|
||||
padding: var(--spacing-xs);
|
||||
|
||||
font-weight: bold;
|
||||
color: var(--ion-color-danger-contrast);
|
||||
|
||||
background: var(--ion-color-danger);
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -405,7 +405,6 @@
|
||||
}
|
||||
},
|
||||
"userInfo": {
|
||||
"expired": "Abgelaufen",
|
||||
"studentId": "Matrikelnr.",
|
||||
"username": "Nutzername",
|
||||
"email": "Email",
|
||||
|
||||
@@ -405,7 +405,6 @@
|
||||
}
|
||||
},
|
||||
"userInfo": {
|
||||
"expired": "expired",
|
||||
"studentId": "Matriculation Nr.",
|
||||
"username": "Username",
|
||||
"email": "Email",
|
||||
|
||||
@@ -21,7 +21,7 @@ export const environment = {
|
||||
backend_url: 'https://mobile.server.uni-frankfurt.de',
|
||||
app_host: 'mobile.app.uni-frankfurt.de',
|
||||
custom_url_scheme: 'de.anyschool.app',
|
||||
backend_version: '4.0.0',
|
||||
backend_version: '4.1.0',
|
||||
production: true,
|
||||
};
|
||||
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @openstapps/app-builder-image
|
||||
|
||||
## 4.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ae1cad3b: upgrade project to Typescript 5.9
|
||||
|
||||
## 4.0.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openstapps/app-builder-image",
|
||||
"version": "4.0.3",
|
||||
"version": "4.0.7",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "GPL-3.0-only",
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @openstapps/app-cypress
|
||||
|
||||
## 4.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ae1cad3b: upgrade project to Typescript 5.9
|
||||
|
||||
## 4.0.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openstapps/app-cypress",
|
||||
"version": "4.0.5",
|
||||
"version": "4.0.7",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "GPL-3.0-only",
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @openstapps/node-base
|
||||
|
||||
## 4.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ae1cad3b: upgrade project to Typescript 5.9
|
||||
|
||||
## 4.0.0
|
||||
|
||||
### Major Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openstapps/node-base",
|
||||
"version": "4.0.0",
|
||||
"version": "4.0.7",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "GPL-3.0-only",
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @openstapps/node-builder
|
||||
|
||||
## 4.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ae1cad3b: upgrade project to Typescript 5.9
|
||||
|
||||
## 4.0.0
|
||||
|
||||
### Major Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openstapps/node-builder",
|
||||
"version": "4.0.0",
|
||||
"version": "4.0.7",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "GPL-3.0-only",
|
||||
|
||||
@@ -1,5 +1,18 @@
|
||||
# @openstapps/api-cli
|
||||
|
||||
## 4.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ae1cad3b: upgrade project to Typescript 5.9
|
||||
- 93c38b74: dependency updates
|
||||
- Updated dependencies [ae1cad3b]
|
||||
- Updated dependencies [93c38b74]
|
||||
- @openstapps/core-tools@4.0.7
|
||||
- @openstapps/core@4.0.7
|
||||
- @openstapps/api@4.0.7
|
||||
- @openstapps/logger@4.0.7
|
||||
|
||||
## 4.0.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@openstapps/api-cli",
|
||||
"description": "CLI client for @openstapps/api",
|
||||
"version": "4.0.5",
|
||||
"version": "4.0.7",
|
||||
"type": "module",
|
||||
"license": "GPL-3.0-only",
|
||||
"repository": "git@gitlab.com:openstapps/api.git",
|
||||
@@ -51,7 +51,7 @@
|
||||
"commander": "10.0.0",
|
||||
"fs-extra": "10.1.0",
|
||||
"junit-report-builder": "3.0.1",
|
||||
"wait-on": "6.0.1"
|
||||
"wait-on": "9.5.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@openstapps/eslint-config": "workspace:*",
|
||||
|
||||
@@ -1,5 +1,17 @@
|
||||
# @openstapps/api-plugin
|
||||
|
||||
## 4.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ae1cad3b: upgrade project to Typescript 5.9
|
||||
- Updated dependencies [ae1cad3b]
|
||||
- Updated dependencies [93c38b74]
|
||||
- @openstapps/core-tools@4.0.7
|
||||
- @openstapps/core@4.0.7
|
||||
- @openstapps/api@4.0.7
|
||||
- @openstapps/logger@4.0.7
|
||||
|
||||
## 4.0.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@openstapps/api-plugin",
|
||||
"description": "Node.js library to interact with the StApps backend service",
|
||||
"version": "4.0.5",
|
||||
"version": "4.0.7",
|
||||
"type": "module",
|
||||
"license": "GPL-3.0-only",
|
||||
"repository": "git@gitlab.com:openstapps/api.git",
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
# @openstapps/api
|
||||
|
||||
## 4.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ae1cad3b: upgrade project to Typescript 5.9
|
||||
- 93c38b74: dependency updates
|
||||
- Updated dependencies [ae1cad3b]
|
||||
- @openstapps/core@4.0.7
|
||||
|
||||
## 4.0.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@openstapps/api",
|
||||
"description": "Node.js library to interact with the StApps backend service",
|
||||
"version": "4.0.5",
|
||||
"version": "4.0.7",
|
||||
"type": "module",
|
||||
"license": "GPL-3.0-only",
|
||||
"repository": "git@gitlab.com:openstapps/api.git",
|
||||
@@ -58,7 +58,7 @@
|
||||
"tsup": "8.5.0",
|
||||
"typedoc": "0.25.12",
|
||||
"typescript": "5.9.3",
|
||||
"undici": "6.21.3"
|
||||
"undici": "6.29.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@openstapps/core": "workspace:*"
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
# @openstapps/collection-utils
|
||||
|
||||
## 4.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ae1cad3b: upgrade project to Typescript 5.9
|
||||
|
||||
## 4.0.0
|
||||
|
||||
### Major Changes
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@openstapps/collection-utils",
|
||||
"version": "4.0.0",
|
||||
"version": "4.0.7",
|
||||
"type": "module",
|
||||
"license": "GPL-3.0-only",
|
||||
"main": "lib/index.js",
|
||||
|
||||
@@ -1,5 +1,17 @@
|
||||
# @openstapps/core-tools
|
||||
|
||||
## 4.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ae1cad3b: upgrade project to Typescript 5.9
|
||||
- 93c38b74: dependency updates
|
||||
- Updated dependencies [ae1cad3b]
|
||||
- Updated dependencies [93c38b74]
|
||||
- @openstapps/easy-ast@4.0.7
|
||||
- @openstapps/collection-utils@4.0.7
|
||||
- @openstapps/logger@4.0.7
|
||||
|
||||
## 4.0.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@openstapps/core-tools",
|
||||
"description": "Tools to convert and validate StAppsCore",
|
||||
"version": "4.0.5",
|
||||
"version": "4.0.7",
|
||||
"type": "module",
|
||||
"license": "GPL-3.0-only",
|
||||
"repository": "git@gitlab.com:openstapps/core-tools.git",
|
||||
@@ -52,19 +52,19 @@
|
||||
"better-ajv-errors": "1.2.0",
|
||||
"commander": "10.0.0",
|
||||
"deepmerge": "4.3.1",
|
||||
"del": "6.1.1",
|
||||
"flatted": "3.2.7",
|
||||
"del": "9.0.1",
|
||||
"flatted": "3.4.4",
|
||||
"fs-extra": "10.1.0",
|
||||
"glob": "10.5.0",
|
||||
"got": "12.6.0",
|
||||
"got": "14.6.6",
|
||||
"humanize-string": "3.0.0",
|
||||
"json-schema": "0.4.0",
|
||||
"mustache": "4.2.0",
|
||||
"openapi-types": "12.1.0",
|
||||
"plantuml-encoder": "1.4.0",
|
||||
"re2": "1.21.0",
|
||||
"re2": "1.27.0",
|
||||
"toposort": "2.0.2",
|
||||
"ts-json-schema-generator": "1.2.0"
|
||||
"ts-json-schema-generator": "1.5.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@openstapps/eslint-config": "workspace:*",
|
||||
|
||||
@@ -1,5 +1,14 @@
|
||||
# @openstapps/core
|
||||
|
||||
## 4.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ae1cad3b: upgrade project to Typescript 5.9
|
||||
- Updated dependencies [ae1cad3b]
|
||||
- Updated dependencies [93c38b74]
|
||||
- @openstapps/core-tools@4.0.7
|
||||
|
||||
## 4.0.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@openstapps/core",
|
||||
"description": "StAppsCore - Generalized model of data",
|
||||
"version": "4.0.5",
|
||||
"version": "4.0.7",
|
||||
"type": "module",
|
||||
"license": "GPL-3.0-only",
|
||||
"repository": "git@gitlab.com:openstapps/core.git",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import {defineConfig} from 'tsup';
|
||||
import packageJson from './package.json' assert {type: 'json'};
|
||||
import packageJson from './package.json' with {type: 'json'};
|
||||
|
||||
export default defineConfig({
|
||||
entry: ['src/index.ts'],
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# @openstapps/easy-ast
|
||||
|
||||
## 4.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ae1cad3b: upgrade project to Typescript 5.9
|
||||
- Updated dependencies [ae1cad3b]
|
||||
- Updated dependencies [93c38b74]
|
||||
- @openstapps/collection-utils@4.0.7
|
||||
- @openstapps/logger@4.0.7
|
||||
|
||||
## 4.0.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@openstapps/easy-ast",
|
||||
"description": "Tool to easily handle TypeScript AST",
|
||||
"version": "4.0.5",
|
||||
"version": "4.0.7",
|
||||
"type": "module",
|
||||
"license": "GPL-3.0-only",
|
||||
"repository": "git@gitlab.com:openstapps/core-tools.git",
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
# @openstapps/es-mapping-generator
|
||||
|
||||
## 4.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ae1cad3b: upgrade project to Typescript 5.9
|
||||
- 93c38b74: dependency updates
|
||||
|
||||
## 4.0.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@openstapps/es-mapping-generator",
|
||||
"description": "Tool to convert TypeScript Interfaces to Elasticsearch Mappings",
|
||||
"version": "4.0.1",
|
||||
"version": "4.0.7",
|
||||
"type": "commonjs",
|
||||
"license": "GPL-3.0-only",
|
||||
"author": "Thea Schöbl <dev@theaninova.de>",
|
||||
@@ -29,7 +29,7 @@
|
||||
"@elastic/elasticsearch": "8.14.1",
|
||||
"commander": "10.0.0",
|
||||
"deepmerge": "4.3.1",
|
||||
"flatted": "3.2.7",
|
||||
"flatted": "3.4.4",
|
||||
"typedoc": "0.18.0",
|
||||
"typescript": "3.8.3"
|
||||
},
|
||||
|
||||
@@ -1,5 +1,15 @@
|
||||
# @openstapps/gitlab-api
|
||||
|
||||
## 4.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ae1cad3b: upgrade project to Typescript 5.9
|
||||
- 93c38b74: dependency updates
|
||||
- Updated dependencies [ae1cad3b]
|
||||
- Updated dependencies [93c38b74]
|
||||
- @openstapps/logger@4.0.7
|
||||
|
||||
## 4.0.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@openstapps/gitlab-api",
|
||||
"description": "Wraps common GitLab API calls in a TypeScript class.",
|
||||
"version": "4.0.2",
|
||||
"version": "4.0.7",
|
||||
"type": "module",
|
||||
"license": "GPL-3.0-only",
|
||||
"repository": "git@gitlab.com:openstapps/gitlab-api.git",
|
||||
@@ -31,7 +31,7 @@
|
||||
"dependencies": {
|
||||
"@openstapps/logger": "workspace:*",
|
||||
"commander": "10.0.0",
|
||||
"got": "12.6.0"
|
||||
"got": "14.6.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@openstapps/eslint-config": "workspace:*",
|
||||
|
||||
@@ -1,5 +1,12 @@
|
||||
# @openstapps/logger
|
||||
|
||||
## 4.0.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- ae1cad3b: upgrade project to Typescript 5.9
|
||||
- 93c38b74: dependency updates
|
||||
|
||||
## 4.0.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@openstapps/logger",
|
||||
"description": "A cli logger with colors, log-levels and the possibility to use a transport system for errors",
|
||||
"version": "4.0.2",
|
||||
"version": "4.0.7",
|
||||
"type": "module",
|
||||
"license": "GPL-3.0-only",
|
||||
"repository": "git@gitlab.com:openstapps/logger.git",
|
||||
@@ -28,10 +28,9 @@
|
||||
"test": "c8 mocha"
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/nodemailer": "8.0.2",
|
||||
"chalk": "5.2.0",
|
||||
"flatted": "3.2.7",
|
||||
"nodemailer": "8.0.11"
|
||||
"flatted": "3.4.4",
|
||||
"nodemailer": "10.1.7"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@openstapps/eslint-config": "workspace:*",
|
||||
|
||||
@@ -312,19 +312,19 @@ export class SMTP extends VerifiableTransport {
|
||||
*/
|
||||
public async sendMail(mail: SendMailOptions): Promise<string> {
|
||||
// info is the response of the smtp server
|
||||
let info = await this.transportAgent.sendMail(mail);
|
||||
const info = await this.transportAgent.sendMail(mail);
|
||||
|
||||
// it can be undefined (empty response)
|
||||
if (info === undefined) {
|
||||
info = 'Successfully sent mail';
|
||||
(info['message'] as string) = 'Successfully sent mail';
|
||||
}
|
||||
|
||||
// or not of type string
|
||||
if (typeof info !== 'string') {
|
||||
info = JSON.stringify(info);
|
||||
(info.message as string) = JSON.stringify(info.message);
|
||||
}
|
||||
|
||||
return info;
|
||||
return info.message;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Generated
+3811
-4100
File diff suppressed because it is too large
Load Diff
+3
-4
@@ -21,12 +21,11 @@ onlyBuiltDependencies:
|
||||
- lmdb
|
||||
- msgpackr-extract
|
||||
- nice-napi
|
||||
- protobufjs
|
||||
- re2
|
||||
- sharp
|
||||
- ssh2
|
||||
- swiper
|
||||
|
||||
overrides:
|
||||
handlebars@>=4.0.0 <=4.7.8: '>=4.7.10'
|
||||
tar@<=7.5.18: '>=7.5.19'
|
||||
proxy-addr@>=2.0.0 <=2.0.7: '>=2.0.8'
|
||||
overwites:
|
||||
undici@>=6.0.0 <6.28.1: '>=6.28.1'
|
||||
|
||||
Reference in New Issue
Block a user