diff --git a/src/components/DashBoard/Discord/Plugins/Leveling.js b/src/components/DashBoard/Discord/Plugins/Leveling.js
index 6bdc0a5..f887bcb 100644
--- a/src/components/DashBoard/Discord/Plugins/Leveling.js
+++ b/src/components/DashBoard/Discord/Plugins/Leveling.js
@@ -4,38 +4,25 @@ import { DiscordContext } from "../../../../contexts/DiscordContext";
import { Link } from "react-router-dom";
import StyledSelect from "../../../../styled-components/StyledSelect";
import { Typography } from "@material-ui/core";
-import PrettoSlider from "../../../../styled-components/PrettoSlider";
-import FancySwitch from "../../../../styled-components/FancySwitch";
-import {
- parseSelectValue,
- TransformObjectToSelectValue,
- channelLabel,
-} from "../../../../utils/functions";
-import RoleItem from "../../../../styled-components/RoleItem";
+import PrettoSlider from "../../../../styled-components/PrettoSlider"
-const marks = [...Array(7)].map((item, index) => ({ value: index / 2, label: `x${index / 2}` }));
+const marks = [...Array(7)].map((item, index) => ({ value: (index / 2), label: `x${(index / 2)}` }));
const Leveling = ({ location, guild: userConnectedGuildInfo }) => {
- const [levelUpAnnouncement, setLevelUpAnnouncement] = useState(false);
+ const [levelUpAnnouncement, setLevelUpAnnouncement] = useState();
const [announcementChannel, setAnnouncementChannel] = useState(false);
- const [noXpRoles, setNoXpRoles] = useState([]);
- const [noXpChannels, setNoXpChannels] = useState([]);
- const [generalScaling, setGeneralScaling] = useState(1);
- const [levelUpMessage, setLevelUpMessage] = useState(
- "Congrats {player}, you leveled up to level {level}!"
- );
- const { setDashboardOpen, saveOnType } = useContext(DiscordContext);
+ const [levelUpMessage, setLevelUpMessage] = useState("Congrats {player}, you leveled up to level {level}!");
+ const { setDashboardOpen, saveOnType } = useContext(DiscordContext);
const guildId = userConnectedGuildInfo?.id;
const handleTypeSelect = useCallback(
async e => {
const guildLevelRef = firebase.db.collection("Leveling").doc(guildId);
- let value = e.target.checked ? 3 : 1;
- setLevelUpAnnouncement(e.target.checked);
+ setLevelUpAnnouncement(e);
try {
- await guildLevelRef.update({ type: value });
+ await guildLevelRef.update({ type: e.value });
} catch (err) {
- await guildLevelRef.set({ type: value });
+ await guildLevelRef.set({ type: e.value });
}
setDashboardOpen(true);
},
@@ -61,12 +48,10 @@ const Leveling = ({ location, guild: userConnectedGuildInfo }) => {
async e => {
const guildLevelRef = firebase.db.collection("Leveling").doc(guildId);
setAnnouncementChannel(e);
- const notifications = parseSelectValue(e);
- console.log(notifications);
try {
- await guildLevelRef.update({ notifications });
+ guildLevelRef.update({ notifications: e.value });
} catch (err) {
- await guildLevelRef.set({ notifications });
+ guildLevelRef.set({ notifications: e.value });
}
setDashboardOpen(true);
},
@@ -75,105 +60,36 @@ const Leveling = ({ location, guild: userConnectedGuildInfo }) => {
useEffect(() => {
(async () => {
- try {
- const guildRef = await firebase.db.collection("Leveling").doc(guildId || " ");
- const guild = await guildRef.get();
- const settings = await guildRef.collection("settings").get();
- const data = guild.data();
- const settingsData = settings.docs
- .map(doc => ({ id: doc.id, ...doc.data() }))
- .reduce((acc, cur) => ({ [cur.id]: cur, ...acc }), {});
- if (settingsData) {
- setGeneralScaling(settingsData.scaling.general || 1);
- setNoXpRoles(
- settingsData.bannedItems?.roles
- ?.map(id => userConnectedGuildInfo.roles.find(role => role.id === id))
- ?.map(role => ({
- value: TransformObjectToSelectValue(role),
- label: {role.name},
- })) || []
- );
- setNoXpChannels(
- settingsData.bannedItems?.channels
- ?.map(id =>
- userConnectedGuildInfo.channels.find(channel => channel.id === id)
- )
- .map(channel => ({
- value: TransformObjectToSelectValue(channel),
- label: channelLabel(channel),
- })) || []
- );
- }
- if (data) {
- const id = data.notifications;
- if (id) {
- const apiUrl = `${process.env.REACT_APP_API_URL}/resolvechannel?guild=${guildId}&channel=${id}`;
- const response = await fetch(apiUrl);
- const channel = await response.json();
- setAnnouncementChannel({
- value: id,
- label: channelLabel(channel),
- });
- setLevelUpAnnouncement({
- value: data.type,
- label: ["Disabled", "Current Channel", "Custom Channel"][data.type - 1],
- });
- setLevelUpMessage(data.message);
- }
+ const guild = await firebase.db
+ .collection("Leveling")
+ .doc(guildId || " ")
+ .get();
+ const data = guild.data();
+ if (data) {
+ const id = data.notifications;
+ if (id) {
+ const apiUrl = `${process.env.REACT_APP_API_URL}/resolvechannel?guild=${guildId}&channel=${id}`;
+ const response = await fetch(apiUrl);
+ const channel = await response.json();
+ setAnnouncementChannel({
+ value: id,
+ label: (
+ <>
+ {channel.name}
+ {channel.parent}
+ >
+ ),
+ });
+ setLevelUpAnnouncement({
+ value: data.type,
+ label: ["Disabled", "Current Channel", "Custom Channel"][data.type - 1],
+ });
+ setLevelUpMessage(data.message);
}
- } catch (err) {
- console.log(err.message);
}
})();
}, [location, guildId]);
- const handleGeneralScaling = async (e, value) => {
- const guildLevelRef = firebase.db
- .collection("Leveling")
- .doc(guildId)
- .collection("settings")
- .doc("scaling");
- setGeneralScaling(value);
- try {
- await guildLevelRef.update({ general: value });
- } catch (err) {
- await guildLevelRef.set({ general: value });
- }
- setDashboardOpen(true);
- };
-
- const handleNoXpRoleSelect = async e => {
- const guildLevelRef = firebase.db
- .collection("Leveling")
- .doc(guildId)
- .collection("settings")
- .doc("bannedItems");
- setNoXpRoles(e);
- const value = parseSelectValue(e);
- try {
- await guildLevelRef.update({ roles: value });
- } catch (err) {
- await guildLevelRef.set({ roles: value });
- }
- setDashboardOpen(true);
- };
-
- const handleNoXpChannelSelect = async e => {
- const guildLevelRef = firebase.db
- .collection("Leveling")
- .doc(guildId)
- .collection("settings")
- .doc("bannedItems");
- setNoXpChannels(e);
- const value = parseSelectValue(e);
- try {
- await guildLevelRef.update({ channels: value });
- } catch (err) {
- await guildLevelRef.set({ channels: value });
- }
- setDashboardOpen(true);
- };
-
return (
@@ -186,14 +102,9 @@ const Leveling = ({ location, guild: userConnectedGuildInfo }) => {
Leveling Up
-
- Whenever a user gains a level, DisStreamBot can send a personalized message.
-
+ Whenever a user gains a level, DisStreamBot can send a personalized message.
-
+
Leaderboard
@@ -202,36 +113,43 @@ const Leveling = ({ location, guild: userConnectedGuildInfo }) => {
Level up announcement
-
-
-
-
ANNOUNCEMENT CHANNEL
a.parent.localeCompare(b.parent))
- ?.map(channel => ({
- value: TransformObjectToSelectValue(channel),
- label: channelLabel(channel),
- }))}
+ onChange={handleTypeSelect}
+ placeholder="Select Annoucement type"
+ value={levelUpAnnouncement}
+ options={[
+ { value: 1, label: "Disabled" },
+ { value: 3, label: "Custom Channel" },
+ ].map(type => type)}
/>
+ {levelUpAnnouncement?.value === 3 && (
+
+
ANNOUNCEMENT CHANNEL
+ a.parent.localeCompare(b.parent))
+ ?.map(channel => ({
+ value: channel.id,
+ label: (
+ <>
+ {channel.name}
+ {channel.parent}
+ >
+ ),
+ }))}
+ />
+
+ )}
LEVEL UP ANNOUNCEMENT MESSAGE
-
+
@@ -242,59 +160,58 @@ const Leveling = ({ location, guild: userConnectedGuildInfo }) => {
General XP Scaling
`${value}xp`}
- aria-labelledby="xp scaling"
+ aria-labelledby="discrete-slider"
valueLabelDisplay="auto"
step={0.5}
+ // marks
min={0}
max={3}
marks={marks}
/>
-
+
No Rank Items
-
-
No XP Roles
- No XP Channels
+ {}}
+ placeholder="No XP Roles"
+ value={""}
+ options={userConnectedGuildInfo?.channels
+ ?.sort((a, b) => a.parent.localeCompare(b.parent))
+ ?.map(channel => ({
+ value: channel.id,
+ label: (
+ <>
+ {channel.name}
+ {channel.parent}
+ >
+ ),
+ }))}
+ />
-
- b.rawPosition - a.rawPosition)
- ?.map(role => ({
- value: TransformObjectToSelectValue(role),
- label: {role.name},
- }))}
- />
-
-
-
- a.parent.localeCompare(b.parent))
- ?.map(channel => ({
- value: TransformObjectToSelectValue(channel),
- label: channelLabel(channel),
- }))}
- />
-
+
{}}
+ placeholder="No XP Channels"
+ value={""}
+ options={userConnectedGuildInfo?.channels
+ ?.sort((a, b) => a.parent.localeCompare(b.parent))
+ ?.map(channel => ({
+ value: channel.id,
+ label: (
+ <>
+ {channel.name}
+ {channel.parent}
+ >
+ ),
+ }))}
+ />
diff --git a/src/components/DashBoard/Discord/Plugins/PluginCard.scss b/src/components/DashBoard/Discord/Plugins/PluginCard.scss
index b95c437..29fb1c6 100644
--- a/src/components/DashBoard/Discord/Plugins/PluginCard.scss
+++ b/src/components/DashBoard/Discord/Plugins/PluginCard.scss
@@ -2,51 +2,52 @@
$background-color: #212121;
background: $background-color;
transition: 0.25s;
- margin: 0.5rem;
- cursor: pointer;
- position: relative;
- &.disabled {
- background: lighten($background-color, 2);
- opacity: 0.45;
- &:after {
+ margin: 0.5rem;
+ cursor: pointer;
+ position: relative;
+ &.disabled{
+ background: lighten($background-color, 2);
+ opacity: .45;
+ &:after {
content: "Click to Enable";
background: #b92838;
- width: fit-content;
- position: absolute;
- top: 0;
- right: 0;
- transform: translate(10%, -25%);
- padding: 0.25rem 0.4rem;
- border-radius: 5rem;
+ width: fit-content;
+ position: absolute;
+ top: 0;
+ right: 0;
+ transform: translate(10%, -25%);
+ padding: .25rem .4rem;
+ border-radius: 5rem;
}
- }
+ }
&.coming-soon {
- cursor: initial;
- position: relative;
- opacity: 0.8;
+ cursor: initial;
+ position: relative;
+ opacity: .8;
&:after {
content: "Coming Soon";
background: var(--disstreamchat-blue);
- width: fit-content;
- position: absolute;
- top: 0;
- right: 0;
- transform: translate(10%, -25%);
- padding: 0.25rem 0.4rem;
- border-radius: 5rem;
+ width: fit-content;
+ position: absolute;
+ top: 0;
+ right: 0;
+ transform: translate(10%, -25%);
+ padding: .25rem .4rem;
+ border-radius: 5rem;
}
}
&:not(.coming-soon):hover {
background: lighten($color: $background-color, $amount: 3);
- }
- a {
- display: flex;
- width: 300px;
- height: 100px;
- }
- display: flex;
- width: 300px;
- height: 100px;
+ }
+ a{
+
+ display: flex;
+ width: 300px;
+ height: 100px;
+ }
+ display: flex;
+ width: 300px;
+ height: 100px;
padding: 20px;
align-items: center;
box-sizing: content-box !important;
@@ -72,134 +73,121 @@
color: #aaa;
margin-top: 0.25rem;
line-height: 1.5rem;
- }
- @media screen and (max-width: 440px) {
- width: 200px;
- h4 {
- font-size: 0.75rem;
- line-height: 1rem;
- }
- }
+ }
+ @media screen and (max-width: 440px) {
+ width: 200px;
+ h4{
+ font-size: .75rem;
+ line-height: 1rem;;
+ }
+ }
}
-.plugin-overlay {
- background: lighten(#21212133, 10) !important;
+.plugin-overlay{
+ background: lighten(#21212133, 10) !important;
}
-.plugin-modal {
- // display: flex;
- padding: 0 !important;
- overflow: hidden;
- min-width: fit-content;
- button {
- outline: none !important;
- }
- .top-portion {
- width: 580px;
- height: 75px;
- background: #2e3235;
- display: flex;
- align-items: center;
- padding: 0 1rem;
- box-sizing: border-box !important;
- justify-content: space-between;
- h2 {
- font-size: 1.25rem;
- text-transform: uppercase;
- }
- button {
- background: #212121;
- border: none;
- color: white;
- border-radius: 0.125rem;
- display: flex;
- align-items: center;
- justify-content: center;
- padding: 0.25rem;
- }
- }
- .bottom-buttons {
- padding: 0 1rem;
- box-sizing: border-box !important;
- justify-content: space-between;
- width: 580px;
- height: 75px;
- background: #212121;
- display: flex;
- align-items: center;
- justify-content: flex-end;
- button {
- $blue: #2d688d;
- padding: 0.5rem 1rem;
- background: $blue;
- color: white;
- border: none;
- border-radius: 0.125rem;
- &:hover {
- background: darken($blue, 5);
- }
- }
- }
+.plugin-modal{
+ // display: flex;
+ padding: 0 !important;
+ overflow: hidden;
+ min-width: fit-content;
+ button{
+ outline: none !important
+ }
+ .top-portion{
+ width: 580px;
+ height: 75px;
+ background: #2e3235;
+ display: flex;
+ align-items: center;
+ padding: 0 1rem;
+ box-sizing: border-box !important;
+ justify-content: space-between;
+ h2{
+ font-size: 1.25rem;
+ text-transform: uppercase;
+ }
+ button{
+ background: #212121;
+ border: none;
+ color: white;
+ border-radius: .125rem;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ padding: .25rem;
+ }
+ };
+ .bottom-buttons{
+ padding: 0 1rem;
+ box-sizing: border-box !important;
+ justify-content: space-between;
+ width: 580px;
+ height: 75px;
+ background: #212121;
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
+ button{
+ $blue: #2d688d;
+ padding: .5rem 1rem;
+ background: $blue;
+ color: white;
+ border: none;
+ border-radius: .125rem;
+ &:hover{
+ background: darken($blue, 5)
+ }
+ }
+ }
}
-.scaling-div {
- padding: 0 1.5rem;
+.scaling-div{
+ padding: 0 1.5rem
}
#root {
- .MuiSlider-markLabelActive,
- .MuiSlider-markLabel {
- color: white;
- }
- .MuiSlider-markActive,
- .MuiSlider-mark {
- opacity: 0;
- }
+ .MuiSlider-markLabelActive, .MuiSlider-markLabel{
+ color: white;
+ }
+ .MuiSlider-markActive, .MuiSlider-mark{
+ opacity: 0;
+
+ }
}
-.no-rank-items {
- display: flex;
- justify-content: space-between;
- align-items: center;
- flex-direction: column;
- width: 100% !important;
- & > div {
- flex: 1;
- width: 100%;
- display: flex;
- justify-content: space-between;
- &:first-child {
- display: grid;
- grid-template-columns: 1fr 1fr;
- }
- }
- & > div > div {
- // margin: 0 1rem;
- &:first-child {
- margin-left: 0;
- }
- &:last-child {
- margin-right: 0;
- }
- width: 100%;
- flex: 1;
- }
- @media screen and (max-width: 700px) {
- flex-direction: column;
- align-items: center;
- & > div {
- margin: 0.5rem 0;
- }
- }
+.no-rank-items{
+ display: flex;
+ justify-content: space-between;
+ width: 100% !important;
+ & > div{
+ margin: 0 1rem;
+ &:first-child{
+ margin-left: 0;
+ }
+ &:last-child{
+ margin-right: 0;
+ }
+ width: 100%
+ }
+ @media screen and (max-width: 700px) {
+ flex-direction: column;
+ align-items: center;
+ & > div{
+ margin: .5rem 0;
+ }
+ }
}
-.MuiSvgIcon-root {
- font-size: inherit !important
+.MuiSvgIcon-root{
+ font-size: inherit !important
;
}
-.plugin-switch {
- position: absolute;
- top: -16px;
- right: -25px;
+.plugin-switch{
+ position: absolute;
+ top: -16px;
+ right: -25px;
}
+
diff --git a/src/styled-components/FancySwitch.js b/src/styled-components/FancySwitch.js
index deeac97..0cf5e98 100644
--- a/src/styled-components/FancySwitch.js
+++ b/src/styled-components/FancySwitch.js
@@ -28,6 +28,6 @@ const FancySwitch = withStyles({
opacity: "1 !important",
},
},
-})(props => );
+})(Switch);
export default FancySwitch
\ No newline at end of file