@kaspernj/api-maker 1.0.304 → 1.0.305

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,51 +1,40 @@
1
- import {digg, digs} from "diggerize"
1
+ import {digg} from "diggerize"
2
2
  import PropTypes from "prop-types"
3
- import React from "react"
3
+ import React, {memo} from "react"
4
4
  import ModelClassTable from "./model-class-table"
5
5
  import ShowNav from "./show-nav"
6
+ import useQueryParams from "on-location-changed/src/use-query-params"
6
7
  import withModel from "../with-model"
7
8
 
8
- class ApiMakerSuperAdminShowReflectionPage extends React.PureComponent {
9
- static propTypes = {
10
- currentUser: PropTypes.object,
11
- modelClass: PropTypes.func.isRequired,
12
- queryParams: PropTypes.object.isRequired
13
- }
14
-
15
- render() {
16
- const {currentUser, modelClass, queryParams} = digs(this.props, "currentUser", "modelClass", "queryParams")
17
- const model = this.model()
18
- const reflections = modelClass.reflections()
19
- const reflection = reflections.find((reflectionI) => reflectionI.name() == queryParams.model_reflection)
20
- const reflectionModelClass = reflection.modelClass()
21
- let collection
22
-
23
- if (model) collection = model[reflection.name()]()
24
-
25
- return (
26
- <div className="super-admin--show-page">
27
- {model &&
28
- <ShowNav model={model} modelClass={modelClass} queryParams={queryParams} />
29
- }
30
- {collection &&
31
- <ModelClassTable
32
- collection={collection}
33
- currentUser={currentUser}
34
- key={reflectionModelClass.modelName().human()}
35
- modelClass={reflectionModelClass}
36
- queryParams={queryParams}
37
- />
38
- }
39
- </div>
40
- )
41
- }
42
-
43
- model() {
44
- const {modelClass} = digs(this.props, "modelClass")
45
- const camelizedLower = digg(modelClass.modelClassData(), "camelizedLower")
9
+ const ApiMakerSuperAdminShowReflectionPage = ({modelClass, restProps}) => {
10
+ const queryParams = useQueryParams()
11
+ const camelizedLower = digg(modelClass.modelClassData(), "camelizedLower")
12
+ const model = digg(restProps, camelizedLower)
13
+ const reflections = modelClass.reflections()
14
+ const reflection = reflections.find((reflectionI) => reflectionI.name() == queryParams.model_reflection)
15
+ const reflectionModelClass = reflection.modelClass()
16
+ let collection
17
+
18
+ if (model) collection = model[reflection.name()]()
19
+
20
+ return (
21
+ <div className="super-admin--show-page">
22
+ {model &&
23
+ <ShowNav model={model} modelClass={modelClass} />
24
+ }
25
+ {collection &&
26
+ <ModelClassTable
27
+ collection={collection}
28
+ key={reflectionModelClass.modelName().human()}
29
+ modelClass={reflectionModelClass}
30
+ />
31
+ }
32
+ </div>
33
+ )
34
+ }
46
35
 
47
- return digg(this, "props", camelizedLower)
48
- }
36
+ ApiMakerSuperAdminShowReflectionPage.propTypes = {
37
+ modelClass: PropTypes.func.isRequired
49
38
  }
50
39
 
51
40
  const modelClassResolver = {callback: ({queryParams}) => {
@@ -56,7 +45,7 @@ const modelClassResolver = {callback: ({queryParams}) => {
56
45
  }}
57
46
 
58
47
  export default withModel(
59
- ApiMakerSuperAdminShowReflectionPage,
48
+ memo(ApiMakerSuperAdminShowReflectionPage),
60
49
  modelClassResolver,
61
50
  {
62
51
  loadByQueryParam: ({props}) => props.queryParams.model_id
@@ -1,4 +1,4 @@
1
- import {useCallback, useEffect} from "react"
1
+ import {useCallback, useEffect, useState} from "react"
2
2
  import Devise from "./devise.mjs"
3
3
 
4
4
  const useCurrentUser = () => {
package/src/use-model.mjs CHANGED
@@ -1,7 +1,9 @@
1
+ import * as inflection from "inflection"
1
2
  import ModelEvents from "./model-events.mjs"
2
3
  import useQueryParams from "on-location-changed/src/use-query-params.js"
4
+ import {useEffect, useState} from "react"
3
5
 
4
- const useModel = (match, modelClassArg, argsArg = {}) => {
6
+ const useModel = (modelClassArg, argsArg = {}) => {
5
7
  const queryParams = useQueryParams()
6
8
  let args, modelClass
7
9
 
@@ -24,7 +26,9 @@ const useModel = (match, modelClassArg, argsArg = {}) => {
24
26
  return args.loadByQueryParam({queryParams})
25
27
  }
26
28
 
27
- return match.params[paramsVariableName] || match.params.id
29
+ if (!args.match) throw new Error("Both 'loadByQueryParam' and 'match' wasn't given")
30
+
31
+ return args.match.params[paramsVariableName] || args.match.params.id
28
32
  }
29
33
 
30
34
  const modelId = getModelId()
@@ -53,17 +57,17 @@ const useModel = (match, modelClassArg, argsArg = {}) => {
53
57
 
54
58
  const loadNewModel = async () => {
55
59
  const params = Params.parse()
56
- const ModelClass = digg(this, "modelClass")
60
+ const ModelClass = modelClass
57
61
  const paramKey = ModelClass.modelName().paramKey()
58
62
  const modelDataFromParams = params[paramKey] || {}
59
63
 
60
64
  let defaults = {}
61
65
 
62
- if (this.args.newIfNoId?.defaults) {
63
- defaults = await this.args.newIfNoId.defaults()
66
+ if (args.newIfNoId?.defaults) {
67
+ defaults = await args.newIfNoId.defaults()
64
68
  }
65
69
 
66
- const modelData = Object.assign(defaults, this.args.newAttributes, modelDataFromParams)
70
+ const modelData = Object.assign(defaults, args.newAttributes, modelDataFromParams)
67
71
  const model = new ModelClass({
68
72
  isNewRecord: true,
69
73
  data: {a: modelData}