LCOV - code coverage report
Current view: top level - lib/models/messages - invitemessage.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 0 37 0.0 %
Date: 2026-07-15 19:28:30 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             : 
      12             : class InviteMessage extends Message {
      13             :   final MessageMetadata metadata;
      14             :   final String content;
      15             :   final int overlay;
      16             : 
      17           0 :   InviteMessage(this.overlay, this.metadata, this.content);
      18             : 
      19           0 :   @override
      20             :   Widget getWidget(BuildContext context, Key key, int index) {
      21           0 :     return ChangeNotifierProvider.value(
      22           0 :       value: this.metadata,
      23           0 :       builder: (bcontext, child) {
      24             :         String inviteTarget;
      25             :         String inviteNick;
      26           0 :         String invite = this.content;
      27             : 
      28           0 :         if (this.content.length == TorV3ContactHandleLength) {
      29           0 :           inviteTarget = this.content;
      30           0 :           var targetContact = Provider.of<ProfileInfoState>(context).contactList.findContact(inviteTarget);
      31           0 :           inviteNick = targetContact == null ? this.content : targetContact.nickname;
      32             :         } else {
      33           0 :           var parts = this.content.toString().split("||");
      34           0 :           if (parts.length == 2) {
      35             :             try {
      36           0 :               var jsonObj = jsonDecode(utf8.fuse(base64).decode(parts[1].substring(5)));
      37           0 :               inviteTarget = jsonObj['GroupID'];
      38           0 :               inviteNick = jsonObj['GroupName'];
      39             :             } catch (e) {
      40           0 :               return MessageRow(MalformedBubble(), index);
      41             :             }
      42             :           } else {
      43           0 :             return MessageRow(MalformedBubble(), index);
      44             :           }
      45             :         }
      46           0 :         return MessageRow(InvitationBubble(overlay, inviteTarget, inviteNick, invite), index, key: key);
      47             :       },
      48             :     );
      49             :   }
      50             : 
      51           0 :   @override
      52             :   Widget getPreviewWidget(BuildContext context, {BoxConstraints? constraints}) {
      53           0 :     return ChangeNotifierProvider.value(
      54           0 :       value: this.metadata,
      55           0 :       builder: (bcontext, child) {
      56             :         String inviteTarget;
      57             :         String inviteNick;
      58           0 :         String invite = this.content;
      59           0 :         if (this.content.length == TorV3ContactHandleLength) {
      60           0 :           inviteTarget = this.content;
      61           0 :           var targetContact = Provider.of<ProfileInfoState>(context).contactList.findContact(inviteTarget);
      62           0 :           inviteNick = targetContact == null ? this.content : targetContact.nickname;
      63             :         } else {
      64           0 :           var parts = this.content.toString().split("||");
      65           0 :           if (parts.length == 2) {
      66             :             try {
      67           0 :               var jsonObj = jsonDecode(utf8.fuse(base64).decode(parts[1].substring(5)));
      68           0 :               inviteTarget = jsonObj['GroupID'];
      69           0 :               inviteNick = jsonObj['GroupName'];
      70             :             } catch (e) {
      71           0 :               return MalformedBubble();
      72             :             }
      73             :           } else {
      74           0 :             return MalformedBubble();
      75             :           }
      76             :         }
      77           0 :         return InvitationBubble(overlay, inviteTarget, inviteNick, invite);
      78             :       },
      79             :     );
      80             :   }
      81             : 
      82           0 :   @override
      83             :   MessageMetadata getMetadata() {
      84           0 :     return this.metadata;
      85             :   }
      86             : }

Generated by: LCOV version 1.14