Improve some styles. Add an offline mode
This commit is contained in:
parent
eb086146bf
commit
651da7b28e
@ -72,10 +72,14 @@ pub async fn initialize(
|
|||||||
db_pool: Pool<Database>,
|
db_pool: Pool<Database>,
|
||||||
) -> Result<(), Box<dyn std::error::Error>> {
|
) -> Result<(), Box<dyn std::error::Error>> {
|
||||||
info!("Checking environment variables...");
|
info!("Checking environment variables...");
|
||||||
env::var("OAUTH2_CLIENT_ID").expect("`OAUTH2_CLIENT_ID' not supplied");
|
|
||||||
env::var("OAUTH2_CLIENT_SECRET").expect("`OAUTH2_CLIENT_SECRET' not supplied");
|
if env::var("OFFLINE").map_or(true, |v| v != "1") {
|
||||||
env::var("OAUTH2_DISCORD_CALLBACK").expect("`OAUTH2_DISCORD_CALLBACK' not supplied");
|
env::var("OAUTH2_CLIENT_ID").expect("`OAUTH2_CLIENT_ID' not supplied");
|
||||||
env::var("PATREON_GUILD_ID").expect("`PATREON_GUILD_ID' not supplied");
|
env::var("OAUTH2_CLIENT_SECRET").expect("`OAUTH2_CLIENT_SECRET' not supplied");
|
||||||
|
env::var("OAUTH2_DISCORD_CALLBACK").expect("`OAUTH2_DISCORD_CALLBACK' not supplied");
|
||||||
|
env::var("PATREON_GUILD_ID").expect("`PATREON_GUILD_ID' not supplied");
|
||||||
|
}
|
||||||
|
|
||||||
info!("Done!");
|
info!("Done!");
|
||||||
|
|
||||||
let oauth2_client = BasicClient::new(
|
let oauth2_client = BasicClient::new(
|
||||||
@ -185,6 +189,8 @@ pub async fn initialize(
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub async fn check_subscription(cache_http: impl CacheHttp, user_id: impl Into<UserId>) -> bool {
|
pub async fn check_subscription(cache_http: impl CacheHttp, user_id: impl Into<UserId>) -> bool {
|
||||||
|
offline!(true);
|
||||||
|
|
||||||
if let Some(subscription_guild) = *CNC_GUILD {
|
if let Some(subscription_guild) = *CNC_GUILD {
|
||||||
let guild_member = GuildId(subscription_guild).member(cache_http, user_id).await;
|
let guild_member = GuildId(subscription_guild).member(cache_http, user_id).await;
|
||||||
|
|
||||||
@ -206,6 +212,8 @@ pub async fn check_guild_subscription(
|
|||||||
cache_http: impl CacheHttp,
|
cache_http: impl CacheHttp,
|
||||||
guild_id: impl Into<GuildId>,
|
guild_id: impl Into<GuildId>,
|
||||||
) -> bool {
|
) -> bool {
|
||||||
|
offline!(true);
|
||||||
|
|
||||||
if let Some(guild) = cache_http.cache().unwrap().guild(guild_id) {
|
if let Some(guild) = cache_http.cache().unwrap().guild(guild_id) {
|
||||||
let owner = guild.owner_id;
|
let owner = guild.owner_id;
|
||||||
|
|
||||||
|
@ -1,3 +1,11 @@
|
|||||||
|
macro_rules! offline {
|
||||||
|
($field:expr) => {
|
||||||
|
if std::env::var("OFFLINE").map_or(false, |v| v == "1") {
|
||||||
|
return $field;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
macro_rules! check_length {
|
macro_rules! check_length {
|
||||||
($max:ident, $field:expr) => {
|
($max:ident, $field:expr) => {
|
||||||
if $field.len() > $max {
|
if $field.len() > $max {
|
||||||
@ -52,43 +60,45 @@ macro_rules! check_authorization {
|
|||||||
|
|
||||||
let user_id = $cookies.get_private("userid").map(|c| c.value().parse::<u64>().ok()).flatten();
|
let user_id = $cookies.get_private("userid").map(|c| c.value().parse::<u64>().ok()).flatten();
|
||||||
|
|
||||||
match user_id {
|
if std::env::var("OFFLINE").map_or(true, |v| v != "1") {
|
||||||
Some(user_id) => {
|
match user_id {
|
||||||
match GuildId($guild).to_guild_cached($ctx) {
|
Some(user_id) => {
|
||||||
Some(guild) => {
|
match GuildId($guild).to_guild_cached($ctx) {
|
||||||
let member_res = guild.member($ctx, UserId(user_id)).await;
|
Some(guild) => {
|
||||||
|
let member_res = guild.member($ctx, UserId(user_id)).await;
|
||||||
|
|
||||||
match member_res {
|
match member_res {
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
return Err(json!({"error": "User not in guild"}));
|
return Err(json!({"error": "User not in guild"}));
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(member) => {
|
Ok(member) => {
|
||||||
let permissions_res = member.permissions($ctx);
|
let permissions_res = member.permissions($ctx);
|
||||||
|
|
||||||
match permissions_res {
|
match permissions_res {
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
return Err(json!({"error": "Couldn't fetch permissions"}));
|
return Err(json!({"error": "Couldn't fetch permissions"}));
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(permissions) => {
|
Ok(permissions) => {
|
||||||
if !(permissions.manage_messages() || permissions.manage_guild() || permissions.administrator()) {
|
if !(permissions.manage_messages() || permissions.manage_guild() || permissions.administrator()) {
|
||||||
return Err(json!({"error": "Incorrect permissions"}));
|
return Err(json!({"error": "Incorrect permissions"}));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
None => {
|
None => {
|
||||||
return Err(json!({"error": "Bot not in guild"}));
|
return Err(json!({"error": "Bot not in guild"}));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
None => {
|
None => {
|
||||||
return Err(json!({"error": "User not authorized"}));
|
return Err(json!({"error": "User not authorized"}));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -46,6 +46,7 @@ pub async fn get_guild_patreon(
|
|||||||
cookies: &CookieJar<'_>,
|
cookies: &CookieJar<'_>,
|
||||||
ctx: &State<Context>,
|
ctx: &State<Context>,
|
||||||
) -> JsonResult {
|
) -> JsonResult {
|
||||||
|
offline!(Ok(json!({ "patreon": true })));
|
||||||
check_authorization!(cookies, ctx.inner(), id);
|
check_authorization!(cookies, ctx.inner(), id);
|
||||||
|
|
||||||
match GuildId(id).to_guild_cached(ctx.inner()) {
|
match GuildId(id).to_guild_cached(ctx.inner()) {
|
||||||
@ -73,6 +74,12 @@ pub async fn get_guild_channels(
|
|||||||
cookies: &CookieJar<'_>,
|
cookies: &CookieJar<'_>,
|
||||||
ctx: &State<Context>,
|
ctx: &State<Context>,
|
||||||
) -> JsonResult {
|
) -> JsonResult {
|
||||||
|
offline!(Ok(json!(vec![ChannelInfo {
|
||||||
|
name: "general".to_string(),
|
||||||
|
id: "1".to_string(),
|
||||||
|
webhook_avatar: None,
|
||||||
|
webhook_name: None,
|
||||||
|
}])));
|
||||||
check_authorization!(cookies, ctx.inner(), id);
|
check_authorization!(cookies, ctx.inner(), id);
|
||||||
|
|
||||||
match GuildId(id).to_guild_cached(ctx.inner()) {
|
match GuildId(id).to_guild_cached(ctx.inner()) {
|
||||||
@ -111,6 +118,7 @@ struct RoleInfo {
|
|||||||
|
|
||||||
#[get("/api/guild/<id>/roles")]
|
#[get("/api/guild/<id>/roles")]
|
||||||
pub async fn get_guild_roles(id: u64, cookies: &CookieJar<'_>, ctx: &State<Context>) -> JsonResult {
|
pub async fn get_guild_roles(id: u64, cookies: &CookieJar<'_>, ctx: &State<Context>) -> JsonResult {
|
||||||
|
offline!(Ok(json!(vec![RoleInfo { name: "@everyone".to_string(), id: "1".to_string() }])));
|
||||||
check_authorization!(cookies, ctx.inner(), id);
|
check_authorization!(cookies, ctx.inner(), id);
|
||||||
|
|
||||||
let roles_res = ctx.cache.guild_roles(id);
|
let roles_res = ctx.cache.guild_roles(id);
|
||||||
|
@ -54,6 +54,8 @@ pub async fn get_user_info(
|
|||||||
ctx: &State<Context>,
|
ctx: &State<Context>,
|
||||||
pool: &State<Pool<MySql>>,
|
pool: &State<Pool<MySql>>,
|
||||||
) -> JsonValue {
|
) -> JsonValue {
|
||||||
|
offline!(json!(UserInfo { name: "Discord".to_string(), patreon: true, timezone: None }));
|
||||||
|
|
||||||
if let Some(user_id) =
|
if let Some(user_id) =
|
||||||
cookies.get_private("userid").map(|u| u.value().parse::<u64>().ok()).flatten()
|
cookies.get_private("userid").map(|u| u.value().parse::<u64>().ok()).flatten()
|
||||||
{
|
{
|
||||||
@ -116,6 +118,8 @@ pub async fn update_user_info(
|
|||||||
|
|
||||||
#[get("/api/user/guilds")]
|
#[get("/api/user/guilds")]
|
||||||
pub async fn get_user_guilds(cookies: &CookieJar<'_>, reqwest_client: &State<Client>) -> JsonValue {
|
pub async fn get_user_guilds(cookies: &CookieJar<'_>, reqwest_client: &State<Client>) -> JsonValue {
|
||||||
|
offline!(json!(vec![GuildInfo { id: "1".to_string(), name: "Guild".to_string() }]));
|
||||||
|
|
||||||
if let Some(access_token) = cookies.get_private("access_token") {
|
if let Some(access_token) = cookies.get_private("access_token") {
|
||||||
let request_res = reqwest_client
|
let request_res = reqwest_client
|
||||||
.get(format!("{}/users/@me/guilds", DISCORD_API))
|
.get(format!("{}/users/@me/guilds", DISCORD_API))
|
||||||
|
@ -249,7 +249,7 @@ div#pageNavbar a {
|
|||||||
|
|
||||||
.navbar-item.pageTitle {
|
.navbar-item.pageTitle {
|
||||||
flex-shrink: 1;
|
flex-shrink: 1;
|
||||||
text-wrap: nowrap;
|
white-space: nowrap;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -644,9 +644,11 @@ li.highlight {
|
|||||||
}
|
}
|
||||||
|
|
||||||
p.title.pageTitle {
|
p.title.pageTitle {
|
||||||
visibility: hidden;
|
display: none;
|
||||||
text-wrap: nowrap;
|
}
|
||||||
overflow: hidden;
|
|
||||||
|
.dashboard-frame {
|
||||||
|
margin-top: 4rem !important;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -665,6 +667,7 @@ li.highlight {
|
|||||||
/* loader */
|
/* loader */
|
||||||
#loader {
|
#loader {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
background-color: rgba(255, 255, 255, 0.8);
|
background-color: rgba(255, 255, 255, 0.8);
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
z-index: 999;
|
z-index: 999;
|
||||||
@ -762,5 +765,5 @@ a.switch-pane {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.figure-num {
|
.figure-num {
|
||||||
font-size: 2em;
|
font-size: 2rem;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user