Spaces:
Sleeping
Sleeping
File size: 1,757 Bytes
68f7925 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
import { type ClassValue, clsx } from 'clsx';
import { twMerge } from 'tailwind-merge';
export function cn(...inputs: ClassValue[]) {
return twMerge(clsx(inputs));
}
export const allowedEmails = [
'yoshimura.s@dentsudigital.co.jp',
'manabe.risa@dentsudigital.co.jp',
'watabe.kazuhiro@dentsudigital.co.jp',
'shimizu.r@dentsudigital.co.jp',
'wada.j@dentsudigital.co.jp',
'iijima.m@dentsudigital.co.jp',
'takao.a@dentsudigital.co.jp',
'hayashi.som@dentsudigital.co.jp',
'fukushima.r@dentsudigital.co.jp',
'k.yamada@dentsudigital.co.jp',
'suzuki@dentsudigital.co.jp',
'miyazaki.ay@dentsudigital.co.jp',
'ikeda.yug@dentsudigital.co.jp',
'masamura.y@dentsudigital.co.jp',
'u.gunjlkham@mn.data-artist.com',
'itano.c@dentsudigital.co.jp',
'kazuki.watanabe@contract.dentsudigital.co.jp',
'yuki.watanabe@contract.dentsudigital.co.jp',
];
export const isAllowedUser = (email?: string): boolean => {
return email === '' || email === undefined || email === null || (!!email && allowedEmails.includes(email));
};
/**
* タイムアウト付きのPromiseラッパー
* @param promise 実行するPromise
* @param timeoutMs タイムアウト時間(ミリ秒)
* @returns タイムアウト付きのPromise
*/
export function withTimeout<T>(promise: Promise<T>, timeoutMs: number): Promise<T> {
return new Promise((resolve, reject) => {
const timeoutId = setTimeout(() => {
reject(new Error(`タイムアウト: ${timeoutMs / 1000}秒以内に処理が完了しませんでした`));
}, timeoutMs);
promise
.then((result) => {
clearTimeout(timeoutId);
resolve(result);
})
.catch((error) => {
clearTimeout(timeoutId);
reject(error);
});
});
}
|