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: 2024-08-27 16:31:36 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           0 :   @override
      51             :   Widget getPreviewWidget(BuildContext context, {BoxConstraints? constraints}) {
      52           0 :     return ChangeNotifierProvider.value(
      53           0 :         value: this.metadata,
      54           0 :         builder: (bcontext, child) {
      55             :           String inviteTarget;
      56             :           String inviteNick;
      57           0 :           String invite = this.content;
      58           0 :           if (this.content.length == TorV3ContactHandleLength) {
      59           0 :             inviteTarget = this.content;
      60           0 :             var targetContact = Provider.of<ProfileInfoState>(context).contactList.findContact(inviteTarget);
      61           0 :             inviteNick = targetContact == null ? this.content : targetContact.nickname;
      62             :           } else {
      63           0 :             var parts = this.content.toString().split("||");
      64           0 :             if (parts.length == 2) {
      65             :               try {
      66           0 :                 var jsonObj = jsonDecode(utf8.fuse(base64).decode(parts[1].substring(5)));
      67           0 :                 inviteTarget = jsonObj['GroupID'];
      68           0 :                 inviteNick = jsonObj['GroupName'];
      69             :               } catch (e) {
      70           0 :                 return MalformedBubble();
      71             :               }
      72             :             } else {
      73           0 :               return MalformedBubble();
      74             :             }
      75             :           }
      76           0 :           return InvitationBubble(overlay, inviteTarget, inviteNick, invite);
      77             :         });
      78             :   }
      79             : 
      80           0 :   @override
      81             :   MessageMetadata getMetadata() {
      82           0 :     return this.metadata;
      83             :   }
      84             : }

Generated by: LCOV version 1.14