Skip to content

Commit d551b71

Browse files
feat: new settings ui
Signed-off-by: Henry Gressmann <[email protected]>
1 parent dbe5715 commit d551b71

File tree

23 files changed

+381
-183
lines changed

23 files changed

+381
-183
lines changed

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,34 +14,34 @@ name="liwan"
1414
path="src/main.rs"
1515

1616
[dependencies]
17+
# async/concurrency
1718
tokio={version="1.38", default-features=false, features=["rt-multi-thread"]}
1819
tokio-util={version="0.7", features=["io"]}
1920
futures-util="0.3"
20-
21+
crossbeam="0.8"
2122

2223
# encoding
2324
hex={version="0.4"}
24-
bs58="0.5.1"
25+
bs58="0.5"
2526
serde={version="1.0", features=["derive"]}
2627
serde_json={version="1.0"}
2728
md-5="0.10"
29+
async-compression="0.4"
30+
tokio-tar={package="krata-tokio-tar", version="0.4"}
31+
sha3={version="0.10"}
32+
argon2={version="0.5"}
2833

29-
# utils
30-
cached="0.53"
34+
# general
3135
argh={version="0.1"}
3236
eyre={version="0.6"}
3337
rand={version="0.8"}
34-
time={version="0.3"}
38+
cached="0.53"
3539
itertools={version="0.13"}
40+
time={version="0.3"}
3641
colored={version="2.1"}
3742
figment={version="0.10", features=["toml", "env"]}
38-
sha3={version="0.10"}
39-
argon2={version="0.5"}
40-
crossbeam="0.8"
4143
tracing="0.1"
4244
tracing-subscriber={version="0.3", features=["env-filter"]}
43-
async-compression="0.4.12"
44-
tokio-tar={package="krata-tokio-tar", version="0.4.0"}
4545

4646
# web
4747
poem={version="3.1", default-features=false, features=[
@@ -52,12 +52,11 @@ poem={version="3.1", default-features=false, features=[
5252
"compression",
5353
"tower-compat",
5454
]}
55-
56-
poem-openapi={version="5.0", default-features=false, features=["time"]}
55+
poem-openapi={version="5.1", default-features=false, features=["time"]}
5756
tower={version="0.5", default-features=false, features=["limit"]}
5857
uaparser="0.6"
5958
mime_guess={version="2.0"}
60-
rust-embed="8.4"
59+
rust-embed="8.5"
6160
reqwest={version="0.12", default-features=false, features=[
6261
"json",
6362
"stream",
@@ -73,7 +72,7 @@ duckdb={version="1.0", git="https://github.com/explodingcamera/duckdb-rs", featu
7372
]}
7473
rusqlite={version="0.32", features=["bundled", "time"]}
7574
r2d2={version="0.8"}
76-
r2d2_sqlite="0.25.0"
75+
r2d2_sqlite="0.25"
7776
refinery={version="0.8"}
7877
refinery-core="0.8"
7978
maxminddb={version="0.24", optional=true}

PLANS.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

cliff.toml

Lines changed: 0 additions & 91 deletions
This file was deleted.

src/app/core/reports.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ use std::collections::BTreeMap;
22
use std::fmt::{Debug, Display};
33

44
use crate::app::DuckDBConn;
5-
use crate::utils::validate;
65
use crate::web::routes::dashboard::GraphValue;
76
use duckdb::{params_from_iter, ToSql};
87
use eyre::Result;
@@ -364,11 +363,6 @@ pub fn dimension_report(
364363
filters: &[DimensionFilter],
365364
metric: &Metric,
366365
) -> Result<ReportTable> {
367-
// recheck the validity of the entity IDs to be super sure there's no SQL injection
368-
if !entities.iter().all(|entity| validate::is_valid_id(entity.as_ref())) {
369-
return Err(eyre::eyre!("Invalid entity ID"));
370-
}
371-
372366
let mut params: Vec<Box<dyn ToSql>> = Vec::new();
373367
let entity_vars = repeat_vars(entities.len());
374368
let (filters_sql, filters_params) = filter_sql(filters)?;

src/web/routes/admin.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ impl AdminAPI {
178178
Data(app): Data<&Liwan>,
179179
SessionUser(session_user): SessionUser,
180180
) -> ApiResult<EmptyResponse> {
181-
if session_user.role != UserRole::Admin {
181+
if session_user.role != UserRole::Admin || username != session_user.username {
182182
http_bail!(StatusCode::FORBIDDEN, "Forbidden")
183183
}
184184

web/bun.lockb

4.25 KB
Binary file not shown.

web/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
"@types/react": "^18.3.5",
3838
"@types/react-dom": "^18.3.0",
3939
"@types/react-simple-maps": "^3.0.6",
40-
"astro": "^4.15.4",
40+
"astro": "^4.15.6",
4141
"bun-types": "^1.1.27",
4242
"rollup-plugin-license": "^3.5.2",
4343
"typescript": "^5.6.2"

web/src/api/query.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,14 @@ export function useQuery<
1717
TData = TQueryFnData,
1818
TQueryKey extends QueryKey = QueryKey,
1919
>(options: UseQueryOptions<TQueryFnData, TError, TData, TQueryKey>, c?: QueryClient): UseQueryResult<TData, TError> {
20-
return _useQuery(options, c || queryClient);
20+
return _useQuery(
21+
{
22+
enabled(query) {
23+
if (typeof window === "undefined") return false;
24+
return typeof options.enabled === "function" ? options.enabled(query) : (options.enabled ?? true);
25+
},
26+
...options,
27+
},
28+
c || queryClient,
29+
);
2130
}

web/src/components/settings/dialogs.module.css

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,18 @@
1111
.new {
1212
padding: 0.4rem 0.5rem;
1313
height: fit-content;
14+
animation: newLoad 0.4s ease;
15+
}
16+
17+
@keyframes newLoad {
18+
from {
19+
opacity: 0;
20+
transform: translateY(0.2rem);
21+
}
22+
to {
23+
opacity: 1;
24+
transform: translateY(0);
25+
}
1426
}
1527

1628
.danger {

0 commit comments

Comments
 (0)