Skip to content

Commit

Permalink
feat(server): implement limited scope and token management for public…
Browse files Browse the repository at this point in the history
… API (#655)

* fix(web): unify settings (#1029)

* rename save to save changes

* wip: save settings when clicking on save button

* rename save changes button

* fix(server): integration api is not retrieving metdata item fields when metadata item id is passed (#1030)

fix integration api get item bug

* fix(web): metadata default value and item creating and updating (#1027)

* fix: metadata default value

* add: bool conversion

* refactor: create and update

* fix: the bug that prevented adding meta text and url

* Apply suggestions from code review

Co-authored-by: Nour Balaha <[email protected]>

* fix: dateConvert

---------

Co-authored-by: Nour Balaha <[email protected]>

* fix(web): workspace settings in old workspaces (#1031)

fix: workspace settings in old workspaces

* fix(web): add missing translation (#1032)

fix: add missing translation

* chore(server): add trace to item (#1034)

* add trace to item

* fix lint

* feat(web): make it possible to change tiles and terrain on the asset preview (#1033)

* add: custom dropdown

* add: default terrain

* add: reflect settings

* fix: dropdown styling

* fix: missing type

* add: no image

* fix: mistype

* fix(server): check group schema field before handling inner group fields (#1036)

* check group schema field before handling inner group fields

* fix operator

* fix(web): update the item with a new group field (#1037)

* fix: id bug

* fix: styled warning

* fix: check if value changed

* fix: adding new group field

* fix handling multiple value and refactor

* add: useCallback

* undo: styled-component warning

* fix(web): enable to preview gltf/glb file (#1038)

fix: gltf

* fix(web): minor bugs in appearance, etc. (#1039)

* fix: group icon color

* fix: asset table column styling

* fix: clickable range on group tab header

* fix: leaving alert with single-option and multi-asset in group

* fix: default terrain

* fix: move the onClick functions

---------

Co-authored-by: nourbalaha <[email protected]>

* perf(server): optimize mongo indices

* chore(server): update reearthx package (#1042)

update reearthx package

* chore(server): fix go mod (#1043)

fix

* fix(web): not showing empty info box (#1041)

* remove: unnecessary assertion

* fix: not showing infoBox when selecting layer

* refactor and fix

* fix: showing mvt file info

* wrap with useCallback

* fix(web): the length of the view title's underline (#1045)

fix: underline length

* fix(worker,server): update decompressor (#1049)

* chore(server): update go dependencies (#1047)

* chore(server): update go dependencies

* update reearthx

* fix(web): the size of the point in mvt (#1053)

* update cesium-mvt-imagery-provider

* expand the size of the point

* fix(web): mvt maximum zoom level (#1054)

* add maximum zoom level

* fix(web): change the default number of items (#1060)

change the default number of items

* chore(server): referenced items resolver (#1058)

* ref items resolver

* resolve notes
revert worker sum changes

* feat(web): implement referenced items resolver (#1059)

* feat: implement referenced items resolver

* feat(web): add e2e testing (#1040)

* install playwright

* wip: e2e config

* add playwright to .git ignore

* update vite.config

* update gitignore files

* add workspaceId

* wip: e2e config

* fix e2e action env

* fix: removed unused env vars

* fix: @playwright/test version

* add gql to Reearth type

* test(web): add unit tests for utils functions (#1065)

add unit tests for utils folder

* chore(server): go mod tidy

* ci: fix decompressor deployment

* fix(web): use assets data that is the result of the getItemQuery (#1066)

* fix: use assets data of getItem's query

* apply suggestions

* refactor(web): comprehensive refactor (#1067)

* Refactor Item page components

* Refactor Asset page components

* Refactor Schema page components

* Refactor Integration page components

* Refactor Request page components

* Refactor Settings page components

* Refactor Accessibility page components

* Add unit tests

* Remove inline styles

* Use react hooks in the places that they should be used

* Do the todo comments

* Remove unnecessary comments

* Remove unused queries

* Add performance improvements

---------

Co-authored-by: caichi <[email protected]>
Co-authored-by: Kazuma Tsuchiya <[email protected]>

* fix(web): some quick fixing and improvements (#1071)

* add: asset creator's name

* fix: request creator name and reviewer's icon

* add: setting icons to request modal

* fix: multi reviewers style

* fix: updating reviewers

* fix: hiding three-dots icon

* showing the notification when updating my integration

* fix: swicth column width on Accessibility page

* fix: project role setting

* add: go back home button

* apply suggestions

* fix(web): asset value bugs (#1070)

* fix: showing bug of asset default value

* fix: asset name bug

* fix: enable to select the same asset once unlinking

* apply a suggestion

* fix: getAsset logic

* fix(web): reduce the queries to get assets (#1072)

* unify GetAssets and GetAssetsItems

* remove joinning asset's names

* remove redundant codes

* refactor: item fields

* refactor: item metadata

* Apply suggestions from code review

Co-authored-by: Nour Balaha <[email protected]>

---------

Co-authored-by: Nour Balaha <[email protected]>

* feat(web): implement resizable columns on Asset and Request pages (#1074)

make the columns stretchable on Asset and Request page

* refactor(web): organize type definitions and data converters (#1075)

* move model type

* unify dataConverters

* fix conflict

* rename asset.type.ts to types.ts

* delete thread.types.ts

* refactor: move comment type

* fix(web): include home tab in sidebar on project page (#1076)

* revert: go back home button

* add: home tab on project page

* fix(web): reference field bugs (#1079)

* fix: disable model change on update reference field

* fix: disable unique validation in two-way reference fields

* fix(server): cannot unset a schema field's title (#1073)

* fix title unsetting bug

* Update server/pkg/schema/schema.go

Co-authored-by: yk-eukarya <[email protected]>

---------

Co-authored-by: yk-eukarya <[email protected]>

* fix(web): resolve issues with home tab and asset page comments (#1080)

* fix: refetchQueries on comment panel

* fix: when switching workspace, the home tab should always be selected

* fix: synchronize account name with personal workspace name when updating account name

* fix: the lang of the notification when updating language setting

* add: required mark on webhook url

* test(web): add simple, comprehensive, and minimum e2e tests (#1081)

* add account and myIntegrations tests

* add: logout test

* add: integrations test

* small fix

* add: terrain test

* add: member test

* add: workspace test

* add: project test

* fix: terrain swtich test

* add: overview test

* add: accesibility test

* add: asset test

* add: request test

* fix: comment on Asset test

* add: schema test

* move utils for workspace

* move utils for project

* move utils for model

* move utils for group

* move utils for comment

* fix: missing import

* move handleFieldForm

* move createRequest func

* add: content test

* fix some codes

* Revert "fix: synchronize account name with personal workspace name when updating account name"

This reverts commit 388e67b.

* fix: request state

* add: notification closing

* fix: exclude path in vite.config

* fix: integrations test

* Apply suggestions from code review

Co-authored-by: Nour Balaha <[email protected]>

---------

Co-authored-by: Nour Balaha <[email protected]>

* fix(web): request page bugs (#1082)

* fix: reviewer selecting

* add: reloading function of request modal

* fix: reviewers column styling

* fix: refetchQueries of createRequestMutation

* feat(server): integration API to create asset upload (#1084)

feat(server): add a new integration api to create asset upload

* fix(server): integration API asset create cannot create an asset with token

* fix(web): correct rendering of boolean field in content table (#1083)

fix: boolean field render in content table

* feat(web): increase asset file fragment depth (#1086)

feat: increase asset file fragment depth

* refactor: reference schema field (#1077)

* ref field migration

* fix lint

* add missing translations

* add some comments

* add new error

* fix migration

* fix(server): ja translations (#1078)

* fix ja translations

* fix ja translation

* migration test

* fix: graphql

* fix gql resolver

* fix: reference item searching

* fix migration

---------

Co-authored-by: caichi <[email protected]>
Co-authored-by: Kazuma Tsuchiya <[email protected]>

* chore(server): fix go mod (#1087)

* fix go mod

* fix go mod

* ci: upgrade to golang 1.22.1 (#1088)

* upgrade to golang 1.22.1

* fix

* chore(worker): update golang dependencies (#1089)

update

* ci(web): add an action to update ion token (#1021)

* ci: add an action to update ion token

* update the Get Cesium Ion token run command

* feat(server): support multiple tenants (#1068)

* feat(server): support multiple tenants

* test(server): fix broken tests

* chore: update dependencies

---------

Co-authored-by: rot1024 <[email protected]>

* feat(server): add WEB_CONFIG to config

* feat(server): item search by referenced item title (#1090)

* imp

* fix dependency issue

* ci: update github actions dependencies (#1052)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* chore: update go dependencies (#926)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* fix(server): multi tennant was not working

* chore(web): my workspace is optional

* feat(server,web): support s3 multipart upload (#1091)

* feat(server,web): support s3 multipart upload

* update integration api

* fix frontend

* fix ci

* fix ci

* fix

* fix ci

* fix

* fix

* fix

* add etag

* Revert "add etag"

This reverts commit a2f9738.

* fix

---------

Co-authored-by: rot1024 <[email protected]>

* fix(server): workspace cloud not be created

* fix(server): Fixed to use parameter uuid instead of generated uuid (#1093)

* fix(web): add an editable icon on a metadata column header (#1092)

* add: renderTitle

* enable url metadata to edit from table

* rename itemFormat.tsx to ItemFormat.tsx

* fix(server): item search mongo pipeline (#1097)

imp

* feat(server,worker): add authentication for AWS SNS subscriptions (#1094)

* feat(server,worker): add aws sns subcription

* feat(server): change the authentication method of notify handler in the case of aws

* fix(server,worker): error message

* refactor

---------

Co-authored-by: rot1024 <[email protected]>

* fix(web): adding e2e tests for items and optimizing queries (#1096)

* fix: content test

* add: text field test

* add: asset test

* add: date test

* add: boolean test

* add: option test

* add: int test

* fix: int test

* add: url test

* add; group test

* add reference
test and fix reference modal behavior

* move files

* add: text matadata test

* small fix

* add: tag test

* add: boolean metadata test

* add: checkbox test

* add: date metadata test

* add: url metadata test

* fix: reduce api when updating item

* fix: throw searchItem when opening the reference modal

* fix: throw GetAssets when selecting asset field

* fix: throw GetModalRequests when opening the add to Request modal

* fix: unify GetAsset and GetAssetItem

* fix: GetModels and GetModel

* fix: tests

* fix: refetchQueries name

* fix: behavior after deleting model

* fix: account settting test

* fix group test

* add: retries property to playwright.config

* fix: randomizing project alias

* add: beforeEach and afterEach

* remove metadata tests

* add: reverting back to the original username and email

* fix: account name and email bug

* chore(server): asset uc UpdateFiles should print more logs

* fix(server): fix tests, return err from notify handler

* fix(server): send event after saving an asset in asset creation

* fix(server): fix warning

* chore(server): update go.mod

* feat(web,server): support multi-tenant login (#1102)

* feat(web): support multi-tenant login

* memoize

* refactor type

* fix cognito

* fix bugs

* pretty print config, mask db url

* fix

* fix(web): improve the performance related to the group (#1104)

* remove redundant code

* fix:  jumping to ia new model when creating it

* fix: unify model and group

* remove redundant code

* fix: getGroups and getGroup

* add test for creating group

* fix: createGroup test behavior

* fix: default value bug

* fix: remove graphql api from GroupItem

* fix(web): table-related and small bugs (#1103)

* fix:  disable upload button when selecting nothing

* add: clear btn on search input field on all tables

* fix: the behavior of updating tag from the edit page

* hide first column from table setting of table on modal

* fix: make the columns resizable on modal table

* fix: placeholder in test

* refactor(web): model, project, and workspace types (#1105)

* refactor: model type

* refactor: workspace type

* refactor: project type

* fix: showPublishAction

* fix(web): after deleting the first view, the current view is not changed (#1106)

* move file

* add: view test

* fix: the behavior when removing first view

* add: filter saving

* add: saving column setting

* add: test.setTimeout

* fix: change test.timeout() to test.slow()

* test(web): add the tests to reorder schema, model, tiles, and terrain by drag and drop (#1107)

* add: schema reordering test

* fix: where handleFieldForm is used

* add: model reordering test

* add: tiles and terrain reordring test

* fix(web): improve the performance of updating metadata from the table (#1109)

* remove searchItems query from refetchQueries

* Revert "remove metadata tests"

This reverts commit 055abc2.

* fix: tag test

* fix: url updating feature

* fix: url metadata test

* fix(web): reference items bug (#1110)

* fix: adding schema variable

* add loading to reference modal table

* refactor(web): move isItemReferenced query to organisms level (#1108)

* refactor: move graphql to organisms level

* fix: conflict

* feat(server): asset file paths (#1099)

* wip: adding file paths

* wip: asset file paths

* fix: filepaths

* revert new file code

* wip: move to adapter level

* wip: getting asset files from adapter level

* fix: memory

* fix: test cases

* fix: find file by id

* fix: paths in repo layer

* refactor: rename variables

* revert repo and interactor changes

* rename variables

* fix: remove children from adapter

* fix: convert asset unit test

* refactor and comment unused code

* fix: FindByID unit test

* feat(web): asset file paths (#1100)

* add file paths to gql

* wip: unzip file list

* remove children from asset file

* fix: change constructFileTree's  parameter name

* fix path and remove unused props

* refactor: get tree data

* refactor

* refactor 2

* refactor(web): e2e tests (#1111)

* fix: closeNotification

* add: locale setting

* add: fullyParallel to config

* remove: unnnecessary assertion

* perf(web): asset file list (#1112)

* perf: asset file list

* fix asset file types

* refactor

* feat(web): migrate to antd v5 (#1113)

* wip: migrate to antd 5

* wip: migrating to antd v5

* upgrade other antd deps

* fix: console errors

* remove deprecated method showArrow

* wip: upgrading antd

* fix: change moment to dayjs

* fix: styling

* update antd and @ant-design/pro-table

* wip: fix stying

* fix: table column

* fix: control dropdown

* fix: comment styling

* fix: revert primary color change

* fix: SearchItemQuery skip variable

* update: ant-design libs

* fix: multiple tag render

* fix: e2e tests

* revert: a tag styling

* delete: any assertion

* fix: ci error

* yarn format

---------

Co-authored-by: nourbalaha <[email protected]>

* fix(web): styling issues after updating antd and from long Input (#1117)

* add: scroll-bar

* fix: schema heading

* fix: integration card title

* fix: schema display

* fix: reference modal

* fix: request page

* fix: field title

* fix: test

* Update web/src/components/molecules/Content/Form/FieldTitle.tsx

Co-authored-by: Nour Balaha <[email protected]>

* add: test.slow() to asset field test

---------

Co-authored-by: Nour Balaha <[email protected]>

* perf(web): optimize list items performance by minimizing query calls (#1119)

* fix: move useGetViewsQuery to contentList hooks

* add: default sort

* fix: filter area styling

* fix: the behavior when updating view's name

* fix(web): styling of the close button on modal (#1120)

fix: modal close btn

* feat(web): implement resizable columns on Integration table (#1121)

fix: table styling

* chore(web): add a missing translation (#1123)

chore: add missing translation

* feat(web): add a sipnner to content and request pages (#1122)

* add a spinner to content and request pages

* remove unused code

* feat(web): add a spinner when creating a new workspace (#1124)

* feat: add a spinner to new workspace button

* rename isLoading to setLoading

* fix(server): item metadata resolver returns jumbled items (#1118)

fix

Co-authored-by: mimoham24 <[email protected]>

* fix(server): filter out the deleted referenced items (#1116)

filter out the nil items

Co-authored-by: mimoham24 <[email protected]>

* feat(web): implement workspace owners' ability to remove other owners (#1127)

feat: workspace owners' ability to remove other owners

* fix(web): updating metadata added later from edit page (#1125)

* fix: updating metadata from detail

* add: e2e test

* chore(server): add environment example (#1101)

* chore(server): log mongo query in dev env (#1098)

imp

Co-authored-by: mimoham24 <[email protected]>

* feat(web): reduce the notificatoin duration (#1131)

set the notification timeout to 2 seconds

* feat(web): show notification when updating member’s role (#1129)

* add: notification

* fix: logic and typo

* chore(web): update npm dependencies and configuration (#1126)

* update minor versions

* update patch versions

* update major versions

* update netlify deploy-preview version

* make node 18 the minimum version to run cms

* update @graphql-codegen

* update @testing-library

* upgrade apollo-upload-client

---------

Co-authored-by: Kazuma Tsuchiya <[email protected]>

* chore(web): update auth0 version (#1132)

* chore: upgrade auth0 to v2

* fix(server): remove the root file from asset files  (#1134)

* fix: filter the root file when finding file by id

* fix: error checking if statement

* fix: error checking in aws file

* fix: update the commented code

* move the filter logic to pkg and add a test

* chore(web): add environment example (#1135)

add: .env.example

* chore(web): decrease the default items per page to 20 (#1136)

fix: default pageSize

* refactor(web): asset file tree and add unit tests (#1133)

* refactor: move unzip file list to a folder

* test: add unit tests

* fix(server): deleting and updating item fails when it has a deleted reference  (#1137)

* fix

* fix

* refactor(server): data loaders generic implementation (#1130)

* fix

* imp

---------

Co-authored-by: mimoham24 <[email protected]>

* feat(web): check project alias availability (#1141)

feat: check project alias availability

* fix(server): increase disk size of cloud build

* fix(web): clear fields on close in create project modal (#1143)

fix: reset fields when closing create project modal

* fix(web): populate create project form with initial values (#1144)

fix: add initial values to create project form

* feat(web): scrolling to selected model or group on Schema or Content page (#1139)

feat: scroll to selected model or group

Co-authored-by: Nour Balaha <[email protected]>

* feat(web): implement project alias update in settings page (#1145)

* make project alias readonly in accessability page and add copy icon

* wip: add project alias to update project form

* add onProjectAliasCheck

* refactor

* feat(web): fill key or alias by name automatically (#1140)

* feat: project alias

* model key

* model key

* reference field

* unify

* fix: tests and validater setting

* fix: e2e tests

* fix(web): keep search word and selected view after going back to table from edit (#1138)

* fix: keep searchTerm & currentView

* fix: e2e tests

* fix(web): format of standard date field (#1148)

fix: format of date field

* fix(web): fill key or alias automatically by lowercase (#1147)

fix: auto filling by lowercase

* fix(web): display all data on Request detail (#1146)

* refactor values except for group

* refactor Asset component & add reference title

* fix: multiple boolean

* fix: markdown styling

* add: group field

* fix: e2e tests

* fix(web): filter drop-down closes by itself when the condition is selectable (#1149)

fix: filter closing bug

* fix(web): keep page number and page size when returning to table from detail (#1150)

* fix: keep page and pageSize on Content

* fix: asset page

* fix: request

* fix(web): view svg source code (#1151)

fix: remove the cors header

* chore(server): update content type handling for uploaded SVG images via URL (#1152)

fix: content type

* feat(server): implement ordering for multiple groups (#1153)

* feat: support group ordering

* add unit tests

* add e2e test

* feat(server): implement ordering for multiple views (#1154)

* feat: add order to views

* make order required

* add unit tests

* handle order in create and updateOrder functions

* add e2e test

* add more suitable error messages

* make i18n

* feat(web): make the project alias readonly instead of disabled (#1159)

feat: make the project alias readonly instead of disabled

* feat(web): add support for multi-group ordering (#1158)

* feat: ordering

* add e2e tests

* yarn i18n

* fix: remove on Group from gql query

* chore(server): add missing translations (#1161)

add missing translations

* fix(server): add order to view document (#1162)

* fix: add order to infrastructure layer

* add unit test

* feat(server): implement regenerate integration token functionality (#1156)

* feat: implement regererate integration token

* add unit test

* add e2e test

* feat(web): implement regenerate integration token functionality (#1157)

* add regenerate token mutation to gql

* implement regenerate token

* add japanese translations

* fix: translation

---------

Co-authored-by: Kazuma Tsuchiya <[email protected]>

* feat(web): add support for multi-view ordering (#1163)

* feat: ordering views

* add e2e tests

* fix: test name

* fix: using Promise<void>

* feat(web): add the button to copy the value of Integration Token (#1164)

feat: copying integration token

* refactor(server): item reference (#1155)

imp

Co-authored-by: mimoham24 <[email protected]>

* fix(server): webhook should not be triggered on meta data item creation (#1160)

fix

Co-authored-by: mimoham24 <[email protected]>

* feat(server): add csv to preview type (#1165)

feat: add csv to preview type

* ci: migrate to GitHub Apps from PAT (#1167)

feat: migrate to github apps

Signed-off-by: KeisukeYamashita <[email protected]>

* fix(server): sort models, groups and views by order (#1166)

* fix: sort models, groups and views by order

* remove unnecessary code

* add unit tests

* handle errors

* refactor

* chore(web): upgrade cesium and resium versions (#1000)

* upgrade resium to version 1.17.4

* upgrade cesium to version 1.117.0

* upgrade cesium-mvt-imagery-provider to version 1.4.1

---------

Co-authored-by: keiya01 <[email protected]>

* chore(web): update vite and fix vite.config (#1170)

update vite + config

* chore(web): migrate eslint to v9 (#1168)

* migrate eslint to v9

* add config for playwright

* add story book to eslint.config

* add type: module to package.json

* add prettier config and update to v 3.3.0

* feat(web): add csv preview support on asset page (#1169)

* wip: add csv viewer

* feat: showing point

* yarn gql

* rename

* add: properties

* yarn i18n

* add: zoomTo entities

* add: disableDepthTestDistance

* apply suggestion

* chore(web): update prettier config (#1171)

* update prettier config

* format files

* refactor(web): resolve eslint update warnings (#1172)

* wip: fix wrong type specification

* fix: MyIntegrationDetails

* fix: MyIntegrations

* fix: Accessibility

* fix: Settings

* fix: AssetList

* fix: asset

* fix: modelsMenu

* fix: overview

* fix: Schema

* fix: Request Details

* fix: RequestList

* fix: ContentList

* fix: ViewsMenu

* fix: contentDetail

* fix: className

* fix: fromGraphQLRequest

* fix conflicts

* yarn lint & fix manually

* fix: e2e test

* yarn fix

* fix any

* yarn format

* yarn fix

* add .prettierignore

* fix: any assertion warnings

* revert amplify changes

* some fixes

* add amplify to eslint ignores

---------

Co-authored-by: nourbalaha <[email protected]>

* feat(server): enhance preview type detection for more file types (#1174)

* feat: enhance preview type detection for more file types

* add unit-test

* fix(web): styling of request detail page (#1175)

* fix: header dropdown

* fix: styling

* fix: accordion styling

* yarn i18n

* fix: hover color of remove button

* feat(server): implement geo field's position (#1176)

* wip: position value

* refactor to value

* refactor 2

* wip: unit tests

* fix: mapToFloat64

* add Test_propertyPosition_ToValue

* add propertyPosition to registry

* add more unit tests

* fix: float32 to float64 conversion

* add decimal numbers to unit tests

* fix: bad import in list_test

* feat(server): implement geo-field's point (#1177)

* add point field to the field schema

* add point to convert schema

* add field point to schema domain models

* add unit tests

* fix(web): disable all setting save buttons when nothing is changed (#1178)

* fix: disable button

* yarn fix

* fix: test

* fix

* fix(web): styling of integration, myIntegration, and member page (#1180)

* fix: MyIntegraiong, integration, delete

* fix: member, integration page

* add: minWidth

* quick fix

* feat(server): support field management in integration api (#1181)

imp

Co-authored-by: mimoham24 <[email protected]>

* fix(web): disable members and integrations already added (#1182)

* add flag to check if the user is member

* remove already connected integration

* refactor workspaceIntegrationMembers

* fix: e2e test

* fix: useCallback dependency

* rename

* refactor

* fix(web): styling and translation issues (#1184)

* fix traslations

* apply suggestions

* feat(server): support fetch projects in integration api (#1185)

* imp

* fix lint issue

* feat(server): support search by Ids in item filter (#1183)

imp

* feat(server): add geometry field support (#1179)

* wip: geometry field

* test: fix the test cases

* add ToGeometrySupportedType

* wip: add validation to geo field

* fix: TestFieldGeometry_Validate

* fix: TestTypeProperty_Validate

* fix: TestValue_Match

* add FromGeometrySupportedType

* fix(web): show loading for various actions (#1186)

* wip

* add: publish loading

* fix: e2e tests

* fix: uncomment t

* remove as Field

* apply suggestions

* fix(web): ignore invalid characters when auto-filling the key and alias (#1187)

* fix: ignore invalid characters

* fix: use try-catch

* ci: migrate GCR to GAR (#1190)

* feat: migrate to github apps

Signed-off-by: KeisukeYamashita <[email protected]>

* ci: migrate gcr to gar

Signed-off-by: KeisukeYamashita <[email protected]>

---------

Signed-off-by: KeisukeYamashita <[email protected]>

* feat(server): support item search in integration api (#1192)

* imp

* add test cases

* fix(web): remove useless key validating when updating some value other than key (#1191)

* fix: project, model, and schema

* fix: reference field validate

* fix: model, project

* fix: CorrespondingFieldKeyUnique

* feat(server): implement geometry object and geometry editor fields (#1189)

* add geometry to value

* add geometry to mongodoc

* wip: add geometry to integration api

* wip: e2e

* wip: e2e tests

* fix: supported types

* fix TestClearItemValues

* make supported types uniq

* add any supported type

* add integration e2e tests

* fix: TestIntegrationModelFilterAPI

* format integration item test

* add geometry editor type

* remove unwanted code

* rename the field geometry to geometry object

* fix: test cases

* remove any type from geometry object

* rename test files

* fix(server): geo field missing validations (#1188)

* add validation
supported type validation
remove GeoJSON feature decoding

* remove fmt

* i18n gen

* i18n gen

* refactor rfc validation logic
add geo collection support

* add missing returns

* position validation

* is valid

* support any

* feat(web): preserve table conditions on asset and request page (#1193)

* fix: preserve sort on asset

* refactor

* fix: preserve sort of request and columns

* fix: type definition

* fix: add missing repository URL argument for `configure-docker` command (#1195)

* fix: add missing argument for `configure-docker` command

Signed-off-by: KeisukeYamashita <[email protected]>

* fix: add missing `actions/checkout` before google cloud auth

Signed-off-by: KeisukeYamashita <[email protected]>

---------

Signed-off-by: KeisukeYamashita <[email protected]>

* ci: add missing checkout before deploy server workflow (#1196)

fix: add missing checkout before deploy server workflow

Signed-off-by: KeisukeYamashita <[email protected]>

* fix(web): changes are not detected for some group fields (#1199)

fix: the logic of detect changes in group field

* feat(server): schemata in integration api (#1200)

imp

* fix(web): group field values sometimes disapper after refreshing page (#1202)

fix

* feat(server): export items as geojson and csv via integration api (#1194)

* wip: items with project as geojson and csv

* update the csv format and description in the integration schema

* fix: csv and geojson bugs

* add unit tests for group

* update geojson content type

* update Japanese translations

* remove group and reference fields from export

* add check if result is empty

* feat(server): export items as geojson and csv via public api (#1198)

* add geojson types to public api

* support multiple values in csv

* support multiple geo fields in geojson

* add e2e test

* improve error handling

* make the files downloadable

* feat(web): support geometry object and geometry editor fields (#1197)

* wip: add point, polyline, polygon on cesium

* add: geometry fields

* fix: geometry field modal

* wip: add zoom feature

* change pin icons

* feat: edit pin pos & fullscreen

* feat: deleting points

* wip

* install monaco-editor

* add icons

* yarn gql

* fix type definition

* wip: imp UI

* fix schema

* fix icon

* wip: move geometry field component

* add: table render

* impl field

* add: default value

* add: request

* fix schema modal & add disable flag

* feat: show input value on map

* wip: fix validation

* wip: integrate @reearth/core

* render value on map

* refactor

* add: warning

* add: search location

* add: terrain setting

* add: support group

* i18n

* fix: validate

* add: e2e test

* refactor

* upgrage @reearth/core to render GeometryCollection

* refactor

* support tile setting

* feat(web): add version suffix to cesiumBaseUrl (#1203)

feat: add version suffix to cesiumBaseUrl

* fix(web): cesium base url version (#1204)

fix: cesium base url

* feat(server): implement asset search in integrarion api (#1208)

* add keyword param to integration schema

* rename q to keyword

* rename q to keyword in memory

* fix test cases

* add e2e

* refactor

* feat(server): firebase authentication (#1206)

* add firebase to config

* feat(web): firebase authentication (#1207)

* add firebase auth

* refactor

* refactor 2

* update .env.example

* rename firebase provider component

* fix(web): improve geometry field (#1205)

* make field resizable

* fix: sketch color

* fix: error showing

* fix: search bar color bug

* fix: delete button on editor

* fix: validating

* fix: camera pos when updating editor

* fix: test

* set --max_old_space_size

* increase space size

* support terrain setting

* fix: group width

* fix: placeholder position

* fix: allocated memory

* fix(web): upgrade @reearth/core (#1210)

* upgrade core

* fix: ci error

* apply request

* remove string-width

* Revert "remove string-width"

This reverts commit 2a30aa1.

* feat(server): add workspace id to project in integration api (#1209)

imp

* feat(server): schemata filter in integration api (#1212)

imp

* fix(server): internal error when the project has an active webhook (#1213)

imp

* fix(web): styling of model menu (#1211)

* fix: title icon

* fix: collapsed styling

* feat: show tooltip

* fix: keep collapsed

* chore(web): upgrade eslint and eslint-config-reearth (#1215)

* feat: upgrade eslint and reearth-eslint-config

* fix: eslint error

* add project name

* fix(web): asset upload button is activated before all uploading process is completed (#1217)

fix: asset uploading bug

* chore(web): upgrade yarn dependencies (#1216)

* upgrade patch versions

* upgrade minor versions

* upgrade major versions

* generate gql and i18n

* fix(web): publish status is not updated when creating a new request (#1221)

fix: adding GetItem to refetchQueries

* fix(web): disable closing modal when uploading asset (#1222)

fix: disable closing when uploading

* fix(web): using OpenLayers for geometry field (#1220)

* update: using OpenLayers

* fix: remove unnecessary props

* remove @reearth/core

* set max_old_space_size

* increase max_old_space_siz

* remove wrong line breaks

* fix: map initilizing bug

* Update web/src/components/molecules/Common/Form/GeometryItem/index.tsx

Co-authored-by: Nour Balaha <[email protected]>

---------

Co-authored-by: Nour Balaha <[email protected]>

* chore(web): optimize vite config

* fix(server): asset children are not returned in integration api (#1226)

* fix

* fix

---------

Co-authored-by: mimoham24 <[email protected]>

* fix(web): camera and validation message on geometry field (#1227)

* fix: set default value on geometry editor

* fix: zoom after searching

* fix: error message on geometry object

* fix(server): geojson validation bug (#1228)

fix: multiple geo bug

* fix(server): multiple default value bug (#1229)

* fix: multiple default value bug

* doc: fix api doc (#1232)

fix api doc

* feat(web): add item link to the request (#1230)

* add: item link on request

* add e2e test

* feat(server): geoJson/json import via integration api (#1231)

* imp

* imp

* wip: add e2e tests to geojson import

* refactor e2e

* fix geoJson handling

* fix

* fix lint

* add i18n

---------

Co-authored-by: nourbalaha <[email protected]>
Co-authored-by: mimoham24 <[email protected]>

* fix(web): title of my integration and request page (#1234)

* fix: background color

* fix: page title

* fix(server): set file size for zip asset's children files (#1237)

fix

* chore(web): show tooltip when pressing copy button (#1233)

chore: show tooltip when pressing copy button

* fix(web): screen flickers on member page (#1239)

fix: screen flickers

* fix(web): disable the buttons to change the state of an item based on the item's status (#1240)

fix: disable publish buttons

* fix(server): multiple bugs while importing json/geoJson (#1241)

fix

Co-authored-by: mimoham24 <[email protected]>

* feat(server): enhance request filter to search by id (#1243)

imp

* feat(server): add requests resolver in item query (#1235)

imp

* feat(server): search request by item id (#1246)

fix

* feat(web): leave workspace (#1244)

* impl

* add modal to confirm leaving

* fix(web): reference field updating bug (#1236)

* fix: ref field bug

* feat: toggle confirm button

* improve test

* chore: update go dependencies (#1142)

* chore: update go dependencies

* update go.work

* fix

* fix

* fix

* fix

* ignore linter

* ignore linter

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: yk-eukarya <[email protected]>

* fix(server): accept all geo types when creating geometryObject field from integration api by default (#1247)

fix

* ci: update github actions dependencies (#1115)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: yk-eukarya <[email protected]>

* feat(server): find by assets memory infrastructure (#649)

* find by assets memory implementation and test case

* fix

---------

Co-authored-by: rot1024 <[email protected]>
Co-authored-by: yk-eukarya <[email protected]>

* add api key

* fix

* fix

* fix

* fix

* fix

* implement token as standalone pkg

* apply code suggestion

* fix NewPublication

* update TestToken_Value

* add error handling to generate

* remove token pkg and use lo.RandomString instead

* fix ci

* wip: e2e tests

* lint + review changes

* e2e

* lint

* gql project test

* e2e

* fix: auth client

* e2e tests

* e2e

* refactor auth client

* requested changes 1

* e2e

* refactor

* requested changes 2

* fix

* fix

* fix: possible nil check

* add a comment

* revert

---------

Co-authored-by: Nour Balaha <[email protected]>
Co-authored-by: yk-eukarya <[email protected]>
Co-authored-by: rot1024 <[email protected]>
Co-authored-by: Nao Yonashiro <[email protected]>
Co-authored-by: Kazuma Tsuchiya <[email protected]>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Katsuya Miyachi <[email protected]>
Co-authored-by: KeisukeYamashita <[email protected]>
Co-authored-by: keiya01 <[email protected]>
  • Loading branch information
10 people authored Nov 6, 2024
1 parent 1ac9e8a commit d72963d
Show file tree
Hide file tree
Showing 24 changed files with 782 additions and 125 deletions.
64 changes: 58 additions & 6 deletions server/e2e/gql_porject_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,14 +88,66 @@ func updateProject(e *httpexpect.Expect, pID, name, desc, alias, publicationScop
return res.Path("$.data.updateProject.project.id").Raw().(string), res
}

func TestCreateProject(t *testing.T) {
e := StartServer(t, &app.Config{}, true, baseSeederUser)
func regeneratePublicApiToken(e *httpexpect.Expect, pId string) *httpexpect.Value {
requestBody := GraphQLRequest{
Query: `mutation RegeneratePublicApiToken($projectId: ID!) {
regeneratePublicApiToken(input: { projectId: $projectId }) {
project {
id
publication {
scope
assetPublic
token
}
}
}
}`,
Variables: map[string]any{
"projectId": pId,
},
}

res := e.POST("/api/graphql").
WithHeader("Origin", "https://example.com").
WithHeader("X-Reearth-Debug-User", uId1.String()).
WithHeader("Content-Type", "application/json").
WithJSON(requestBody).
Expect().
Status(http.StatusOK).
JSON()

return res
}

_, res := createProject(e, wId.String(), "test", "test", "test-1")
func TestProject(t *testing.T) {
e := StartServer(t, &app.Config{}, true, baseSeederUser)

res.Object().
// create project
pId, p := createProject(e, wId.String(), "test1", "test1", "test1")
pp := p.Object().
Value("data").Object().
Value("createProject").Object().
Value("project").Object().
HasValue("name", "test")
Value("project").Object()
pp.HasValue("name", "test1")
pp.HasValue("description", "test1")
pp.HasValue("alias", "test1")

// update project
_, res := updateProject(e, pId, "test2", "test2", "test2", "LIMITED", true)
pp = res.Object().
Value("data").Object().
Value("updateProject").Object().
Value("project").Object()
pp.HasValue("name", "test2")
pp.HasValue("description", "test2")
pp.HasValue("alias", "test2")
pp.Value("publication").Object().HasValue("scope", "LIMITED")
pp.Value("publication").Object().HasValue("assetPublic", true)

// regenerate public api token
res1 := regeneratePublicApiToken(e, pId)
token := res1.Path("$.data.regeneratePublicApiToken.project.publication.token")
res2 := regeneratePublicApiToken(e, pId)
newToken := res2.Path("$.data.regeneratePublicApiToken.project.publication.token")
token.NotEqual(newToken)
}
8 changes: 4 additions & 4 deletions server/e2e/integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,8 @@ func createIntegration(e *httpexpect.Expect, name, desc, logoUrl, iType string)
func regenerateToken(e *httpexpect.Expect, iId string) (string, *httpexpect.Value) {
requestBody := GraphQLRequest{
Query: `
mutation regenerateToken($integrationId: ID!) {
regenerateToken(input: { integrationId: $integrationId }) {
mutation regenerateIntegrationToken($integrationId: ID!) {
regenerateIntegrationToken(input: { integrationId: $integrationId }) {
integration {
id
name
Expand Down Expand Up @@ -85,7 +85,7 @@ func regenerateToken(e *httpexpect.Expect, iId string) (string, *httpexpect.Valu
Status(http.StatusOK).
JSON()

return res.Path("$.data.regenerateToken.integration.config.token").Raw().(string), res
return res.Path("$.data.regenerateIntegrationToken.integration.config.token").Raw().(string), res
}

func TestRegenerateToken(t *testing.T) {
Expand All @@ -102,7 +102,7 @@ func TestRegenerateToken(t *testing.T) {
_, updatedIntegration := regenerateToken(e, iId)
newToken := updatedIntegration.Object().
Value("data").Object().
Value("regenerateToken").Object().
Value("regenerateIntegrationToken").Object().
Value("integration").Object().
Value("config").Object().
Value("token")
Expand Down
149 changes: 126 additions & 23 deletions server/e2e/publicapi_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,27 +22,31 @@ import (
)

var (
publicAPIProjectID = id.NewProjectID()
publicAPIModelID = id.NewModelID()
publicAPIItem1ID = id.NewItemID()
publicAPIItem2ID = id.NewItemID()
publicAPIItem3ID = id.NewItemID()
publicAPIItem4ID = id.NewItemID()
publicAPIItem6ID = id.NewItemID()
publicAPIItem7ID = id.NewItemID()
publicAPIAsset1ID = id.NewAssetID()
publicAPIAsset2ID = id.NewAssetID()
publicAPIAssetUUID = uuid.NewString()
publicAPIProjectAlias = "test-project"
publicAPIModelKey = "test-model"
publicAPIModelKey2 = "test-model-2"
publicAPIModelKey3 = "test-model-3"
publicAPIField1Key = "test-field-1"
publicAPIField2Key = "asset"
publicAPIField3Key = "test-field-2"
publicAPIField4Key = "asset2"
publicAPIField5Key = "geometry-object"
publicAPIField6Key = "geometry-editor"
publicAPIProjectID = id.NewProjectID()
publicAPIProjectID2 = id.NewProjectID()
publicAPIModelID = id.NewModelID()
publicAPIModelID2 = id.NewModelID()
publicAPIItem1ID = id.NewItemID()
publicAPIItem2ID = id.NewItemID()
publicAPIItem3ID = id.NewItemID()
publicAPIItem4ID = id.NewItemID()
publicAPIItem6ID = id.NewItemID()
publicAPIItem7ID = id.NewItemID()
publicAPIAsset1ID = id.NewAssetID()
publicAPIAsset2ID = id.NewAssetID()
publicAPIAssetUUID = uuid.NewString()
publicAPIProjectAlias = "test-project"
publicAPIProjectAlias2 = "test-project-2"
publicAPIModelKey = "test-model"
publicAPIModelKey2 = "test-model-2"
publicAPIModelKey3 = "test-model-3"
publicAPIModelKey4 = "test-model-4"
publicAPIField1Key = "test-field-1"
publicAPIField2Key = "asset"
publicAPIField3Key = "test-field-2"
publicAPIField4Key = "asset2"
publicAPIField5Key = "geometry-object"
publicAPIField6Key = "geometry-editor"
)

func TestPublicAPI(t *testing.T) {
Expand Down Expand Up @@ -213,7 +217,7 @@ func TestPublicAPI(t *testing.T) {
"offset": 0,
"page": 1,
"results": []map[string]any{
map[string]any{
{
"id": publicAPIAsset1ID.String(),
"type": "asset",
"url": fmt.Sprintf("https://example.com/assets/%s/%s/aaa.zip", publicAPIAssetUUID[:2], publicAPIAssetUUID[2:]),
Expand Down Expand Up @@ -370,13 +374,109 @@ func TestPublicAPI(t *testing.T) {
IsEqual(map[string]any{
"error": "not found",
})

// make the project limited
prj.Publication().SetScope(project.PublicationScopeLimited)
prj.Publication().SetAssetPublic(true)
prj.Publication().GenerateToken()
token := prj.Publication().Token()
lo.Must0(repos.Project.Save(ctx, prj))

// invalid token
e.GET("/api/p/{project}/{model}", publicAPIProjectAlias, publicAPIModelKey).
WithHeader("Origin", "https://example.com").
WithHeader("Authorization", "secret_abc").
WithHeader("Content-Type", "application/json").
Expect().
Status(http.StatusUnauthorized).
JSON().
IsEqual(map[string]interface{}{
"error": "invalid token",
})

// valid token
e.GET("/api/p/{project}/{model}", publicAPIProjectAlias, publicAPIModelKey).
WithHeader("Origin", "https://example.com").
WithHeader("Authorization", token).
WithHeader("Content-Type", "application/json").
Expect().
Status(http.StatusOK).
JSON().
IsEqual(map[string]any{
"results": []map[string]any{
{
"id": publicAPIItem1ID.String(),
publicAPIField1Key: "aaa",
publicAPIField2Key: map[string]any{
"type": "asset",
"id": publicAPIAsset1ID.String(),
"url": fmt.Sprintf("https://example.com/assets/%s/%s/aaa.zip", publicAPIAssetUUID[:2], publicAPIAssetUUID[2:]),
},
},
{
"id": publicAPIItem2ID.String(),
publicAPIField1Key: "bbb",
},
{
"id": publicAPIItem3ID.String(),
publicAPIField1Key: "ccc",
publicAPIField3Key: []string{"aaa", "bbb", "ccc"},
publicAPIField4Key: []any{
map[string]any{
"type": "asset",
"id": publicAPIAsset1ID.String(),
"url": fmt.Sprintf("https://example.com/assets/%s/%s/aaa.zip", publicAPIAssetUUID[:2], publicAPIAssetUUID[2:]),
},
},
},
{
"id": publicAPIItem6ID.String(),
publicAPIField1Key: "ccc",
publicAPIField3Key: []string{"aaa", "bbb", "ccc"},
publicAPIField4Key: []any{
map[string]any{
"type": "asset",
"id": publicAPIAsset1ID.String(),
"url": fmt.Sprintf("https://example.com/assets/%s/%s/aaa.zip", publicAPIAssetUUID[:2], publicAPIAssetUUID[2:]),
},
},
publicAPIField5Key: "{\n\"type\": \"Point\",\n\t\"coordinates\": [102.0, 0.5]\n}",
publicAPIField6Key: "{\"coordinates\":[[139.65439725962517,36.34793305387103],[139.61688622815393,35.910803456352724]],\"type\":\"LineString\"}",
},
{
"id": publicAPIItem7ID.String(),
publicAPIField1Key: "ccc",
},
},
"totalCount": 5,
"hasMore": false,
"limit": 50,
"offset": 0,
"page": 1,
})

// different project in the same workspace with the same token
e.GET("/api/p/{project}/{model}", publicAPIProjectAlias2, publicAPIModelKey2).
WithHeader("Origin", "https://example.com").
WithHeader("Authorization", token).
WithHeader("Content-Type", "application/json").
Expect().
Status(http.StatusBadRequest).
JSON().
IsEqual(map[string]any{
"error": "invalid project",
})
}

func publicAPISeeder(ctx context.Context, r *repo.Container) error {
uid := accountdomain.NewUserID()
p1 := project.New().ID(publicAPIProjectID).Workspace(accountdomain.NewWorkspaceID()).Alias(publicAPIProjectAlias).Publication(
wid := accountdomain.NewWorkspaceID()
p1 := project.New().ID(publicAPIProjectID).Workspace(wid).Alias(publicAPIProjectAlias).Publication(
project.NewPublication(project.PublicationScopePublic, true),
).MustBuild()
p2 := project.New().ID(publicAPIProjectID2).Workspace(wid).Alias(publicAPIProjectAlias2).Publication(
project.NewPublicationWithToken(project.PublicationScopeLimited, true, "secret_abcdefghijklmnopqrstuvwxyz"),
).MustBuild()

a := asset.New().ID(publicAPIAsset1ID).Project(p1.ID()).CreatedByUser(uid).Size(1).Thread(id.NewThreadID()).
FileName("aaa.zip").UUID(publicAPIAssetUUID).MustBuild()
Expand All @@ -403,6 +503,7 @@ func publicAPISeeder(ctx context.Context, r *repo.Container) error {
// m2 is not a public model
m2 := model.New().ID(publicAPIModelID).Project(p1.ID()).Schema(s.ID()).Name(publicAPIModelKey2).Key(id.NewKey(publicAPIModelKey2)).Public(false).MustBuild()
m3 := model.New().ID(publicAPIModelID).Project(p1.ID()).Schema(s2.ID()).Name(publicAPIModelKey3).Key(id.NewKey(publicAPIModelKey3)).Public(true).MustBuild()
m4 := model.New().ID(publicAPIModelID2).Project(p2.ID()).Schema(id.NewSchemaID()).Key(id.NewKey(publicAPIModelKey4)).Public(true).MustBuild()

i1 := item.New().ID(publicAPIItem1ID).Model(m.ID()).Schema(s.ID()).Project(p1.ID()).Thread(id.NewThreadID()).User(uid).Fields([]*item.Field{
item.NewField(s.Fields()[0].ID(), value.TypeText.Value("aaa").AsMultiple(), nil),
Expand Down Expand Up @@ -444,10 +545,12 @@ func publicAPISeeder(ctx context.Context, r *repo.Container) error {
}).MustBuild()

lo.Must0(r.Project.Save(ctx, p1))
lo.Must0(r.Project.Save(ctx, p2))
lo.Must0(r.Asset.Save(ctx, a))
lo.Must0(r.AssetFile.Save(ctx, a.ID(), af))
lo.Must0(r.Schema.Save(ctx, s))
lo.Must0(r.Model.Save(ctx, m))
lo.Must0(r.Model.Save(ctx, m4))
lo.Must0(r.Item.Save(ctx, i1))
lo.Must0(r.Item.Save(ctx, i2))
lo.Must0(r.Item.Save(ctx, i3))
Expand Down
Loading

0 comments on commit d72963d

Please sign in to comment.