Charts error #206

Closed
opened 2023-11-20 21:37:26 +00:00 by brandon.presley · 2 comments

I noticed some error on the Play Store reporting about the react-native-svg-charts library:

Exception java.lang.Error:
  at com.horcrux.svg.PathParser.parse_number (PathParser.java:627)
  at com.horcrux.svg.PathParser.parse_list_number (PathParser.java:594)
  at com.horcrux.svg.PathParser.parse (PathParser.java:118)
  at com.horcrux.svg.PathView.setD (PathView.java:28)
  at com.horcrux.svg.RenderableViewManager$PathViewManager.setD (RenderableViewManager.java:751)
  at com.horcrux.svg.RenderableViewManager$PathViewManager.setD (RenderableViewManager.java:740)
  at com.facebook.react.viewmanagers.RNSVGPathManagerDelegate.setProperty (RNSVGPathManagerDelegate.java:112)
  at com.facebook.react.uimanager.ViewManagerPropertyUpdater.updateProps (ViewManagerPropertyUpdater.java:46)
  at com.facebook.react.uimanager.ViewManager.updateProperties (ViewManager.java:84)
  at com.facebook.react.uimanager.ViewManager.createViewInstance (ViewManager.java:188)
  at com.facebook.react.uimanager.ViewManager.createView (ViewManager.java:115)
  at com.facebook.react.uimanager.NativeViewHierarchyManager.createView (NativeViewHierarchyManager.java:281)
  at com.facebook.react.uimanager.UIViewOperationQueue$CreateViewOperation.execute (UIViewOperationQueue.java:194)
  at com.facebook.react.uimanager.UIViewOperationQueue$1.run (UIViewOperationQueue.java:909)
  at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches (UIViewOperationQueue.java:1026)
  at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded (UIViewOperationQueue.java:1086)
  at com.facebook.react.uimanager.GuardedFrameCallback.doFrame (GuardedFrameCallback.java:29)
  at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame (ReactChoreographer.java:175)
  at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame (ChoreographerCompat.java:85)
  at android.view.Choreographer$CallbackRecord.run (Choreographer.java:1550)
  at android.view.Choreographer$CallbackRecord.run (Choreographer.java:1561)
  at android.view.Choreographer.doCallbacks (Choreographer.java:1117)
  at android.view.Choreographer.doFrame (Choreographer.java:992)
  at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:1535)
  at android.os.Handler.handleCallback (Handler.java:958)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loopOnce (Looper.java:257)
  at android.os.Looper.loop (Looper.java:368)
  at android.app.ActivityThread.main (ActivityThread.java:8819)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:572)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1049)

This could possibly be related to a version mismatch between one of the chart libraries and the version of react-native-svg-charts. However when I tried matching the versions correctly I ended up with even more gradle errors:

* What went wrong:
A problem occurred evaluating project ':react-native-svg'.
> Could not find method compile() for arguments [com.facebook.react:react-native:+] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 7s
error Failed to install the app. Command failed with exit code 1: ./gradlew tasks FAILURE: Build failed with an exception. * Where:
Build file '/home/brandon/massive/node_modules/react-native-svg/android/build.gradle' line: 52 * What went wrong:
A problem occurred evaluating project ':react-native-svg'.
> Could not find method compile() for arguments [com.facebook.react:react-native:+] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler. * Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 7s
> Task :gradle-plugin:compileKotlin UP-TO-DATE
> Task :gradle-plugin:compileJava NO-SOURCE
> Task :gradle-plugin:pluginDescriptors UP-TO-DATE
> Task :gradle-plugin:processResources UP-TO-DATE
> Task :gradle-plugin:classes UP-TO-DATE
> Task :gradle-plugin:jar UP-TO-DATE
> Task :gradle-plugin:inspectClassesForKotlinIC UP-TO-DATE > Configure project :react-native-reanimated
No AAR for react-native-reanimated found. Attempting to build from source.
Android gradle plugin: 7.4.2
Gradle: 8.0.1
WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new publishing DSL. Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. See https://docs.gradle.org/8.0.1/userguide/command_line_interface.html#sec:command_line_warnings
I noticed some error on the Play Store reporting about the `react-native-svg-charts` library: ``` Exception java.lang.Error: at com.horcrux.svg.PathParser.parse_number (PathParser.java:627) at com.horcrux.svg.PathParser.parse_list_number (PathParser.java:594) at com.horcrux.svg.PathParser.parse (PathParser.java:118) at com.horcrux.svg.PathView.setD (PathView.java:28) at com.horcrux.svg.RenderableViewManager$PathViewManager.setD (RenderableViewManager.java:751) at com.horcrux.svg.RenderableViewManager$PathViewManager.setD (RenderableViewManager.java:740) at com.facebook.react.viewmanagers.RNSVGPathManagerDelegate.setProperty (RNSVGPathManagerDelegate.java:112) at com.facebook.react.uimanager.ViewManagerPropertyUpdater.updateProps (ViewManagerPropertyUpdater.java:46) at com.facebook.react.uimanager.ViewManager.updateProperties (ViewManager.java:84) at com.facebook.react.uimanager.ViewManager.createViewInstance (ViewManager.java:188) at com.facebook.react.uimanager.ViewManager.createView (ViewManager.java:115) at com.facebook.react.uimanager.NativeViewHierarchyManager.createView (NativeViewHierarchyManager.java:281) at com.facebook.react.uimanager.UIViewOperationQueue$CreateViewOperation.execute (UIViewOperationQueue.java:194) at com.facebook.react.uimanager.UIViewOperationQueue$1.run (UIViewOperationQueue.java:909) at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches (UIViewOperationQueue.java:1026) at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded (UIViewOperationQueue.java:1086) at com.facebook.react.uimanager.GuardedFrameCallback.doFrame (GuardedFrameCallback.java:29) at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame (ReactChoreographer.java:175) at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame (ChoreographerCompat.java:85) at android.view.Choreographer$CallbackRecord.run (Choreographer.java:1550) at android.view.Choreographer$CallbackRecord.run (Choreographer.java:1561) at android.view.Choreographer.doCallbacks (Choreographer.java:1117) at android.view.Choreographer.doFrame (Choreographer.java:992) at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:1535) at android.os.Handler.handleCallback (Handler.java:958) at android.os.Handler.dispatchMessage (Handler.java:99) at android.os.Looper.loopOnce (Looper.java:257) at android.os.Looper.loop (Looper.java:368) at android.app.ActivityThread.main (ActivityThread.java:8819) at java.lang.reflect.Method.invoke at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:572) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1049) ``` This could possibly be related to a version mismatch between one of the chart libraries and the version of `react-native-svg-charts`. However when I tried matching the versions correctly I ended up with even more gradle errors: ``` * What went wrong: A problem occurred evaluating project ':react-native-svg'. > Could not find method compile() for arguments [com.facebook.react:react-native:+] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler. * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 7s error Failed to install the app. Command failed with exit code 1: ./gradlew tasks FAILURE: Build failed with an exception. * Where: Build file '/home/brandon/massive/node_modules/react-native-svg/android/build.gradle' line: 52 * What went wrong: A problem occurred evaluating project ':react-native-svg'. > Could not find method compile() for arguments [com.facebook.react:react-native:+] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler. * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 7s > Task :gradle-plugin:compileKotlin UP-TO-DATE > Task :gradle-plugin:compileJava NO-SOURCE > Task :gradle-plugin:pluginDescriptors UP-TO-DATE > Task :gradle-plugin:processResources UP-TO-DATE > Task :gradle-plugin:classes UP-TO-DATE > Task :gradle-plugin:jar UP-TO-DATE > Task :gradle-plugin:inspectClassesForKotlinIC UP-TO-DATE > Configure project :react-native-reanimated No AAR for react-native-reanimated found. Attempting to build from source. Android gradle plugin: 7.4.2 Gradle: 8.0.1 WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the `gradle.properties` file or use the new publishing DSL. Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0. You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins. See https://docs.gradle.org/8.0.1/userguide/command_line_interface.html#sec:command_line_warnings ```
brandon.presley added the
bug
label 2023-11-20 21:37:31 +00:00
Author
Owner

I managed to force replicate this issue when purposefully passing NaN to my charts like so:

      <Chart
        data={weights.map((set) => NaN)}
        labels={weights.map((set) =>
          format(new Date(set.created), "yyyy-MM-d")
        )}
      />
11-28 11:00:30.013  3107  3107 E AndroidRuntime: FATAL EXCEPTION: main
11-28 11:00:30.013  3107  3107 E AndroidRuntime: Process: com.massive, PID: 3107
11-28 11:00:30.013  3107  3107 E AndroidRuntime: java.lang.Error: Invalid number formating character 'N' (i=4, s=M64,NaN Q 102.5, NaN, 141, NaN Q 179.5, NaN, 218, NaN)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at com.horcrux.svg.PathParser.parse_number(PathParser.java:627)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at com.horcrux.svg.PathParser.parse_list_number(PathParser.java:594)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at com.horcrux.svg.PathParser.parse(PathParser.java:108)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at com.horcrux.svg.PathView.setD(PathView.java:28)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at com.horcrux.svg.RenderableViewManager$PathViewManager.setD(RenderableViewManager.java:751)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at com.horcrux.svg.RenderableViewManager$PathViewManager.setD(RenderableViewManager.java:740)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at com.facebook.react.viewmanagers.RNSVGPathManagerDelegate.setProperty(RNSVGPathManagerDelegate.java:112)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at com.facebook.react.uimanager.ViewManagerPropertyUpdater.updateProps(ViewManagerPropertyUpdater.java:46)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at com.facebook.react.uimanager.ViewManager.updateProperties(ViewManager.java:84)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at com.facebook.react.uimanager.NativeViewHierarchyManager.updateProperties(NativeViewHierarchyManager.java:142)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at com.facebook.react.uimanager.UIViewOperationQueue$UpdatePropertiesOperation.execute(UIViewOperationQueue.java:93)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at com.facebook.react.uimanager.UIViewOperationQueue$1.run(UIViewOperationQueue.java:915)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches(UIViewOperationQueue.java:1026)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at com.facebook.react.uimanager.UIViewOperationQueue.-$$Nest$mflushPendingBatches(Unknown Source:0)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:1086)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:175)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:85)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1229)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1239)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at android.view.Choreographer.doCallbacks(Choreographer.java:899)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at android.view.Choreographer.doFrame(Choreographer.java:827)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1214)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at android.os.Handler.handleCallback(Handler.java:942)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:99)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at android.os.Looper.loopOnce(Looper.java:201)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:288)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:7872)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
11-28 11:00:30.013  3107  3107 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)

However, now the question becomes how did my SQL query result in NaN fields? It could be either:

ROUND(MAX(weight), 2)

Or

ROUND(SUM(weight * reps), 2)

Which are resulting in either NaN directly, or something that converts to NaN when being turned into a Number.

Because both reps and weight are defined to be NOT NULL in the SQL schema, I don't see how this is possible:

| CREATE TABLE sets (
  |
|         id INTEGER PRIMARY KEY AUTOINCREMENT,
  |
|         name TEXT NOT NULL,
  |
|         reps INTEGER NOT NULL,
  |
|         weight INTEGER NOT NULL,
  |
|         created TEXT NOT NULL,
  |
|         unit TEXT DEFAULT 'kg'
  |
|       , hidden DEFAULT false, image TEXT NULL, sets INTEGER NOT NULL DEFAULT 3, minutes INTEGER NOT NULL DEFAULT 3, seconds INTEGER NOT NULL DEFAULT 30, steps TEXT NULL) |
I managed to force replicate this issue when purposefully passing `NaN` to my charts like so: ```jsx <Chart data={weights.map((set) => NaN)} labels={weights.map((set) => format(new Date(set.created), "yyyy-MM-d") )} /> ``` ``` 11-28 11:00:30.013 3107 3107 E AndroidRuntime: FATAL EXCEPTION: main 11-28 11:00:30.013 3107 3107 E AndroidRuntime: Process: com.massive, PID: 3107 11-28 11:00:30.013 3107 3107 E AndroidRuntime: java.lang.Error: Invalid number formating character 'N' (i=4, s=M64,NaN Q 102.5, NaN, 141, NaN Q 179.5, NaN, 218, NaN) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at com.horcrux.svg.PathParser.parse_number(PathParser.java:627) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at com.horcrux.svg.PathParser.parse_list_number(PathParser.java:594) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at com.horcrux.svg.PathParser.parse(PathParser.java:108) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at com.horcrux.svg.PathView.setD(PathView.java:28) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at com.horcrux.svg.RenderableViewManager$PathViewManager.setD(RenderableViewManager.java:751) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at com.horcrux.svg.RenderableViewManager$PathViewManager.setD(RenderableViewManager.java:740) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at com.facebook.react.viewmanagers.RNSVGPathManagerDelegate.setProperty(RNSVGPathManagerDelegate.java:112) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at com.facebook.react.uimanager.ViewManagerPropertyUpdater.updateProps(ViewManagerPropertyUpdater.java:46) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at com.facebook.react.uimanager.ViewManager.updateProperties(ViewManager.java:84) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at com.facebook.react.uimanager.NativeViewHierarchyManager.updateProperties(NativeViewHierarchyManager.java:142) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at com.facebook.react.uimanager.UIViewOperationQueue$UpdatePropertiesOperation.execute(UIViewOperationQueue.java:93) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at com.facebook.react.uimanager.UIViewOperationQueue$1.run(UIViewOperationQueue.java:915) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches(UIViewOperationQueue.java:1026) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at com.facebook.react.uimanager.UIViewOperationQueue.-$$Nest$mflushPendingBatches(Unknown Source:0) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:1086) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:175) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:85) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1229) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1239) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at android.view.Choreographer.doCallbacks(Choreographer.java:899) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at android.view.Choreographer.doFrame(Choreographer.java:827) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1214) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:942) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at android.os.Looper.loopOnce(Looper.java:201) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at android.os.Looper.loop(Looper.java:288) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7872) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) 11-28 11:00:30.013 3107 3107 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936) ``` However, now the question becomes how did my SQL query result in NaN fields? It could be either: ```sql ROUND(MAX(weight), 2) ``` Or ```sql ROUND(SUM(weight * reps), 2) ``` Which are resulting in either `NaN` directly, or something that converts to `NaN` when being turned into a `Number`. Because both reps and weight are defined to be `NOT NULL` in the SQL schema, I don't see how this is possible: ``` | CREATE TABLE sets ( | | id INTEGER PRIMARY KEY AUTOINCREMENT, | | name TEXT NOT NULL, | | reps INTEGER NOT NULL, | | weight INTEGER NOT NULL, | | created TEXT NOT NULL, | | unit TEXT DEFAULT 'kg' | | , hidden DEFAULT false, image TEXT NULL, sets INTEGER NOT NULL DEFAULT 3, minutes INTEGER NOT NULL DEFAULT 3, seconds INTEGER NOT NULL DEFAULT 30, steps TEXT NULL) | ```
Author
Owner

Even if the above query resulted in null which is the only value I could possibly see happening, Number(null) returns zero which shouldn't cause this error.

Even if the above query resulted in `null` which is the only value I could possibly see happening, `Number(null)` returns zero which shouldn't cause this error.
brandon.presley added the
help wanted
label 2024-02-05 01:48:46 +00:00
Sign in to join this conversation.
No Milestone
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: brandon.presley/Massive#206
No description provided.