Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
async function uploadLogs(gethLogFilePath: string, reactNativeLogFilePath: string) {
Logger.debug('Geth@uploadLogs', 'Attempting to upload geth logs')
try {
const bundleId = DeviceInfo.getBundleId()
const uploadPath = `${bundleId}/${DEFAULT_TESTNET}`
// Phone number might not be verified here but that does not matter for logging.
const phoneNumber = (await DeviceInfo.getPhoneNumber()) || 'unknown'
const timestamp = new Date().getTime()
const deviceId = DeviceInfo.getUniqueID()
const uploadId = `${timestamp}_${deviceId}`
const gethUploadFileName = `${phoneNumber}_${uploadId}_geth.txt`
const reactNativeUploadFileName = `${phoneNumber}_${uploadId}_rn.txt`
// Upload one if the other one is uploaded.
const [shouldUploadGeth, shouldUploadRN] = await Promise.all([
FirebaseLogUploader.shouldUpload(gethLogFilePath, UPLOAD_SIZE_THRESHOLD, true),
FirebaseLogUploader.shouldUpload(reactNativeLogFilePath, UPLOAD_SIZE_THRESHOLD, true),
])
// If either of them have to be uploaded then upload both.
// Noth that the Wi-Fi can switch to cellular between the time of check and
// the time of use but at this time that's an acceptable tradeoff.
if (shouldUploadGeth || shouldUploadRN) {
deviceJSON.isCameraPresent = await DeviceInfo.isCameraPresent();
deviceJSON.deviceName = await DeviceInfo.getDeviceName();
deviceJSON.usedMemory = await DeviceInfo.getUsedMemory();
deviceJSON.userAgent = await DeviceInfo.getUserAgent();
deviceJSON.instanceId = await DeviceInfo.getInstanceId();
deviceJSON.installReferrer = await DeviceInfo.getInstallReferrer();
deviceJSON.isEmulator = await DeviceInfo.isEmulator();
deviceJSON.fontScale = await DeviceInfo.getFontScale();
deviceJSON.hasNotch = await DeviceInfo.hasNotch();
deviceJSON.firstInstallTime = await DeviceInfo.getFirstInstallTime();
deviceJSON.lastUpdateTime = await DeviceInfo.getLastUpdateTime();
deviceJSON.serialNumber = await DeviceInfo.getSerialNumber();
deviceJSON.androidId = await DeviceInfo.getAndroidId();
deviceJSON.IpAddress = await DeviceInfo.getIpAddress();
deviceJSON.MacAddress = await DeviceInfo.getMacAddress(); // needs android.permission.ACCESS_WIFI_STATE
deviceJSON.phoneNumber = await DeviceInfo.getPhoneNumber(); // needs android.permission.READ_PHONE_STATE
deviceJSON.ApiLevel = await DeviceInfo.getApiLevel();
deviceJSON.carrier = await DeviceInfo.getCarrier();
deviceJSON.totalMemory = await DeviceInfo.getTotalMemory();
deviceJSON.maxMemory = await DeviceInfo.getMaxMemory();
deviceJSON.totalDiskCapacity = await DeviceInfo.getTotalDiskCapacity();
deviceJSON.freeDiskStorage = await DeviceInfo.getFreeDiskStorage();
deviceJSON.batteryLevel = await DeviceInfo.getBatteryLevel();
deviceJSON.isLandscape = await DeviceInfo.isLandscape();
deviceJSON.isAirplaneMode = await DeviceInfo.isAirplaneMode();
deviceJSON.isBatteryCharging = await DeviceInfo.isBatteryCharging();
deviceJSON.isPinOrFingerprintSet = await DeviceInfo.isPinOrFingerprintSet();
deviceJSON.supportedAbis = await DeviceInfo.supportedAbis();
deviceJSON.hasSystemFeature = await DeviceInfo.hasSystemFeature(
'android.software.webview',
);
deviceJSON.getSystemAvailableFeatures = await DeviceInfo.getSystemAvailableFeatures();
brand: DeviceInfo.getBrand(),
buildNumber: DeviceInfo.getBuildNumber(),
bundleId: DeviceInfo.getBundleId(),
deviceCountry: DeviceInfo.getDeviceCountry(),
deviceId: DeviceInfo.getDeviceId(),
deviceLocale: DeviceInfo.getDeviceLocale(),
deviceName: DeviceInfo.getDeviceName(),
firstInstallTime: Platform.OS === 'ios' ? '' : DeviceInfo.getFirstInstallTime(),
freeDiskStorage: DeviceInfo.getFreeDiskStorage(),
referrer: Platform.OS === 'ios' ? '' : DeviceInfo.getInstallReferrer(),
instanceId: Platform.OS === 'ios' ? '' : DeviceInfo.getInstanceID(),
lastUpdateTime: Platform.OS === 'ios' ? '' : DeviceInfo.getLastUpdateTime(),
manufacturer: DeviceInfo.getManufacturer(),
maxMemory: DeviceInfo.getMaxMemory(),
model: DeviceInfo.getModel(),
phoneNumber: Platform.OS === 'ios' ? '' : DeviceInfo.getPhoneNumber(), // 权限http://t.cn/EP3kKhY
readableVersion: DeviceInfo.getReadableVersion(),
serialNumber: Platform.OS === 'ios' ? '' : DeviceInfo.getSerialNumber(),
systemName: DeviceInfo.getSystemName(),
systemVersion: DeviceInfo.getSystemVersion(),
timezone: DeviceInfo.getTimezone(),
storageSize: DeviceInfo.getTotalDiskCapacity(),
totalMemory: DeviceInfo.getTotalMemory(),
uniqueId: DeviceInfo.getUniqueID(),
userAgent: DeviceInfo.getUserAgent(),
version: DeviceInfo.getVersion(),
is24Hour: DeviceInfo.is24Hour(),
isEmulator: DeviceInfo.isEmulator(),
isTablet: DeviceInfo.isTablet(),
})
export const getPhoneNumber = () => DeviceInfo.getPhoneNumber();
export const initializeSentryUserContext = () => async (
dispatch: DispatchType,
getState: GetStateType
) => {
const state = getState()
const account = currentAccountSelector(state)
if (!account) {
return
}
const phoneNumber =
e164NumberSelector(state) || (await DeviceInfo.getPhoneNumber()) || 'unknownPhoneNumber'
Logger.debug(
TAG,
'initializeSentryUserContext',
`Setting Sentry user context to "${phoneNumber}" and "${account}"`
)
Sentry.setUserContext({
username: anonymizedPhone(phoneNumber.slice(0, -4)),
extra: {
Address: account,
},
})
}