Merge branch 'master' into feature/invite_code_https
commit
c4d17c7ac0
2
.env
2
.env
|
|
@ -1,2 +0,0 @@
|
|||
VITE_API_URL=https://peptide.chat/api
|
||||
# VITE_API_URL=http://local.revolt.chat:8000
|
||||
|
|
@ -6,6 +6,7 @@ dist-ssr
|
|||
*.local
|
||||
*.log
|
||||
/.idea
|
||||
.env
|
||||
|
||||
.yarn/cache
|
||||
.yarn/install-state.gz
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ import AutoComplete, { useAutoComplete } from "../AutoComplete";
|
|||
import { PermissionTooltip } from "../Tooltip";
|
||||
import FilePreview from "./bars/FilePreview";
|
||||
import ReplyBar from "./bars/ReplyBar";
|
||||
import { User } from "@styled-icons/boxicons-regular";
|
||||
|
||||
type Props = {
|
||||
channel: Channel;
|
||||
|
|
@ -256,26 +257,27 @@ export default observer(({ channel }: Props) => {
|
|||
</Base>
|
||||
);
|
||||
}
|
||||
console.log(channel) //|| channel.channel_type != "DirectMessage"
|
||||
if (channel.channel_type != "SavedMessages")
|
||||
if (!channel.havePermission("SendMessage") && channel.channel_type == "TextChannel" || channel.recipient?.relationship == "Blocked" || channel.recipient?.relationship == "BlockedOther"){
|
||||
|
||||
if (!channel.havePermission("SendMessage")) {
|
||||
return (
|
||||
<Base>
|
||||
<Blocked>
|
||||
<Action>
|
||||
<PermissionTooltip
|
||||
permission="SendMessages"
|
||||
placement="top">
|
||||
<ShieldX size={22} />
|
||||
</PermissionTooltip>
|
||||
</Action>
|
||||
<div className="text">
|
||||
<Text id="app.main.channel.misc.no_sending" />
|
||||
</div>
|
||||
</Blocked>
|
||||
</Base>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<Base>
|
||||
<Blocked>
|
||||
<Action>
|
||||
<PermissionTooltip
|
||||
permission="SendMessages"
|
||||
placement="top">
|
||||
<ShieldX size={22} />
|
||||
</PermissionTooltip>
|
||||
</Action>
|
||||
<div className="text">
|
||||
<Text id="app.main.channel.misc.no_sending" />
|
||||
</div>
|
||||
</Blocked>
|
||||
</Base>
|
||||
);
|
||||
}
|
||||
// Push message content to draft.
|
||||
const setMessage = useCallback(
|
||||
(content?: string) => {
|
||||
|
|
@ -627,7 +629,7 @@ export default observer(({ channel }: Props) => {
|
|||
)}
|
||||
</FloatingLayer>
|
||||
<Base>
|
||||
{channel.havePermission("UploadFiles") ? (
|
||||
{/* {channel.havePermission("UploadFiles") ? ( */}
|
||||
<FileAction>
|
||||
<FileUploader
|
||||
size={24}
|
||||
|
|
@ -664,9 +666,9 @@ export default observer(({ channel }: Props) => {
|
|||
}}
|
||||
/>
|
||||
</FileAction>
|
||||
) : (
|
||||
{/* ) : (
|
||||
<ThisCodeWillBeReplacedAnywaysSoIMightAsWellJustDoItThisWay__Padding />
|
||||
)}
|
||||
)} */}
|
||||
<TextAreaAutoSize
|
||||
autoFocus
|
||||
hideBorder
|
||||
|
|
|
|||
|
|
@ -6,17 +6,17 @@ import { Localizer, Text } from "preact-i18n";
|
|||
import Tooltip from "../Tooltip";
|
||||
|
||||
enum Badges {
|
||||
Developer = 1, // Developer
|
||||
Translator = 2, // First 100 Members
|
||||
Supporter = 4, // Supporter
|
||||
ResponsibleDisclosure = 8, // Trusted Seller
|
||||
Founder = 16, // Founder
|
||||
PlatformModeration = 32, // Administrator
|
||||
Developer = 1,
|
||||
Translator = 2,
|
||||
Supporter = 4,
|
||||
ResponsibleDisclosure = 8,
|
||||
Founder = 16,
|
||||
PlatformModeration = 32,
|
||||
ActiveSupporter = 64,
|
||||
Paw = 128, // Clown
|
||||
EarlyAdopter = 256, // Top Contributor
|
||||
ReservedRelevantJokeBadge1 = 512, // Karen
|
||||
ReservedRelevantJokeBadge2 = 1024, // Gump
|
||||
Paw = 128,
|
||||
EarlyAdopter = 256,
|
||||
ReservedRelevantJokeBadge1 = 512,
|
||||
ReservedRelevantJokeBadge2 = 1024,
|
||||
}
|
||||
|
||||
const BadgesBase = styled.div`
|
||||
|
|
@ -39,60 +39,75 @@ export default function UserBadges({ badges, uid }: Props) {
|
|||
return (
|
||||
<BadgesBase>
|
||||
<Localizer>
|
||||
{badges & Badges.Founder && (
|
||||
{badges & Badges.Founder ? (
|
||||
<Tooltip content="Founder">
|
||||
<img src="/assets/badges/founder.svg" />
|
||||
</Tooltip>
|
||||
) : (
|
||||
<></>
|
||||
)}
|
||||
{badges & Badges.Developer && (
|
||||
{badges & Badges.Developer ? (
|
||||
<Tooltip content="Developer">
|
||||
<img src="/assets/badges/developer.png" />
|
||||
</Tooltip>
|
||||
) : (
|
||||
<></>
|
||||
)}
|
||||
{badges & Badges.Translator && (
|
||||
{badges & Badges.Translator ? (
|
||||
<Tooltip content="First 100 Members">
|
||||
<img src="/assets/badges/first_100_members.svg" />
|
||||
</Tooltip>
|
||||
) : (
|
||||
<></>
|
||||
)}
|
||||
{badges & Badges.EarlyAdopter && (
|
||||
{badges & Badges.EarlyAdopter ? (
|
||||
<Tooltip content="Top Contributor">
|
||||
<img src="/assets/badges/top-contributor.png" />
|
||||
</Tooltip>
|
||||
) : (
|
||||
<></>
|
||||
)}
|
||||
{badges & Badges.PlatformModeration && (
|
||||
{badges & Badges.PlatformModeration ? (
|
||||
<Tooltip content="Administrator">
|
||||
<img src="/assets/badges/administrator.png" />
|
||||
</Tooltip>
|
||||
) : (
|
||||
<></>
|
||||
)}
|
||||
{badges & Badges.ResponsibleDisclosure && (
|
||||
{badges & Badges.ResponsibleDisclosure ? (
|
||||
<Tooltip content="Trusted Seller">
|
||||
<img src="/assets/badges/trusted-seller.png" />
|
||||
</Tooltip>
|
||||
) : (
|
||||
<></>
|
||||
)}
|
||||
{badges & Badges.Supporter && (
|
||||
{badges & Badges.Supporter ? (
|
||||
<Tooltip content="Supporter">
|
||||
<img
|
||||
src="/assets/badges/supporter.png"
|
||||
style={{
|
||||
cursor: "pointer",
|
||||
}}
|
||||
/>
|
||||
<img src="/assets/badges/supporter.png" />
|
||||
</Tooltip>
|
||||
) : (
|
||||
<></>
|
||||
)}
|
||||
{badges & Badges.ReservedRelevantJokeBadge1 && (
|
||||
{badges & Badges.ReservedRelevantJokeBadge1 ? (
|
||||
<Tooltip content="Karen">
|
||||
<img src="/assets/badges/karen.png" />
|
||||
</Tooltip>
|
||||
) : (
|
||||
<></>
|
||||
)}
|
||||
{badges & Badges.ReservedRelevantJokeBadge2 && (
|
||||
{badges & Badges.ReservedRelevantJokeBadge2 ? (
|
||||
<Tooltip content="Gump">
|
||||
<img src="/assets/badges/gump.png" />
|
||||
</Tooltip>
|
||||
) : (
|
||||
<></>
|
||||
)}
|
||||
{badges & Badges.Paw && (
|
||||
{badges & Badges.Paw ? (
|
||||
<Tooltip content="Clown">
|
||||
<img src="/assets/badges/clown.png" />
|
||||
</Tooltip>
|
||||
) : (
|
||||
<></>
|
||||
)}
|
||||
</Localizer>
|
||||
</BadgesBase>
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ export default function CreateInvite({
|
|||
}: ModalProps<"create_invite">) {
|
||||
const [processing, setProcessing] = useState(false);
|
||||
const [code, setCode] = useState("abcdef");
|
||||
const [url, setUrl] = useState("abcdef");
|
||||
|
||||
// Generate an invite code
|
||||
useEffect(() => {
|
||||
|
|
@ -44,7 +45,10 @@ export default function CreateInvite({
|
|||
|
||||
target
|
||||
.createInvite()
|
||||
.then(({ _id }) => setCode(_id))
|
||||
.then((res) => {
|
||||
setUrl(res.url || "default_url");
|
||||
setCode(res._id || "default_code");
|
||||
})
|
||||
.catch((err) =>
|
||||
modalController.push({ type: "error", error: takeError(err) }),
|
||||
)
|
||||
|
|
|
|||
|
|
@ -207,7 +207,8 @@ export const UserProfile = observer(
|
|||
</Button>
|
||||
</Link>
|
||||
)}
|
||||
{(user.relationship === "Friend" || user.bot) && (
|
||||
{(user.relationship === "Friend" || user.relationship === "None" || user.relationship === "Outgoing" || user.relationship === "Incoming" || user.bot ) && (
|
||||
|
||||
<Localizer>
|
||||
<Tooltip
|
||||
content={
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ export const Channel = observer(
|
|||
const client = useClient();
|
||||
const state = useApplicationState();
|
||||
|
||||
if (!client.channels.exists(id)) {
|
||||
if (!client.channels.exists(id) && server_id) {
|
||||
if (server_id) {
|
||||
const server = client.servers.get(server_id);
|
||||
if (server && server.channel_ids.length > 0) {
|
||||
|
|
@ -110,7 +110,7 @@ export const Channel = observer(
|
|||
target_id = last_id;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return (
|
||||
<Redirect
|
||||
to={`/server/${server_id}/channel/${target_id}`}
|
||||
|
|
|
|||
Loading…
Reference in New Issue