Browse Source

Handle device context for Android properly. (#5038)

Brett Hoerner 8 years ago
parent
commit
ba5e8fbf14

+ 15 - 0
src/sentry/static/sentry/app/components/events/contextSummary.jsx

@@ -138,6 +138,21 @@ const EventContextSummary = React.createClass({
             unknownTitle={t('Unknown OS')} />
         ));
         break;
+      case 'java':
+        if (contexts.os && contexts.os.name === 'Android') {
+          children.push((
+            <DeviceSummary
+              key="device"
+              data={contexts.device} />
+          ));
+          children.push((
+            <GenericSummary
+              key="os"
+              data={contexts.os}
+              unknownTitle={t('Unknown OS')} />
+          ));
+        }
+        break;
       case 'javascript':
         children.push((
           <GenericSummary

+ 19 - 6
src/sentry/static/sentry/app/components/events/contexts/device.jsx

@@ -11,26 +11,39 @@ const DeviceContextType = React.createClass({
 
   formatMemory(memory_size, free_memory, usable_memory) {
     if (!Number.isInteger(memory_size) || memory_size <= 0 ||
-       !Number.isInteger(free_memory) || free_memory <= 0 ||
-       !Number.isInteger(usable_memory) || usable_memory <= 0) {
+        !Number.isInteger(free_memory) || free_memory <= 0) {
       return null;
     }
-    return `Total: ${formatBytes(memory_size)} / Usable: ${formatBytes(usable_memory)} / Free: ${formatBytes(free_memory)}`;
+
+    let memory = `Total: ${formatBytes(memory_size)} / Free: ${formatBytes(free_memory)}`;
+    if (Number.isInteger(usable_memory) && usable_memory > 0)
+        memory += ` / Usable: ${formatBytes(usable_memory)}`;
+
+    return memory;
   },
 
-  formatStorage(storage_size) {
+  formatStorage(storage_size, free_storage, external_storage_size, external_free_storage) {
     if (!Number.isInteger(storage_size) || storage_size <= 0)
       return null;
 
-    return `${formatBytes(storage_size)}`;
+    let storage = `Total: ${formatBytes(storage_size)}`;
+    if (Number.isInteger(free_storage) && free_storage > 0)
+      storage += ` / Free: ${formatBytes(free_storage)}`;
+
+    if (Number.isInteger(external_storage_size) && external_storage_size > 0 &&
+        Number.isInteger(external_free_storage) && external_free_storage > 0)
+      storage += ` (External Total: ${formatBytes(external_storage_size)} / Free: ${formatBytes(external_free_storage)})`;
+
+    return storage;
   },
 
   render() {
     let {name, family, model, model_id, arch, battery_level, orientation,
       simulator, memory_size, free_memory, usable_memory, storage_size,
+      free_storage, external_storage_size, external_free_storage,
       boot_time, timezone, ...data} = this.props.data;
       let memory = this.formatMemory(memory_size, free_memory, usable_memory);
-      let storage = this.formatStorage(storage_size);
+      let storage = this.formatStorage(storage_size, free_storage, external_storage_size, external_free_storage);
     return (
       <ContextBlock
         data={data}

+ 1 - 1
src/sentry/static/sentry/app/components/events/eventEntries.jsx

@@ -103,7 +103,7 @@ const EventEntries = React.createClass({
     );
 
     let hasContextSummary = (
-      hasContext && (evt.platform === 'cocoa' || evt.platform === 'javascript')
+      hasContext && (evt.platform === 'cocoa' || evt.platform === 'javascript' || evt.platform === 'java')
     );
 
     return (