LCOV - code coverage report
Current view: top level - lib/models/messages - invitemessage.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 0 46 0.0 %
Date: 2026-08-31 22:32:18 Functions: 0 0 -

          Line data    Source code
       1             : import 'dart:convert';
       2             : 
       3             : import 'package:cwtch/models/message.dart';
       4             : import 'package:cwtch/widgets/invitationbubble.dart';
       5             : import 'package:cwtch/widgets/malformedbubble.dart';
       6             : import 'package:cwtch/widgets/messagerow.dart';
       7             : import 'package:flutter/widgets.dart';
       8             : import 'package:provider/provider.dart';
       9             : 
      10             : import '../profile.dart';
      11             : import '../../constants.dart';
      12             : 
      13             : class InviteMessage extends Message {
      14             :   final MessageMetadata metadata;
      15             :   final String content;
      16             :   final int overlay;
      17             : 
      18           0 :   InviteMessage(this.overlay, this.metadata, this.content);
      19             : 
      20           0 :   @override
      21             :   Widget getWidget(BuildContext context, Key key, int index) {
      22           0 :     return ChangeNotifierProvider.value(
      23           0 :       value: this.metadata,
      24           0 :       builder: (bcontext, child) {
      25             :         String inviteTarget;
      26             :         String inviteNick;
      27           0 :         String invite = this.content;
      28             : 
      29           0 :         if (invite.startsWith(ManagedGroupPrefix) && invite.length == ManagedGroupPrefix.length + TorV3ContactHandleLength) {
      30           0 :           inviteTarget = invite.substring(ManagedGroupPrefix.length);
      31           0 :           var targetContact = Provider.of<ProfileInfoState>(context).contactList.findContact(inviteTarget);
      32           0 :           inviteNick = targetContact == null ? inviteTarget : targetContact.nickname;
      33           0 :         } else if (this.content.length == TorV3ContactHandleLength) {
      34           0 :           inviteTarget = this.content;
      35           0 :           var targetContact = Provider.of<ProfileInfoState>(context).contactList.findContact(inviteTarget);
      36           0 :           inviteNick = targetContact == null ? this.content : targetContact.nickname;
      37             :         } else {
      38           0 :           var parts = this.content.toString().split("||");
      39           0 :           if (parts.length == 2) {
      40             :             try {
      41           0 :               var jsonObj = jsonDecode(utf8.fuse(base64).decode(parts[1].substring(5)));
      42           0 :               inviteTarget = jsonObj['GroupID'];
      43           0 :               inviteNick = jsonObj['GroupName'];
      44             :             } catch (e) {
      45           0 :               return MessageRow(MalformedBubble(), index);
      46             :             }
      47             :           } else {
      48           0 :             return MessageRow(MalformedBubble(), index);
      49             :           }
      50             :         }
      51           0 :         return MessageRow(InvitationBubble(overlay, inviteTarget, inviteNick, invite), index, key: key);
      52             :       },
      53             :     );
      54             :   }
      55             : 
      56           0 :   @override
      57             :   Widget getPreviewWidget(BuildContext context, {BoxConstraints? constraints}) {
      58           0 :     return ChangeNotifierProvider.value(
      59           0 :       value: this.metadata,
      60           0 :       builder: (bcontext, child) {
      61             :         String inviteTarget;
      62             :         String inviteNick;
      63           0 :         String invite = this.content;
      64             : 
      65           0 :         if (invite.startsWith(ManagedGroupPrefix) && invite.length == ManagedGroupPrefix.length + TorV3ContactHandleLength) {
      66           0 :           inviteTarget = this.content;
      67           0 :           String onion = inviteTarget.substring(ManagedGroupPrefix.length);
      68           0 :           var targetContact = Provider.of<ProfileInfoState>(context).contactList.findContact(onion);
      69           0 :           inviteNick = targetContact == null ? onion : targetContact.nickname;
      70           0 :         } else if (this.content.length == TorV3ContactHandleLength) {
      71           0 :           inviteTarget = this.content;
      72           0 :           var targetContact = Provider.of<ProfileInfoState>(context).contactList.findContact(inviteTarget);
      73           0 :           inviteNick = targetContact == null ? this.content : targetContact.nickname;
      74             :         } else {
      75           0 :           var parts = this.content.toString().split("||");
      76           0 :           if (parts.length == 2) {
      77             :             try {
      78           0 :               var jsonObj = jsonDecode(utf8.fuse(base64).decode(parts[1].substring(5)));
      79           0 :               inviteTarget = jsonObj['GroupID'];
      80           0 :               inviteNick = jsonObj['GroupName'];
      81             :             } catch (e) {
      82           0 :               return MalformedBubble();
      83             :             }
      84             :           } else {
      85           0 :             return MalformedBubble();
      86             :           }
      87             :         }
      88           0 :         return InvitationBubble(overlay, inviteTarget, inviteNick, invite);
      89             :       },
      90             :     );
      91             :   }
      92             : 
      93           0 :   @override
      94             :   MessageMetadata getMetadata() {
      95           0 :     return this.metadata;
      96             :   }
      97             : }

Generated by: LCOV version 1.14