slopus--happy
98e40dac97
CLI Smoke Test / smoke-test-linux (20) (push) Has been cancelled
CLI Smoke Test / smoke-test-linux (24) (push) Has been cancelled
CLI Smoke Test / smoke-test-windows (20) (push) Has been cancelled
CLI Smoke Test / smoke-test-windows (24) (push) Has been cancelled
Expo App TypeScript typecheck / typecheck (push) Has been cancelled
54 行
1.6 KiB
TypeScript
54 行
1.6 KiB
TypeScript
import * as Clipboard from 'expo-clipboard';
|
|
import { Modal } from '@/modal';
|
|
import { Session } from '@/sync/storageTypes';
|
|
import { t } from '@/text';
|
|
import { log } from '@/log';
|
|
|
|
export async function copySessionMetadataToClipboard(session: Session): Promise<boolean> {
|
|
if (!session.metadata) {
|
|
Modal.alert(t('common.error'), t('sessionInfo.failedToCopyMetadata'));
|
|
return false;
|
|
}
|
|
|
|
try {
|
|
await Clipboard.setStringAsync(JSON.stringify(session.metadata, null, 2));
|
|
Modal.alert(t('common.success'), t('sessionInfo.metadataCopied'));
|
|
return true;
|
|
} catch {
|
|
Modal.alert(t('common.error'), t('sessionInfo.failedToCopyMetadata'));
|
|
return false;
|
|
}
|
|
}
|
|
|
|
export async function copySessionMetadataAndLogsToClipboard(session: Session): Promise<boolean> {
|
|
if (!session.metadata) {
|
|
Modal.alert(t('common.error'), t('sessionInfo.failedToCopyMetadata'));
|
|
return false;
|
|
}
|
|
|
|
try {
|
|
const metadata = JSON.stringify(session.metadata, null, 2);
|
|
const logs = log.getLogs();
|
|
|
|
const sections = [
|
|
'=== Session Metadata ===',
|
|
metadata,
|
|
];
|
|
|
|
if (logs.length > 0) {
|
|
sections.push(
|
|
'',
|
|
`=== Client Logs (${logs.length} entries) ===`,
|
|
logs.join('\n'),
|
|
);
|
|
}
|
|
|
|
await Clipboard.setStringAsync(sections.join('\n'));
|
|
Modal.alert(t('common.success'), t('sessionInfo.metadataCopied'));
|
|
return true;
|
|
} catch {
|
|
Modal.alert(t('common.error'), t('sessionInfo.failedToCopyMetadata'));
|
|
return false;
|
|
}
|
|
}
|