Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rewrite async code and Remove bluebird #782

Merged
merged 11 commits into from
Nov 6, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion bemuse/node-environment.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
require('dotenv').load()
require('ts-node/register/transpile-only')
global.Promise = require('bluebird')
4 changes: 2 additions & 2 deletions bemuse/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@
"author": "Thai Pangsakulyanont <dtinth@spacet.me> (http://dt.in.th/)",
"license": "AGPL-1.0",
"devDependencies": {
"@types/bluebird": "^3.5.24",
"@types/chai": "^4.2.0",
"@types/eslint": "^4.16.4",
"@types/invariant": "^2.2.30",
Expand Down Expand Up @@ -116,14 +115,14 @@
"bemuse-indexer": "^51.0.1",
"bemuse-notechart": "^50.1.1",
"bemuse-types": "^50.0.2",
"bluebird": "^3.5.24",
"bms": "^50.1.1",
"bmson": "^50.1.1",
"bson-objectid": "^1.2.4",
"bytes": "^3.0.0",
"classnames": "^2.2.6",
"data-structure": "^1.2.0",
"debug": "^3.2.5",
"delay": "^5.0.0",
"emotion": "^9.2.12",
"fastclick": "^1.0.6",
"idb-keyval": "^6.0.2",
Expand All @@ -142,6 +141,7 @@
"mobx": "^5.13.1",
"mobx-react-lite": "^1.4.1",
"once": "^1.3.1",
"p-map": "^4.0.0",
"p-memoize": "4",
"pixi.js": "^4.8.9",
"power-assert": "^1.6.1",
Expand Down
49 changes: 25 additions & 24 deletions bemuse/src/app/index.js
Original file line number Diff line number Diff line change
@@ -1,37 +1,38 @@
import PropTypes from 'prop-types'
import React from 'react'
import SCENE_MANAGER from 'bemuse/scene-manager'
import now from 'bemuse/utils/now'
import serviceWorkerRuntime from 'serviceworker-webpack-plugin/lib/runtime'
import { OFFICIAL_SERVER_URL } from 'bemuse/music-collection'
import * as Analytics from './analytics'
import * as BemuseTestMode from '../devtools/BemuseTestMode'
import * as OptionsIO from './io/OptionsIO'
import * as ReduxState from './redux/ReduxState'

import { createIO, createRun } from 'impure'
import { monetize } from 'monetizer'
import {
getDefaultCustomFolderContext,
getSongsFromCustomFolders,
} from 'bemuse/custom-folder'
import {
getInitialGrepString,
getMusicServer,
getTimeSynchroServer,
} from './query-flags'
import {
shouldShowAbout,
shouldShowModeSelect,
} from 'bemuse/devtools/query-flags'
import { withContext } from 'recompose'

import * as Analytics from './analytics'
import * as OptionsIO from './io/OptionsIO'
import * as ReduxState from './redux/ReduxState'
import * as BemuseTestMode from '../devtools/BemuseTestMode'
import AboutScene from './ui/AboutScene'
import BrowserSupportWarningScene from './ui/BrowserSupportWarningScene'
import ModeSelectScene from './ui/ModeSelectScene'
import { OFFICIAL_SERVER_URL } from 'bemuse/music-collection'
import PropTypes from 'prop-types'
import React from 'react'
import SCENE_MANAGER from 'bemuse/scene-manager'
import TitleScene from './ui/TitleScene'
import ioContext from './io/ioContext'
import store from './redux/instance'
import {
getInitialGrepString,
getMusicServer,
getTimeSynchroServer,
} from './query-flags'
import { isBrowserSupported } from './browser-support'
import {
getSongsFromCustomFolders,
getDefaultCustomFolderContext,
} from 'bemuse/custom-folder'
import { monetize } from 'monetizer'
import now from 'bemuse/utils/now'
import serviceWorkerRuntime from 'serviceworker-webpack-plugin/lib/runtime'
import store from './redux/instance'
import { withContext } from 'recompose'

/* eslint import/no-webpack-loader-syntax: off */
export const runIO = createRun({
Expand Down Expand Up @@ -79,7 +80,7 @@ export function main() {
// setup service worker
const promise = setupServiceWorker()
if (promise && promise.then) {
Promise.resolve(promise).finally(displayFirstScene).done()
Promise.resolve(promise).finally(displayFirstScene)
} else {
displayFirstScene()
}
Expand All @@ -96,7 +97,7 @@ export function main() {
}

function displayFirstScene() {
SCENE_MANAGER.display(getFirstScene()).done()
SCENE_MANAGER.display(getFirstScene())
}

function getFirstScene() {
Expand Down
38 changes: 18 additions & 20 deletions bemuse/src/app/io/MusicSelectionIO.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { createIO } from 'impure'

import * as GameLauncher from '../game-launcher'
import * as Options from '../entities/Options'
import * as OptionsIO from './OptionsIO'
import * as ReduxState from '../redux/ReduxState'

import { createIO } from 'impure'
import { getChartLevel } from '../entities/MusicSelection'

export function selectSong(song) {
Expand All @@ -28,23 +28,21 @@ export function selectChart(song, chart) {

export function launchGame(server, song, chart, { autoplayEnabled }) {
return createIO(({ store }, run) => {
Promise.resolve(
GameLauncher.launch({
server,
song,
chart,
options: store.getState().options,
saveSpeed: (speed) => {
run(OptionsIO.updateOptions(Options.changeSpeed(speed)))
},
saveLeadTime: (leadTime) => {
run(OptionsIO.updateOptions(Options.changeLeadTime(leadTime)))
},
onRagequitted: () => {
store.dispatch({ type: ReduxState.RAGEQUITTED })
},
autoplayEnabled,
})
).done()
GameLauncher.launch({
server,
song,
chart,
options: store.getState().options,
saveSpeed: (speed) => {
run(OptionsIO.updateOptions(Options.changeSpeed(speed)))
},
saveLeadTime: (leadTime) => {
run(OptionsIO.updateOptions(Options.changeLeadTime(leadTime)))
},
onRagequitted: () => {
store.dispatch({ type: ReduxState.RAGEQUITTED })
},
autoplayEnabled,
})
})
}
4 changes: 2 additions & 2 deletions bemuse/src/app/ui/AboutScene.jsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import './AboutScene.scss'

import React from 'react'
import SCENE_MANAGER from 'bemuse/scene-manager'
import Scene from 'bemuse/ui/Scene'
import SceneHeading from 'bemuse/ui/SceneHeading'
import SceneToolbar from 'bemuse/ui/SceneToolbar'
import SCENE_MANAGER from 'bemuse/scene-manager'

class AboutScene extends React.Component {
constructor(props) {
Expand Down Expand Up @@ -169,7 +169,7 @@ class AboutScene extends React.Component {
}

handleBack = () => {
SCENE_MANAGER.pop().done()
SCENE_MANAGER.pop()
}
}

Expand Down
16 changes: 8 additions & 8 deletions bemuse/src/app/ui/ModeSelectScene.jsx
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import './ModeSelectScene.scss'

import * as Analytics from '../analytics'
import * as Options from '../entities/Options'
import * as OptionsIO from '../io/OptionsIO'

import MusicSelectScene from './MusicSelectScene'
import PropTypes from 'prop-types'
import React from 'react'
import SCENE_MANAGER from 'bemuse/scene-manager'
import Scene from 'bemuse/ui/Scene'
import SceneHeading from 'bemuse/ui/SceneHeading'
import SceneToolbar from 'bemuse/ui/SceneToolbar'

import * as Analytics from '../analytics'
import * as Options from '../entities/Options'
import * as OptionsIO from '../io/OptionsIO'
import MusicSelectScene from './MusicSelectScene'
import connectIO from '../../impure-react/connectIO'

const enhance = connectIO({
Expand Down Expand Up @@ -154,18 +154,18 @@ class ModeSelectScene extends React.Component {

handleKB = () => {
this.props.onSetMode('KB', this._playDevice)
SCENE_MANAGER.display(<MusicSelectScene />).done()
SCENE_MANAGER.display(<MusicSelectScene />)
Analytics.send('ModeSelectScene', 'select mode', 'KB')
}

handleBM = () => {
this.props.onSetMode('BM')
SCENE_MANAGER.display(<MusicSelectScene />).done()
SCENE_MANAGER.display(<MusicSelectScene />)
Analytics.send('ModeSelectScene', 'select mode', 'BM')
}

handleBack = () => {
SCENE_MANAGER.pop().done()
SCENE_MANAGER.pop()
}
}

Expand Down
53 changes: 28 additions & 25 deletions bemuse/src/app/ui/MusicSelectScene.jsx
Original file line number Diff line number Diff line change
@@ -1,38 +1,41 @@
import { shouldShowOptions } from 'bemuse/devtools/query-flags'
import { connect as connectToLegacyStore } from 'bemuse/flux'
import { OFFICIAL_SERVER_URL } from 'bemuse/music-collection'
import * as MusicPreviewer from 'bemuse/music-previewer'
import online from 'bemuse/online/instance'
import AuthenticationPopup from 'bemuse/online/ui/AuthenticationPopup'
import SCENE_MANAGER from 'bemuse/scene-manager'
import ModalPopup from 'bemuse/ui/ModalPopup'
import Scene from 'bemuse/ui/Scene'
import SceneHeading from 'bemuse/ui/SceneHeading'
import c from 'classnames'
import $ from 'jquery'
import PropTypes from 'prop-types'
import React from 'react'
import ReactDOM from 'react-dom'
import { hot } from 'react-hot-loader'
import { connect } from 'react-redux'
import compose from 'recompose/compose'
import { createSelector, createStructuredSelector } from 'reselect'
import { connectIO } from '../../impure-react/connectIO'
import './MusicSelectScene.scss'

import * as Analytics from '../analytics'
import * as Options from '../entities/Options'
import * as MusicPreviewer from 'bemuse/music-previewer'
import * as MusicSearchIO from '../io/MusicSearchIO'
import * as MusicSelectionIO from '../io/MusicSelectionIO'
import { hasPendingArchiveToLoad } from '../PreloadedCustomBMS'
import * as Options from '../entities/Options'
import * as ReduxState from '../redux/ReduxState'

import { createSelector, createStructuredSelector } from 'reselect'

import $ from 'jquery'
import AuthenticationPopup from 'bemuse/online/ui/AuthenticationPopup'
import CustomBMS from './CustomBMS'
import ModalPopup from 'bemuse/ui/ModalPopup'
import MusicInfo from './MusicInfo'
import MusicList from './MusicList'
import './MusicSelectScene.scss'
import { OFFICIAL_SERVER_URL } from 'bemuse/music-collection'
import OptionsView from './Options'
import PropTypes from 'prop-types'
import RageQuitPopup from './RageQuitPopup'
import React from 'react'
import ReactDOM from 'react-dom'
import SCENE_MANAGER from 'bemuse/scene-manager'
import Scene from 'bemuse/ui/Scene'
import SceneHeading from 'bemuse/ui/SceneHeading'
import SongPreviewer from './SongPreviewer'
import Toolbar from './Toolbar'
import UnofficialPanel from './UnofficialPanel'
import c from 'classnames'
import compose from 'recompose/compose'
import { connect } from 'react-redux'
import { connectIO } from '../../impure-react/connectIO'
import { connect as connectToLegacyStore } from 'bemuse/flux'
import { hasPendingArchiveToLoad } from '../PreloadedCustomBMS'
import { hot } from 'react-hot-loader'
import online from 'bemuse/online/instance'
import { shouldShowOptions } from 'bemuse/devtools/query-flags'

const selectMusicSelectState = (() => {
const selectLegacyServerObjectForCurrentCollection = createSelector(
Expand Down Expand Up @@ -347,7 +350,7 @@ class MusicSelectScene extends React.PureComponent {

handleLogout = () => {
if (confirm('Do you really want to log out?')) {
Promise.resolve(online.logOut()).done()
online.logOut()
Analytics.send('MusicSelectScene', 'logout')
}
}
Expand All @@ -366,7 +369,7 @@ class MusicSelectScene extends React.PureComponent {
}

popScene() {
SCENE_MANAGER.pop().done()
SCENE_MANAGER.pop()
}
}

Expand Down
16 changes: 8 additions & 8 deletions bemuse/src/app/ui/ResultScene.jsx
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
import './ResultScene.scss'

import Flex from 'bemuse/ui/Flex'
import PropTypes from 'prop-types'
import React from 'react'
import Scene from 'bemuse/ui/Scene'
import SceneHeading from 'bemuse/ui/SceneHeading'
import SceneToolbar from 'bemuse/ui/SceneToolbar'

import * as Analytics from '../analytics'
import * as QueryFlags from '../query-flags'

import FirstTimeTip from './FirstTimeTip'
import Flex from 'bemuse/ui/Flex'
import { Icon } from 'bemuse/fa'
import MusicChartInfo from './MusicChartInfo'
import MusicChartSelectorItem from './MusicChartSelectorItem'
import PropTypes from 'prop-types'
import RankingContainer from './RankingContainer'
import React from 'react'
import ResultExpertInfo from './ResultExpertInfo'
import ResultGrade from './ResultGrade'
import ResultTable from './ResultTable'
import { Icon } from 'bemuse/fa'
import Scene from 'bemuse/ui/Scene'
import SceneHeading from 'bemuse/ui/SceneHeading'
import SceneToolbar from 'bemuse/ui/SceneToolbar'

export default class ResultScene extends React.Component {
static propTypes = {
Expand Down
24 changes: 12 additions & 12 deletions bemuse/src/app/ui/TitleScene.jsx
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
import './TitleScene.scss'

import * as Analytics from '../analytics'
import * as Options from '../entities/Options'
import * as OptionsIO from '../io/OptionsIO'

import $ from 'jquery'
import AboutScene from './AboutScene'
import ChangelogPanel from './ChangelogPanel'
import HomePage from 'bemuse/site/HomePage'
import ModalPopup from 'bemuse/ui/ModalPopup'
import ModeSelectScene from './ModeSelectScene'
import PropTypes from 'prop-types'
import React from 'react'
import SCENE_MANAGER from 'bemuse/scene-manager'
import Scene from 'bemuse/ui/Scene'
import version from 'bemuse/utils/version'
import { hot } from 'react-hot-loader'
import Toolbar from './Toolbar'
import { compose } from 'recompose'
import { connect } from 'react-redux'
import connectIO from 'bemuse/impure-react/connectIO'

import * as Analytics from '../analytics'
import * as Options from '../entities/Options'
import * as OptionsIO from '../io/OptionsIO'
import AboutScene from './AboutScene'
import ChangelogPanel from './ChangelogPanel'
import ModeSelectScene from './ModeSelectScene'
import Toolbar from './Toolbar'
import { hot } from 'react-hot-loader'
import version from 'bemuse/utils/version'

const HAS_PARENT = (() => {
try {
Expand Down Expand Up @@ -147,12 +147,12 @@ class TitleScene extends React.Component {
}

enterGame() {
SCENE_MANAGER.push(<ModeSelectScene />).done()
SCENE_MANAGER.push(<ModeSelectScene />)
Analytics.send('TitleScene', 'enter game')
}

showAbout() {
SCENE_MANAGER.push(<AboutScene />).done()
SCENE_MANAGER.push(<AboutScene />)
Analytics.send('TitleScene', 'show about')
}

Expand Down
Loading