A tool to help Granblue Fantasy players create and share teams and strategies.
Find a file
Justin Edmund 83bebdb0c2
Tiptap updates (#343)
* Reinstantiate editor on changes

We can't dynamically update the content, so we have to recreate the Editor whenever something changes (page loads and updates)

* Fix import

@tiptap/core is different than @tiptap/react, who knew

* Added several Tiptap components

* Added a Remix icon that isn't in remixicon-react

* Add colors for highlights

* Add ToolbarButton component

This is to standardize adding Toolbar icons so it wasn't a miserable mess in the Editor file

* Add extensions and implement ToolbarButton

* Remove unused code

* Use party prop and add keys

We always want to use the party in props until the transformer work is done and our source of truth is more reliable.

Also, we are using keys to ensure that the component reloads on new page.

* Component cleanup

* Always use props.party

* Ensure content gets reset when edits are committed

Here, we do some tactical bandaid fixes to ensure that when the user saves data to the server, the editor will show the freshest data in both editable and read-only mode.

In the Editor, its as easy as calling the setContent command in a useEffect hook when the content changes.

In the party, we are saving party in a state and passing it down to the components via props. This is because the party prop we get from pages is only from the first time the server loaded data, so any edits are not reflected. The app state should have the latest updates, but due to reasons I don't completely understand, it is showing the old state first and then the one we want, causing the Editor to get stuck on old data.

By storing the party in a state, we can populate the state from the server when the component mounts, then update it whenever the user saves data since all party data is saved in that component.

* Fix build errors
2023-07-06 02:51:01 -07:00
.storybook Deploy organization and bug fixes (#299) 2023-04-12 06:37:41 -07:00
.vscode First commit 2020-09-11 06:44:42 -07:00
components Tiptap updates (#343) 2023-07-06 02:51:01 -07:00
data June 2023 Update (#316) 2023-06-19 03:54:03 -07:00
extensions/CustomMention Rich text editor and support for tagging objects (#340) 2023-07-05 21:19:34 -07:00
hooks February 2023 Update (#158) 2023-02-04 23:46:24 -08:00
pages (Hotfix) (Temporary) nuclear option for raid population (#339) 2023-07-04 02:20:48 -07:00
public Tiptap updates (#343) 2023-07-06 02:51:01 -07:00
styles Tiptap updates (#343) 2023-07-06 02:51:01 -07:00
types Rich text editor and support for tagging objects (#340) 2023-07-05 21:19:34 -07:00
utils Rich text editor and support for tagging objects (#340) 2023-07-05 21:19:34 -07:00
.env.sample February 2023 Update (#158) 2023-02-04 23:46:24 -08:00
.eslintrc.json Deploy organization and bug fixes (#299) 2023-04-12 06:37:41 -07:00
.gitignore Rich text editor and support for tagging objects (#340) 2023-07-05 21:19:34 -07:00
.prettierignore Add prettierignore 2022-12-04 07:18:59 -08:00
.prettierrc Remove trailing semicolons 2022-12-05 17:54:46 -08:00
next-env.d.ts Create next-env.d.ts 2022-01-24 18:44:11 -08:00
next-i18next.config.js Update next-i18next.config.js 2022-03-05 02:29:50 -08:00
next.config.js Migrate to CSS modules (#335) (#336) 2023-07-04 00:43:49 -07:00
package-lock.json Tiptap updates (#343) 2023-07-06 02:51:01 -07:00
package.json Tiptap updates (#343) 2023-07-06 02:51:01 -07:00
README.md Rich text editor and support for tagging objects (#340) 2023-07-05 21:19:34 -07:00
README.png February 2023 Update (#158) 2023-02-04 23:46:24 -08:00
tsconfig.json Migrate to Next.js 2022-01-24 21:54:50 -08:00
tslint.json Create tslint.json 2022-01-28 23:19:31 -08:00

Header image for hensei-web

hensei-web

hensei-web is the frontend for granblue.team, an app for saving and sharing teams for Granblue Fantasy.

Getting Started

First, you have to set up your environment file. You should start with .env.sample, but here are some gotchas:

App URLs

Don't add a trailing slash to these URLs! The API will run on port 3000 by default, but make sure to change these to match your instance of the API.

NEXT_PUBLIC_SIERO_API_URL='http://127.0.0.1:3000/api/v1'
NEXT_PUBLIC_SIERO_OAUTH_URL='http://127.0.0.1:3000/oauth'

Asset URLs

Next.js serves all assets out of the /public directory. In development we utilize this for all assets, but in production, you will want to host these images on a cloud storage provider like Amazon S3. Once you have that set up and you're running in a production environment, change this to the full bucket URL.

NEXT_PUBLIC_SIERO_IMG_URL='/images'

Dependencies

Once your .env is all set up, install all dependencies:

npm install
# or
yarn install

Then, run the development server with:

npm run dev
# or
yarn dev

Assets

The hensei-api repository has tasks that will help you get assets, although some were crafted or renamed by hand. The front-end expects this folder structure inside of the images folder:

root
├─ accessory-grid/
├─ accessory-square/
├─ awakening/
├─ ax/
├─ character-main/
├─ character-grid/
├─ character-square/
├─ guidebooks/
├─ jobs/
├─ job-icons/
├─ job-portraits/
├─ job-skills/
├─ labels/
├─ mastery/
├─ placeholders/
├─ raids/
├─ summon-main/
├─ summon-grid/
├─ summon-square/
├─ updates/
├─ weapon-main/
├─ weapon-grid/
├─ weapon-keys/
├─ weapon-square/