Skip to content

Commit

Permalink
use makeQuery in every script
Browse files Browse the repository at this point in the history
  • Loading branch information
torztomasz committed Jun 13, 2023
1 parent a36c2da commit aaae079
Show file tree
Hide file tree
Showing 17 changed files with 65 additions and 52 deletions.
Original file line number Diff line number Diff line change
@@ -1,26 +1,21 @@
import { FormId } from '../../../view/pages/forced-actions/components/form/ids'
import { makeQuery } from '../../utils/query'

export type FormElements = ReturnType<typeof getFormElements>

export function getFormElements() {
function $<T extends HTMLElement>(id: string) {
const element = document.getElementById(id)
if (!element) {
throw new Error(`Cannot find #${id}`)
}
return element as T
}
const { $ } = makeQuery(document.body)

return {
form: $<HTMLFormElement>(FormId.Form),
amountInput: $<HTMLInputElement>(FormId.AmountInput),
priceInput: document.getElementById(FormId.PriceInput) as
form: $<HTMLFormElement>(`#${FormId.Form}`),
amountInput: $<HTMLInputElement>(`#${FormId.AmountInput}`),
priceInput: document.getElementById(`#${FormId.PriceInput}`) as
| HTMLInputElement
| undefined,
totalInput: document.getElementById(FormId.TotalInput) as
totalInput: document.getElementById(`#${FormId.TotalInput}`) as
| HTMLInputElement
| undefined,
submitButton: $<HTMLButtonElement>(FormId.SubmitButton),
amountErrorView: $(FormId.AmountErrorView),
submitButton: $<HTMLButtonElement>(`#${FormId.SubmitButton}`),
amountErrorView: $(`#${FormId.AmountErrorView}`),
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,15 @@ import {
} from '@explorer/shared'
import { EthereumAddress } from '@explorer/types'

import { ACCEPT_OFFER_FORM_ID } from '../../../../view/pages/transaction/components/AcceptOfferForm'
import { ACCEPT_OFFER_FORM_CLASS } from '../../../../view/pages/transaction/components/AcceptOfferForm'
import { Api } from '../../../peripherals/api'
import { Wallet } from '../../../peripherals/wallet'
import { makeQuery } from '../../../utils/query'

export function initAcceptOfferForm() {
const forms = document.querySelectorAll<HTMLFormElement>(
`.${ACCEPT_OFFER_FORM_ID}`
)
const { $$ } = makeQuery(document.body)

const forms = $$<HTMLFormElement>(`.${ACCEPT_OFFER_FORM_CLASS}`)
forms.forEach((form) => {
// eslint-disable-next-line @typescript-eslint/no-misused-promises
form.addEventListener('submit', async (e) => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
import { EthereumAddress } from '@explorer/types'

import { CANCEL_OFFER_FORM_ID } from '../../../../view/pages/transaction/components/CancelOfferForm'
import { CANCEL_OFFER_FORM_CLASS } from '../../../../view/pages/transaction/components/CancelOfferForm'
import { Api } from '../../../peripherals/api'
import { Wallet } from '../../../peripherals/wallet'
import { makeQuery } from '../../../utils/query'

export function initCancelOfferForm() {
const form = document.querySelector<HTMLFormElement>(
`.${CANCEL_OFFER_FORM_ID}`
)
const { $ } = makeQuery(document.body)

const form = $.maybe<HTMLFormElement>(`.${CANCEL_OFFER_FORM_CLASS}`)
// eslint-disable-next-line @typescript-eslint/no-misused-promises
form?.addEventListener('submit', async (e) => {
e.preventDefault()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@ import {
import { EthereumAddress } from '@explorer/types'

// eslint-disable-next-line no-restricted-imports
import { FINALIZE_OFFER_FORM_ID } from '../../../../view/pages/transaction/components/FinalizeOfferForm'
import { FINALIZE_OFFER_FORM_CLASS } from '../../../../view/pages/transaction/components/FinalizeOfferForm'
import { Api } from '../../../peripherals/api'
import { Wallet } from '../../../peripherals/wallet'
import { makeQuery } from '../../../utils/query'

export function initFinalizeForm() {
const forms = document.querySelectorAll<HTMLFormElement>(
`.${FINALIZE_OFFER_FORM_ID}`
)
const { $$ } = makeQuery(document.body)
const forms = $$<HTMLFormElement>(`.${FINALIZE_OFFER_FORM_CLASS}`)
forms.forEach((form) => {
// eslint-disable-next-line @typescript-eslint/no-misused-promises
form.addEventListener('submit', async (e) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,16 @@ import { CollateralAsset, UserDetails } from '@explorer/shared'

import { FormId } from '../../../view/pages/forced-actions/components/form/ids'
import { NewForcedActionFormProps } from '../../../view/pages/forced-actions/NewForcedActionFormProps'
import { makeQuery } from '../../utils/query'
import { FormElements, getFormElements } from './getFormElements'
import { getInitialState, nextFormState } from './state'
import { submit } from './submit'
import { FormAction, FormState } from './types'

export function initPerpetualForcedActionForm() {
if (!document.getElementById(FormId.Form)) {
const { $ } = makeQuery(document.body)

if (!$.maybe(`#${FormId.Form}`)) {
return
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,12 @@ import { SPOT_FORCED_WITHDRAWAL_FORM_ID } from '../../../view'
import { NewForcedActionFormProps } from '../../../view/pages/forced-actions/NewForcedActionFormProps'
import { Api } from '../../peripherals/api'
import { Wallet } from '../../peripherals/wallet'
import { makeQuery } from '../../utils/query'

export function initSpotForcedWithdrawalForm() {
const form = document.getElementById(SPOT_FORCED_WITHDRAWAL_FORM_ID)
const { $ } = makeQuery(document.body)

const form = $.maybe(`#${SPOT_FORCED_WITHDRAWAL_FORM_ID}`)
if (!form) {
return
}
Expand Down
6 changes: 4 additions & 2 deletions packages/frontend/src/scripts/imageFallback.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import { makeQuery } from './utils/query'

export function initImageFallback() {
const imagesWithFallback =
document.querySelectorAll<HTMLImageElement>('img[data-fallback]')
const { $$ } = makeQuery(document.body)
const imagesWithFallback = $$<HTMLImageElement>('img[data-fallback]')

imagesWithFallback.forEach((image) => {
image.addEventListener('error', () => {
Expand Down
5 changes: 4 additions & 1 deletion packages/frontend/src/scripts/keys/starkKeyRecovery.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,13 @@ import Cookie from 'js-cookie'

import { RECOVER_STARK_KEY_BUTTON_ID } from '../../view'
import { getUsersInfo } from '../metamask'
import { makeQuery } from '../utils/query'
import { RecoveredKeys, recoverKeysDydx, recoverKeysMyria } from './recovery'

export function initStarkKeyRecovery() {
const registerButton = document.getElementById(RECOVER_STARK_KEY_BUTTON_ID)
const { $ } = makeQuery(document.body)

const registerButton = $.maybe(`#${RECOVER_STARK_KEY_BUTTON_ID}`)
const cookieAccount = Cookie.get('account')
const account = cookieAccount ? EthereumAddress(cookieAccount) : undefined

Expand Down
5 changes: 4 additions & 1 deletion packages/frontend/src/scripts/keys/starkKeyRegistration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,12 @@ import Cookies from 'js-cookie'
import { REGISTER_STARK_KEY_BUTTON_ID } from '../../view'
import { getUsersInfo } from '../metamask'
import { Wallet } from '../peripherals/wallet'
import { makeQuery } from '../utils/query'

export function initStarkKeyRegistration() {
const registerButton = document.getElementById(REGISTER_STARK_KEY_BUTTON_ID)
const { $ } = makeQuery(document.body)

const registerButton = $.maybe(`#${REGISTER_STARK_KEY_BUTTON_ID}`)

if (!registerButton) {
return
Expand Down
6 changes: 3 additions & 3 deletions packages/frontend/src/scripts/metamask.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import Cookie from 'js-cookie'
import { z } from 'zod'

import { Registration } from './keys/keys'
import { makeQuery } from './utils/query'

type UsersInfo = z.infer<typeof UsersInfo>
const UsersInfo = z.record(
Expand All @@ -22,10 +23,9 @@ export const getUsersInfo = (): UsersInfo => {

export function initMetamask() {
const provider = window.ethereum
const { $ } = makeQuery(document.body)

const connectButton = document.querySelector<HTMLButtonElement>(
'#connect-with-metamask'
)
const connectButton = $.maybe<HTMLButtonElement>('#connect-with-metamask')
if (connectButton) {
connectButton.addEventListener('click', () => {
if (provider) {
Expand Down
8 changes: 5 additions & 3 deletions packages/frontend/src/scripts/pagination.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import { makeQuery } from './utils/query'

export function initPagination() {
const forms = document.querySelectorAll<HTMLFormElement>(
'[data-component="TableLimitSelect"]'
)
const { $$ } = makeQuery(document.body)
const forms = $$<HTMLFormElement>('[data-component="TableLimitSelect"]')

forms.forEach((form) => {
const select = form.querySelector('select')
select?.addEventListener('change', () => form.submit())
Expand Down
6 changes: 3 additions & 3 deletions packages/frontend/src/scripts/regularWithdrawal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ import { AssetHash, EthereumAddress, StarkKey } from '@explorer/types'
import { REGULAR_WITHDRAWAL_FORM_ID } from '../view/pages/user/components/RegularWithdrawalForm'
import { Api } from './peripherals/api'
import { Wallet } from './peripherals/wallet'
import { makeQuery } from './utils/query'

export function initRegularWithdrawalForm() {
const form = document.querySelector<HTMLFormElement>(
`#${REGULAR_WITHDRAWAL_FORM_ID}`
)
const { $ } = makeQuery(document.body)
const form = $.maybe<HTMLFormElement>(`#${REGULAR_WITHDRAWAL_FORM_ID}`)

form?.addEventListener('submit', (e) => {
e.preventDefault()
Expand Down
8 changes: 5 additions & 3 deletions packages/frontend/src/scripts/stateUpdateStats.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import { makeQuery } from './utils/query'

export function initStateUpdateStats() {
const components = document.querySelectorAll(
'[data-component="StateUpdateStats"]'
)
const { $$ } = makeQuery(document.body)
const components = $$('[data-component="StateUpdateStats"]')

components.forEach((component) => {
const button = component.querySelector('button')
const advanced = component.querySelector(
Expand Down
4 changes: 1 addition & 3 deletions packages/frontend/src/scripts/tooltips.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,7 @@ export function initTooltips() {
}

window.addEventListener('resize', hide)
document
.querySelectorAll('.TableView')
.forEach((x) => x.addEventListener('scroll', hide))
$$('.TableView').forEach((x) => x.addEventListener('scroll', hide))
document.body.addEventListener('scroll', hide)
document.body.addEventListener('click', (e) => {
if (e.currentTarget !== tooltip) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {
} from '@explorer/shared'
import React, { ReactNode } from 'react'

export const ACCEPT_OFFER_FORM_ID = 'accept-offer-form'
export const ACCEPT_OFFER_FORM_CLASS = 'accept-offer-form'

interface AcceptOfferFormProps extends AcceptOfferFormData {
children: ReactNode
Expand All @@ -31,7 +31,7 @@ export function AcceptOfferForm(props: AcceptOfferFormProps) {
const collateralAssetJson = serializeCollateralAsset(props.collateralAsset)
return (
<form
className={ACCEPT_OFFER_FORM_ID}
className={ACCEPT_OFFER_FORM_CLASS}
action={`/offers/${props.id}/accept`}
method="POST"
data-offer={createdJson}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { CancelOfferFormData } from '@explorer/shared'
import React, { ReactNode } from 'react'

export const CANCEL_OFFER_FORM_ID = 'cancel-offer-form'
export const CANCEL_OFFER_FORM_CLASS = 'cancel-offer-form'

interface CancelOfferFormProps extends CancelOfferFormData {
children: ReactNode
Expand All @@ -10,7 +10,7 @@ interface CancelOfferFormProps extends CancelOfferFormData {
export function CancelOfferForm(props: CancelOfferFormProps) {
return (
<form
className={CANCEL_OFFER_FORM_ID}
className={CANCEL_OFFER_FORM_CLASS}
method="POST"
action={`/offers/${props.offerId}/cancel`}
data-offer-id={props.offerId.toString()}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {
} from '@explorer/shared'
import React, { ReactNode } from 'react'

export const FINALIZE_OFFER_FORM_ID = 'finalize-offer-form'
export const FINALIZE_OFFER_FORM_CLASS = 'finalize-offer-form'

interface FinalizeOfferFormProps extends FinalizeOfferFormData {
children: ReactNode
Expand All @@ -18,7 +18,7 @@ export function FinalizeOfferForm(props: FinalizeOfferFormProps) {
const collateralAssetJson = serializeCollateralAsset(collateralAsset)
return (
<form
className={FINALIZE_OFFER_FORM_ID}
className={FINALIZE_OFFER_FORM_CLASS}
action="/forced/trades"
method="POST"
data-offer-id={offerId.toString()}
Expand Down

0 comments on commit aaae079

Please sign in to comment.