mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-11 03:24:16 +00:00
improve support for options
This commit is contained in:
parent
25ecee4c2d
commit
c35d002e9e
@ -1,10 +1,17 @@
|
|||||||
import Core from "evite/src/core"
|
import Core from "evite/src/core"
|
||||||
import React from "react"
|
import React from "react"
|
||||||
import { notification as Notf } from "antd"
|
import { notification as Notf, Space, Button } from "antd"
|
||||||
import { Icons, createIconRender } from "components/Icons"
|
import { Icons, createIconRender } from "components/Icons"
|
||||||
import { Translation } from "react-i18next"
|
import { Translation } from "react-i18next"
|
||||||
import { Haptics } from "@capacitor/haptics"
|
import { Haptics } from "@capacitor/haptics"
|
||||||
|
|
||||||
|
const NotfTypeToAudio = {
|
||||||
|
info: "notification",
|
||||||
|
success: "notification",
|
||||||
|
warning: "warn",
|
||||||
|
error: "error",
|
||||||
|
}
|
||||||
|
|
||||||
export default class NotificationCore extends Core {
|
export default class NotificationCore extends Core {
|
||||||
static refName = "notifications"
|
static refName = "notifications"
|
||||||
|
|
||||||
@ -33,9 +40,12 @@ export default class NotificationCore extends Core {
|
|||||||
this.playAudio(options)
|
this.playAudio(options)
|
||||||
}
|
}
|
||||||
|
|
||||||
notify = (notification, options = {
|
notify(
|
||||||
type: "info"
|
notification,
|
||||||
}) => {
|
options = {
|
||||||
|
type: "info"
|
||||||
|
}
|
||||||
|
) {
|
||||||
if (typeof notification === "string") {
|
if (typeof notification === "string") {
|
||||||
notification = {
|
notification = {
|
||||||
title: "New notification",
|
title: "New notification",
|
||||||
@ -44,7 +54,8 @@ export default class NotificationCore extends Core {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const notfObj = {
|
const notfObj = {
|
||||||
duration: notification.duration ?? 4,
|
duration: options.duration ?? 4,
|
||||||
|
key: options.key ?? Date.now(),
|
||||||
}
|
}
|
||||||
|
|
||||||
if (notification.title) {
|
if (notification.title) {
|
||||||
@ -97,6 +108,34 @@ export default class NotificationCore extends Core {
|
|||||||
notfObj.icon = React.isValidElement(notification.icon) ? notification.icon : (createIconRender(notification.icon) ?? <Icons.Bell />)
|
notfObj.icon = React.isValidElement(notification.icon) ? notification.icon : (createIconRender(notification.icon) ?? <Icons.Bell />)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Array.isArray(options.actions)) {
|
||||||
|
notfObj.btn = (
|
||||||
|
<Space>
|
||||||
|
{
|
||||||
|
options.actions.map((action, index) => {
|
||||||
|
const handleClick = () => {
|
||||||
|
if (typeof action.onClick === "function") {
|
||||||
|
action.onClick()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!action.keepOpenOnClick) {
|
||||||
|
Notf.destroy(notfObj.key)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return <Button
|
||||||
|
key={index}
|
||||||
|
type={action.type ?? "primary"}
|
||||||
|
onClick={handleClick}
|
||||||
|
>
|
||||||
|
{action.label}
|
||||||
|
</Button>
|
||||||
|
})
|
||||||
|
}
|
||||||
|
</Space>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
if (typeof Notf[options.type] !== "function") {
|
if (typeof Notf[options.type] !== "function") {
|
||||||
options.type = "info"
|
options.type = "info"
|
||||||
}
|
}
|
||||||
@ -118,7 +157,9 @@ export default class NotificationCore extends Core {
|
|||||||
|
|
||||||
if (soundEnabled) {
|
if (soundEnabled) {
|
||||||
if (typeof window.app.cores.sound?.play === "function") {
|
if (typeof window.app.cores.sound?.play === "function") {
|
||||||
window.app.cores.sound.play("notification", {
|
const sound = options.sound ?? NotfTypeToAudio[options.type] ?? "notification"
|
||||||
|
|
||||||
|
window.app.cores.sound.play(sound, {
|
||||||
volume: soundVolume,
|
volume: soundVolume,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user