@@ -6,6 +6,7 @@ use indexmap::IndexMap;
6
6
use rand:: distr:: { Alphanumeric , SampleString } ;
7
7
use std:: collections:: { HashMap , HashSet } ;
8
8
use std:: env;
9
+ use std:: string:: ToString ;
9
10
use taskwarrior_web:: endpoints:: tasks:: task_query_builder:: TaskQuery ;
10
11
use taskwarrior_web:: endpoints:: tasks:: { fetch_active_task, get_task_details, list_tasks, mark_task_as_done, run_annotate_command, run_denotate_command, run_modify_command, task_add, task_undo, task_undo_report, toggle_task_active, Task , TaskUUID , TaskViewDataRetType } ;
11
12
use taskwarrior_web:: {
@@ -18,6 +19,7 @@ use tracing_subscriber::layer::SubscriberExt;
18
19
use tracing_subscriber:: util:: SubscriberInitExt ;
19
20
use taskwarrior_web:: endpoints:: tasks;
20
21
22
+
21
23
#[ tokio:: main]
22
24
async fn main ( ) {
23
25
// initialize tracing
@@ -56,6 +58,17 @@ async fn main() {
56
58
axum:: serve ( listener, app) . await . unwrap ( ) ;
57
59
}
58
60
61
+ fn get_default_context ( ) -> Context {
62
+ let mut ctx = Context :: new ( ) ;
63
+ let ss = match env:: var ( "TWK_USE_FONT" ) {
64
+ Ok ( v) => Some ( v) ,
65
+ Err ( _) => None
66
+ } ;
67
+ ctx. insert ( "USE_FONT" , & ss) ;
68
+ ctx. insert ( "FALLBACK_FAMILY" , "monospace" ) ;
69
+ ctx
70
+ }
71
+
59
72
fn init_tracing ( ) {
60
73
tracing_subscriber:: registry ( )
61
74
. with (
@@ -71,14 +84,14 @@ async fn display_task_details(Query(param): Query<HashMap<String, String>>) -> H
71
84
let task = get_task_details ( task_id) . unwrap ( ) ;
72
85
let tq = TaskQuery :: new ( TWGlobalState :: default ( ) ) ;
73
86
let tasks = list_tasks ( & tq) . unwrap ( ) ;
74
- let mut ctx = Context :: new ( ) ;
87
+ let mut ctx = get_default_context ( ) ;
75
88
ctx. insert ( "tasks_db" , & tasks) ;
76
89
ctx. insert ( "task" , & task) ;
77
90
Html ( TEMPLATES . render ( "task_details.html" , & ctx) . unwrap ( ) )
78
91
}
79
92
80
93
async fn get_active_task ( ) -> Html < String > {
81
- let mut ctx = Context :: new ( ) ;
94
+ let mut ctx = get_default_context ( ) ;
82
95
if let Ok ( v) = fetch_active_task ( ) {
83
96
if let Some ( v) = v {
84
97
ctx. insert ( "active_task" , & v) ;
@@ -88,13 +101,13 @@ async fn get_active_task() -> Html<String> {
88
101
}
89
102
90
103
async fn get_task_action_bar ( ) -> Html < String > {
91
- let ctx = Context :: new ( ) ;
104
+ let ctx = get_default_context ( ) ;
92
105
Html ( TEMPLATES . render ( "task_action_bar.html" , & ctx) . unwrap ( ) )
93
106
}
94
107
95
108
async fn get_bar ( Query ( param) : Query < HashMap < String , String > > ) -> Html < String > {
96
109
if let Some ( bar) = param. get ( "bar" ) {
97
- let ctx = Context :: new ( ) ;
110
+ let ctx = get_default_context ( ) ;
98
111
if bar == "left_action_bar" {
99
112
Html ( TEMPLATES . render ( "left_action_bar.html" , & ctx) . unwrap ( ) )
100
113
} else {
@@ -106,7 +119,7 @@ async fn get_bar(Query(param): Query<HashMap<String, String>>) -> Html<String> {
106
119
}
107
120
108
121
async fn get_tag_bar ( ) -> Html < String > {
109
- let ctx = Context :: new ( ) ;
122
+ let ctx = get_default_context ( ) ;
110
123
Html ( TEMPLATES . render ( "tag_bar.html" , & ctx) . unwrap ( ) )
111
124
}
112
125
@@ -115,7 +128,7 @@ async fn just_empty() -> Html<String> {
115
128
}
116
129
117
130
async fn display_flash_message ( Query ( msg) : Query < FlashMsg > ) -> Html < String > {
118
- let mut ctx = Context :: new ( ) ;
131
+ let mut ctx = get_default_context ( ) ;
119
132
ctx. insert ( "msg" , & msg. msg ( ) ) ;
120
133
ctx. insert ( "timeout" , & msg. timeout ( ) ) ;
121
134
Html ( TEMPLATES . render ( "flash_msg.html" , & ctx) . unwrap ( ) )
@@ -124,7 +137,7 @@ async fn display_flash_message(Query(msg): Query<FlashMsg>) -> Html<String> {
124
137
async fn get_undo_report ( ) -> Html < String > {
125
138
match task_undo_report ( ) {
126
139
Ok ( s) => {
127
- let mut ctx = Context :: new ( ) ;
140
+ let mut ctx = get_default_context ( ) ;
128
141
let lines = s. lines ( ) ;
129
142
let first_line: String = lines. clone ( ) . take ( 1 ) . collect ( ) ;
130
143
let mut rest_lines: Vec < String > = lines. skip ( 1 ) . map ( |v| v. to_string ( ) ) . collect ( ) ;
@@ -134,7 +147,7 @@ async fn get_undo_report() -> Html<String> {
134
147
Html ( TEMPLATES . render ( "undo_report.html" , & ctx) . unwrap ( ) )
135
148
}
136
149
Err ( e) => {
137
- let mut ctx = Context :: new ( ) ;
150
+ let mut ctx = get_default_context ( ) ;
138
151
ctx. insert ( "heading" , & e. to_string ( ) ) ;
139
152
Html ( TEMPLATES . render ( "error.html" , & ctx) . unwrap ( ) )
140
153
}
@@ -154,7 +167,7 @@ async fn display_task_add_window(Query(params): Query<TWGlobalState>) -> Html<St
154
167
} )
155
168
. or ( Some ( TaskQuery :: default ( ) ) )
156
169
. unwrap ( ) ;
157
- let mut ctx = Context :: new ( ) ;
170
+ let mut ctx = get_default_context ( ) ;
158
171
ctx. insert ( "tags" , & tq. tags ( ) . join ( " " ) ) ;
159
172
ctx. insert ( "project" , tq. project ( ) ) ;
160
173
Html ( TEMPLATES . render ( "task_add.html" , & ctx) . unwrap ( ) )
@@ -270,7 +283,7 @@ async fn front_page() -> Html<String> {
270
283
task_list,
271
284
task_shortcut_map,
272
285
} = get_tasks_view_data ( tasks, & filters) ;
273
- let mut ctx = Context :: new ( ) ;
286
+ let mut ctx = get_default_context ( ) ;
274
287
ctx. insert ( "tasks_db" , & tasks) ;
275
288
ctx. insert ( "tasks" , & task_list) ;
276
289
ctx. insert ( "current_filter" , & tq. as_filter_text ( ) ) ;
@@ -321,7 +334,7 @@ fn get_tasks_view(tq: TaskQuery, flash_msg: Option<FlashMsg>) -> Html<String> {
321
334
task_list, task_shortcut_map,
322
335
} = get_tasks_view_data ( tasks, & filter_ar) ;
323
336
trace ! ( "{:?}" , tag_map) ;
324
- let mut ctx_b = Context :: new ( ) ;
337
+ let mut ctx_b = get_default_context ( ) ;
325
338
ctx_b. insert ( "tasks_db" , & tasks) ;
326
339
ctx_b. insert ( "tasks" , & task_list) ;
327
340
ctx_b. insert ( "current_filter" , & filter_ar) ;
0 commit comments