mirror of
https://github.com/utopia-os/utopia-ui.git
synced 2025-12-13 07:46:10 +00:00
Merge pull request #76 from utopia-os/types-emoji-picker
fix(source): types for emoji picker and less deactivated linting rules in AttestationForm
This commit is contained in:
commit
4b444b65c2
@ -1,11 +1,3 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-misused-promises */
|
|
||||||
/* eslint-disable @typescript-eslint/prefer-optional-chain */
|
|
||||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
||||||
/* eslint-disable @typescript-eslint/require-await */
|
|
||||||
/* eslint-disable @typescript-eslint/no-floating-promises */
|
|
||||||
/* eslint-disable @typescript-eslint/restrict-template-expressions */
|
|
||||||
/* eslint-disable @typescript-eslint/restrict-plus-operands */
|
|
||||||
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
|
|
||||||
import { useRef, useState, useEffect } from 'react'
|
import { useRef, useState, useEffect } from 'react'
|
||||||
import { useNavigate } from 'react-router-dom'
|
import { useNavigate } from 'react-router-dom'
|
||||||
import { toast } from 'react-toastify'
|
import { toast } from 'react-toastify'
|
||||||
@ -19,7 +11,7 @@ import { MapOverlayPage } from './MapOverlayPage'
|
|||||||
import type { Item } from '#types/Item'
|
import type { Item } from '#types/Item'
|
||||||
import type { ItemsApi } from '#types/ItemsApi'
|
import type { ItemsApi } from '#types/ItemsApi'
|
||||||
|
|
||||||
export const AttestationForm = ({ api }: { api?: ItemsApi<any> }) => {
|
export const AttestationForm = ({ api }: { api?: ItemsApi<unknown> }) => {
|
||||||
const items = useItems()
|
const items = useItems()
|
||||||
const appState = useAppState()
|
const appState = useAppState()
|
||||||
const [users, setUsers] = useState<Item[]>()
|
const [users, setUsers] = useState<Item[]>()
|
||||||
@ -46,10 +38,12 @@ export const AttestationForm = ({ api }: { api?: ItemsApi<any> }) => {
|
|||||||
setInputValue(event.target.value)
|
setInputValue(event.target.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
const sendAttestation = async () => {
|
const sendAttestation = () => {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
const to: any[] = []
|
const to: any[] = []
|
||||||
users?.map((u) => to.push({ directus_users_id: u.user_created?.id }))
|
users?.map((u) => to.push({ directus_users_id: u.user_created?.id }))
|
||||||
|
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
||||||
api?.createItem &&
|
api?.createItem &&
|
||||||
toast
|
toast
|
||||||
.promise(
|
.promise(
|
||||||
@ -65,6 +59,7 @@ export const AttestationForm = ({ api }: { api?: ItemsApi<any> }) => {
|
|||||||
success: 'Attestation created',
|
success: 'Attestation created',
|
||||||
error: {
|
error: {
|
||||||
render({ data }) {
|
render({ data }) {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/restrict-template-expressions
|
||||||
return `${data}`
|
return `${data}`
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -73,8 +68,10 @@ export const AttestationForm = ({ api }: { api?: ItemsApi<any> }) => {
|
|||||||
.then(() =>
|
.then(() =>
|
||||||
navigate(
|
navigate(
|
||||||
'/item/' +
|
'/item/' +
|
||||||
|
// eslint-disable-next-line @typescript-eslint/restrict-plus-operands
|
||||||
items.find(
|
items.find(
|
||||||
(i) =>
|
(i) =>
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
||||||
i.user_created?.id === to[0].directus_users_id &&
|
i.user_created?.id === to[0].directus_users_id &&
|
||||||
i.layer?.itemType.name === 'player',
|
i.layer?.itemType.name === 'player',
|
||||||
)?.id +
|
)?.id +
|
||||||
@ -92,29 +89,28 @@ export const AttestationForm = ({ api }: { api?: ItemsApi<any> }) => {
|
|||||||
<div className='tw-text-center tw-text-xl tw-font-bold'>Gratitude</div>
|
<div className='tw-text-center tw-text-xl tw-font-bold'>Gratitude</div>
|
||||||
<div className='tw-text-center tw-text-base tw-text-gray-400'>to</div>
|
<div className='tw-text-center tw-text-base tw-text-gray-400'>to</div>
|
||||||
<div className='tw-flex tw-flex-row tw-justify-center tw-items-center tw-flex-wrap'>
|
<div className='tw-flex tw-flex-row tw-justify-center tw-items-center tw-flex-wrap'>
|
||||||
{users &&
|
{users?.map(
|
||||||
users.map(
|
(u, k) => (
|
||||||
(u, k) => (
|
<div key={k} className='tw-flex tw-items-center tw-space-x-3 tw-mx-2 tw-my-1'>
|
||||||
<div key={k} className='tw-flex tw-items-center tw-space-x-3 tw-mx-2 tw-my-1'>
|
{u.image ? (
|
||||||
{u.image ? (
|
<div className='tw-avatar'>
|
||||||
<div className='tw-avatar'>
|
<div className='tw-mask tw-mask-circle tw-w-8 tw-h-8'>
|
||||||
<div className='tw-mask tw-mask-circle tw-w-8 tw-h-8'>
|
<img
|
||||||
<img
|
src={appState.assetsApi.url + u.image + '?width=40&heigth=40'}
|
||||||
src={appState.assetsApi.url + u.image + '?width=40&heigth=40'}
|
alt='Avatar'
|
||||||
alt='Avatar'
|
/>
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
) : (
|
|
||||||
<div className='tw-mask tw-mask-circle tw-text-xl md:tw-text-2xl tw-bg-slate-200 tw-rounded-full tw-w-8 tw-h-8'></div>
|
|
||||||
)}
|
|
||||||
<div>
|
|
||||||
<div className='tw-font-bold'>{u.name}</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
) : (
|
||||||
|
<div className='tw-mask tw-mask-circle tw-text-xl md:tw-text-2xl tw-bg-slate-200 tw-rounded-full tw-w-8 tw-h-8'></div>
|
||||||
|
)}
|
||||||
|
<div>
|
||||||
|
<div className='tw-font-bold'>{u.name}</div>
|
||||||
</div>
|
</div>
|
||||||
),
|
</div>
|
||||||
', ',
|
),
|
||||||
)}
|
', ',
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className='tw-w-full'>
|
<div className='tw-w-full'>
|
||||||
|
|||||||
@ -1,21 +1,23 @@
|
|||||||
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
|
||||||
/* eslint-disable @typescript-eslint/restrict-template-expressions */
|
/* eslint-disable @typescript-eslint/restrict-template-expressions */
|
||||||
import { useState } from 'react'
|
import { useState } from 'react'
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
selectedEmoji: string
|
||||||
|
selectedColor: string
|
||||||
|
selectedShape: string
|
||||||
|
setSelectedEmoji: (emoji: string) => void
|
||||||
|
setSelectedColor: (color: string) => void
|
||||||
|
setSelectedShape: (shape: string) => void
|
||||||
|
}
|
||||||
|
|
||||||
export const EmojiPicker = ({
|
export const EmojiPicker = ({
|
||||||
// eslint-disable-next-line react/prop-types
|
|
||||||
selectedEmoji,
|
selectedEmoji,
|
||||||
// eslint-disable-next-line react/prop-types
|
|
||||||
selectedColor,
|
selectedColor,
|
||||||
// eslint-disable-next-line react/prop-types
|
|
||||||
selectedShape,
|
selectedShape,
|
||||||
// eslint-disable-next-line react/prop-types
|
|
||||||
setSelectedEmoji,
|
setSelectedEmoji,
|
||||||
// eslint-disable-next-line react/prop-types
|
|
||||||
setSelectedColor,
|
setSelectedColor,
|
||||||
// eslint-disable-next-line react/prop-types
|
|
||||||
setSelectedShape,
|
setSelectedShape,
|
||||||
}) => {
|
}: Props) => {
|
||||||
const [isOpen, setIsOpen] = useState(false)
|
const [isOpen, setIsOpen] = useState(false)
|
||||||
|
|
||||||
const emojis = [
|
const emojis = [
|
||||||
@ -77,17 +79,17 @@ export const EmojiPicker = ({
|
|||||||
setIsOpen(!isOpen)
|
setIsOpen(!isOpen)
|
||||||
}
|
}
|
||||||
|
|
||||||
const selectEmoji = (emoji) => {
|
const selectEmoji = (emoji: string) => {
|
||||||
setSelectedEmoji(emoji)
|
setSelectedEmoji(emoji)
|
||||||
setIsOpen(false)
|
setIsOpen(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
const selectShape = (shape) => {
|
const selectShape = (shape: string) => {
|
||||||
setSelectedShape(shape)
|
setSelectedShape(shape)
|
||||||
setIsOpen(false)
|
setIsOpen(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
const selectColor = (color) => {
|
const selectColor = (color: string) => {
|
||||||
setSelectedColor(color)
|
setSelectedColor(color)
|
||||||
setIsOpen(false)
|
setIsOpen(false)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user