Skip to content

Commit 79a0729

Browse files
committed
refactor: simplify filter logic
1 parent 719252f commit 79a0729

File tree

3 files changed

+20
-38
lines changed

3 files changed

+20
-38
lines changed

source/lib/inline-menu-filter.ts

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

source/menu/admin/user-quicklook.ts

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,6 @@ import {
99
import type {User} from 'grammy/types';
1010
import {html as format} from 'telegram-format';
1111
import {getUrl} from '../../lib/calendar-helper.ts';
12-
import {
13-
DEFAULT_FILTER,
14-
filterButtonText,
15-
} from '../../lib/inline-menu-filter.ts';
1612
import {backMainButtons} from '../../lib/inline-menu.ts';
1713
import type {MyContext} from '../../lib/types.ts';
1814

@@ -70,7 +66,11 @@ const question = new StatelessQuestion<MyContext>(
7066
bot.use(question.middleware());
7167

7268
menu.interact('filter', {
73-
text: filterButtonText(ctx => ctx.session.adminuserquicklookfilter),
69+
text(ctx) {
70+
return ctx.session.adminuserquicklookfilter
71+
? `🔎 Filter: ${ctx.session.adminuserquicklookfilter}`
72+
: '🔎 Filter';
73+
},
7474
async do(ctx, path) {
7575
await question.replyWithHTML(
7676
ctx,
@@ -85,12 +85,7 @@ menu.interact('filter', {
8585
menu.interact('filter-clear', {
8686
joinLastRow: true,
8787
text: 'Filter aufheben',
88-
hide(ctx) {
89-
return (
90-
(ctx.session.adminuserquicklookfilter ?? DEFAULT_FILTER)
91-
=== DEFAULT_FILTER
92-
);
93-
},
88+
hide: ctx => ctx.session.adminuserquicklookfilter === undefined,
9489
do(ctx) {
9590
delete ctx.session.adminuserquicklookfilter;
9691
delete ctx.session.adminuserquicklook;
@@ -102,7 +97,7 @@ menu.select('u', {
10297
maxRows: 5,
10398
columns: 2,
10499
async choices(ctx) {
105-
const filter = ctx.session.adminuserquicklookfilter ?? DEFAULT_FILTER;
100+
const filter = ctx.session.adminuserquicklookfilter ?? '.+';
106101
const filterRegex = new RegExp(filter, 'i');
107102
const allConfigs = await ctx.userconfig.all(config =>
108103
filterRegex.test(JSON.stringify(config)));

source/menu/events/add.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,6 @@ import {
1212
exists as allEventsExists,
1313
find as allEventsFind,
1414
} from '../../lib/all-events.ts';
15-
import {
16-
DEFAULT_FILTER,
17-
filterButtonText,
18-
} from '../../lib/inline-menu-filter.ts';
1915
import {backMainButtons} from '../../lib/inline-menu.ts';
2016
import type {MyContext} from '../../lib/types.ts';
2117

@@ -31,12 +27,12 @@ export const menu = new MenuTemplate<MyContext>(async ctx => {
3127
text += '\n\n';
3228

3329
try {
34-
const filteredEvents = await findEvents(ctx);
35-
36-
const filter = ctx.session.eventfilter ?? DEFAULT_FILTER;
37-
text += filter === DEFAULT_FILTER
38-
? `Ich habe ${total} Veranstaltungen. Nutze den Filter um die Auswahl einzugrenzen.`
39-
: `Mit deinem Filter konnte ich ${filteredEvents.length} passende Veranstaltungen finden.`;
30+
if (ctx.session.eventfilter === undefined) {
31+
text += `Ich habe ${total} Veranstaltungen. Nutze den Filter um die Auswahl einzugrenzen.`;
32+
} else {
33+
const filteredEvents = await findEvents(ctx);
34+
text += `Mit deinem Filter konnte ich ${filteredEvents.length} passende Veranstaltungen finden.`;
35+
}
4036
} catch (error) {
4137
const errorText = error instanceof Error ? error.message : String(error);
4238
text += 'Filter Error: ';
@@ -47,7 +43,7 @@ export const menu = new MenuTemplate<MyContext>(async ctx => {
4743
});
4844

4945
async function findEvents(ctx: MyContext): Promise<readonly string[]> {
50-
const filter = ctx.session.eventfilter ?? DEFAULT_FILTER;
46+
const filter = ctx.session.eventfilter ?? '.+';
5147
const ignore = Object.keys(ctx.userconfig.mine.events);
5248
return allEventsFind(filter, ignore);
5349
}
@@ -66,7 +62,11 @@ const question = new StatelessQuestion<MyContext>(
6662
bot.use(question.middleware());
6763

6864
menu.interact('filter', {
69-
text: filterButtonText(ctx => ctx.session.eventfilter),
65+
text(ctx) {
66+
return ctx.session.eventfilter
67+
? `🔎 Filter: ${ctx.session.eventfilter}`
68+
: '🔎 Filter';
69+
},
7070
async do(ctx, path) {
7171
await question.replyWithHTML(
7272
ctx,
@@ -81,7 +81,7 @@ menu.interact('filter', {
8181
menu.interact('filter-clear', {
8282
text: 'Filter aufheben',
8383
joinLastRow: true,
84-
hide: ctx => (ctx.session.eventfilter ?? DEFAULT_FILTER) === DEFAULT_FILTER,
84+
hide: ctx => ctx.session.eventfilter === undefined,
8585
do(ctx) {
8686
delete ctx.session.eventfilter;
8787
return true;

0 commit comments

Comments
 (0)