Skip to content

Commit 50304df

Browse files
committed
wip parse /near/; TODO test
1 parent c865ec7 commit 50304df

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

lib/model/internal_link.dart

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,10 @@ sealed class InternalLink {
120120
/// The result of parsing some URL that points to a narrow on a Zulip realm,
121121
/// when the narrow is of a type that this app understands.
122122
class NarrowLink extends InternalLink {
123-
NarrowLink(this.narrow, {required super.realmUrl});
123+
NarrowLink(this.narrow, this.nearMessageId, {required super.realmUrl});
124124

125125
final Narrow narrow;
126+
final int? nearMessageId;
126127
}
127128

128129
/// A [Narrow] from a given URL, on `store`'s realm.
@@ -180,6 +181,7 @@ NarrowLink? _interpretNarrowSegments(List<String> segments, PerAccountStore stor
180181
ApiNarrowDm? dmElement;
181182
ApiNarrowWith? withElement;
182183
Set<IsOperand> isElementOperands = {};
184+
int? nearMessageId;
183185

184186
for (var i = 0; i < segments.length; i += 2) {
185187
final (operator, negated) = _parseOperator(segments[i]);
@@ -217,8 +219,9 @@ NarrowLink? _interpretNarrowSegments(List<String> segments, PerAccountStore stor
217219
// It is fine to have duplicates of the same [IsOperand].
218220
isElementOperands.add(IsOperand.fromRawString(operand));
219221

220-
case _NarrowOperator.near: // TODO(#82): support for near
221-
continue;
222+
case _NarrowOperator.near:
223+
if (nearMessageId != null) return null;
224+
nearMessageId = int.tryParse(operand, radix: 10);
222225

223226
case _NarrowOperator.unknown:
224227
return null;
@@ -260,7 +263,7 @@ NarrowLink? _interpretNarrowSegments(List<String> segments, PerAccountStore stor
260263
return null;
261264
}
262265

263-
return NarrowLink(narrow, realmUrl: store.realmUrl);
266+
return NarrowLink(narrow, nearMessageId, realmUrl: store.realmUrl);
264267
}
265268

266269
@JsonEnum(fieldRename: FieldRename.kebab, alwaysCreate: true)

0 commit comments

Comments
 (0)