23 Commits

Author SHA1 Message Date
dffad844ad Rename scope @rondo to @rondo.dev 2019-08-25 11:33:06 +07:00
4b601f93cb Fix linting error 2019-05-21 22:44:22 +12:00
83861cc5be Add   to TeamList New 2019-04-03 23:45:38 +08:00
1a47e3e8a6 Fix test failure in TeamConnector 2019-04-03 20:36:19 +08:00
da6143d1aa Add ListButtons to TeamList.tsx 2019-04-03 20:34:14 +08:00
d5cb6b92b6 Remove onUpdateTeam from TeamList 2019-04-02 19:35:39 +08:00
264f5aba60 Add T prefix for all type defs 2019-04-02 16:22:38 +08:00
db96b95522 Add SiteList.tsx 2019-04-02 15:32:40 +08:00
8b6f90235e Use default action type and add status to async actions
Since TypeScript can infer types based on string types, it has became
easier to define a single constant of an action that returns a promise,
and then dispatch actions with different statuses: pending, resolved,
and/or rejected. This seems like more typing at first, but in the long
run it will become easier to write generic reducer methods, and the
names of reduced types will not have to be repeated every time.

For example, previously we had to write:

    type MyActionTypes =
      IAsyncAction<IUser, 'LOGIN_PENDING', 'LOGIN_RESOLVED', 'LOGIN_REJECTED'>
      | ...

And now we can write:

    type MyActionTypes =
      IAsyncAction<IUser, 'LOGIN'>
      | ...
2019-04-01 15:20:42 +08:00
58a0fb1772 Add /teams/new route 2019-03-26 20:37:15 +08:00
289ea00de8 Add tests more tests to TeamConnector.test.tsx 2019-03-26 14:29:44 +08:00
d3f294a57c Add packages/client/src/crumbs 2019-03-25 18:30:32 +08:00
fbeea5ad3e Use Route in TeamManager.tsx 2019-03-25 17:21:43 +08:00
c83fa2d6d4 packages/client: Style TeamManager, fix error on delete 2019-03-25 13:28:09 +08:00
d5c4be2ac1 Sort imports 2019-03-24 09:48:08 +08:00
3bcf9d646e Style team manager 2019-03-23 22:50:44 +08:00
93b048bc10 Add correlationId to SqlLogger 2019-03-23 21:16:20 +08:00
cc360afbbe Use Route params in TeamConnector.tsx (untested)
TODO: Fix SQLite3 complaining

https://github.com/typeorm/typeorm/issues/307
2019-03-23 17:14:22 +08:00
3595a71cec Make TestUtils.tsx type safe
After spending almost two days in finding the issue, I ran across a few
TypeScript issues on their GitHub page:

- Loss of type inference converting to named parameters object
  https://github.com/Microsoft/TypeScript/issues/29791

- Parameter of a callback without a specified type next to it breaks code.
  https://github.com/Microsoft/TypeScript/issues/29799

- Convert to named parameters
  https://github.com/Microsoft/TypeScript/pull/30089

It became clear that TypeScript is unable to infer method return
arguments if a generic type is used more than once in generic parameter
object. Instead it returns {}.

For example, the following would fail on line 28:

    type Convert<A, B> = (value: A) => B

    interface IParams<C, D> {
      value: C
      convert: Convert<C, D>
      doConvert: (value: C, convert: this['convert']) => D
    }

    function doSomething<E, F>(value: E, convert: Convert<E, F>) {
      return convert(value)
    }

    function build<G, H>(params: IParams<G, H>) {
      const {value, convert} = params
      return params.doConvert(value, convert)
    }

    const outerResult = build({
      value: {
        a: {
          value: 1,
        },
        b: 'string',
      },
      convert: value => value.a,
      doConvert: (value, convert) => {
        const innerResult = doSomething(value, convert)
        innerResult.value
        console.log('innerResult:', innerResult)
        return innerResult
      },
    })

    console.log('outerResult:', outerResult)

With the message:

    Property 'value' does not exist on type '{}'.

If we replace parameter object IParams with regular ordered function
parameters, the compilation succeeds.

RyanCavanough (TS project lead) from GitHub commented:

> We don't have a separate pass to say "Go dive into the function and
> check to see if all its return statements don't rely on its parameter
> type" - doing so would be expensive in light of the fact that extremely
> few real-world functions actually behave like that in practice.

Source: https://github.com/Microsoft/TypeScript/issues/29799#issuecomment-464154659

These modifications bring type safety to TestUtils.tsx, and therefore
client-side tests of React components, while keeping almost the same
ease of use as before.
2019-03-23 15:48:52 +08:00
8f8c3b6c9c Refactor action definitions to type less 2019-03-22 13:26:58 +08:00
f2e44f477c Add better type checking when connecting components 2019-03-20 16:57:41 +05:00
150a02b344 Add team to @rondo/comments-client 2019-03-20 16:38:20 +05:00
a628082a73 Add packages/client/src/team 2019-03-20 15:01:15 +05:00