first commit

This commit is contained in:
2025-04-24 13:11:28 +08:00
commit ff9c54d5e4
5960 changed files with 834111 additions and 0 deletions

View File

@@ -0,0 +1,52 @@
import {
Actions,
ActionSetData,
ActionSetLoading,
ActionMakePrimary,
ActionDeleteEmail,
ActionSetEmailAffiliationBeingEdited,
ActionUpdateAffiliation,
} from '../context/user-email-context'
import { UserEmailData } from '../../../../../types/user-email'
import { Nullable } from '../../../../../types/utils'
import { Affiliation } from '../../../../../types/affiliation'
export const setData = (data: UserEmailData[]): ActionSetData => ({
type: Actions.SET_DATA,
payload: data,
})
export const setLoading = (flag: boolean): ActionSetLoading => ({
type: Actions.SET_LOADING_STATE,
payload: flag,
})
export const makePrimary = (
email: UserEmailData['email']
): ActionMakePrimary => ({
type: Actions.MAKE_PRIMARY,
payload: email,
})
export const deleteEmail = (
email: UserEmailData['email']
): ActionDeleteEmail => ({
type: Actions.DELETE_EMAIL,
payload: email,
})
export const setEmailAffiliationBeingEdited = (
email: Nullable<UserEmailData['email']>
): ActionSetEmailAffiliationBeingEdited => ({
type: Actions.SET_EMAIL_AFFILIATION_BEING_EDITED,
payload: email,
})
export const updateAffiliation = (
email: UserEmailData['email'],
role: Affiliation['role'],
department: Affiliation['department']
): ActionUpdateAffiliation => ({
type: Actions.UPDATE_AFFILIATION,
payload: { email, role, department },
})

View File

@@ -0,0 +1,22 @@
import { State } from '../context/user-email-context'
import { UserEmailData } from '../../../../../types/user-email'
export const inReconfirmNotificationPeriod = (userEmailData: UserEmailData) => {
return userEmailData.affiliation?.inReconfirmNotificationPeriod
}
export const institutionAlreadyLinked = (
state: State,
userEmailData: UserEmailData
) => {
const institutionId = userEmailData.affiliation?.institution.id?.toString()
return institutionId !== undefined
? state.data.linkedInstitutionIds.includes(institutionId)
: false
}
export const isChangingAffiliation = (
state: State,
email: UserEmailData['email']
) => state.data.emailAffiliationBeingEdited === email

View File

@@ -0,0 +1,27 @@
import getMeta from '../../../utils/meta'
import { DomainInfo } from '../components/emails/add-email/input'
import { Institution } from '../../../../../types/institution'
export const ssoAvailableForDomain = (
domain: DomainInfo | null
): domain is DomainInfo => {
const { hasSamlBeta, hasSamlFeature } = getMeta('ol-ExposedSettings')
if (!hasSamlFeature || !domain || !domain.confirmed || !domain.university) {
return false
}
if (domain.university.ssoEnabled) {
return true
}
return Boolean(hasSamlBeta && domain.university.ssoBeta)
}
export const ssoAvailableForInstitution = (institution: Institution | null) => {
const { hasSamlBeta, hasSamlFeature } = getMeta('ol-ExposedSettings')
if (!hasSamlFeature || !institution || !institution.confirmed) {
return false
}
if (institution.ssoEnabled) {
return true
}
return hasSamlBeta && institution.ssoBeta
}