showEditMessageModal function

void showEditMessageModal(
  1. PupauMessage message
)

Lets the user change their message text, then forks from the previous message and sends the new text (same idea as ChatGPT edit).

Implementation

void showEditMessageModal(PupauMessage message) {
  final PupauChatController chatController = Get.find();
  chatController.editMessageTextController.text = message.query;

  WoltModalSheetPage page(BuildContext modalSheetContext) {
    final bool isTablet = DeviceService.isTablet;
    return WoltModalSheetPage(
      surfaceTintColor: MyStyles.pupauTheme(!Get.isDarkMode).white,
      backgroundColor: MyStyles.pupauTheme(!Get.isDarkMode).white,
      hasTopBarLayer: true,
      isTopBarLayerAlwaysVisible: true,
      topBarTitle: Row(
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        children: [
          const SizedBox(width: 48),
          Expanded(
            child: Padding(
              padding: const EdgeInsets.only(top: 8),
              child: Text(
                Strings.editMessageTitle.tr,
                textAlign: TextAlign.center,
                style: TextStyle(
                  fontSize: isTablet ? 18 : 16,
                  fontWeight: FontWeight.w600,
                  color: MyStyles.pupauTheme(!Get.isDarkMode).darkBlue,
                ),
              ),
            ),
          ),
          const Padding(padding: EdgeInsets.only(top: 8), child: CloseIcon()),
        ],
      ),
      child: _EditMessageBody(
        message: message,
        modalSheetContext: modalSheetContext,
        chatController: chatController,
        isTablet: isTablet,
      ),
    );
  }

  final BuildContext? safeContext = getSafeModalContext();
  if (safeContext == null) {
    return;
  }

  WoltModalSheet.show(
    context: safeContext,
    pageListBuilder: (modalSheetContext) {
      return [page(modalSheetContext)];
    },
  );
}