addReadMore method

String addReadMore(
  1. SocialMediaApp app
)

Implementation

String addReadMore(SocialMediaApp app) {
  String insertReadMore(int threshold) {
    final urls = getUrls();
    if (urls.isEmpty) return this;

    final urlsText = urls.join('\n');
    final contentWithoutUrl = removeUrls();

    if (contentWithoutUrl.length + urlsText.length <= threshold) return this;

    const readMore = '... Read more:\n';
    final remainingSpace = threshold - readMore.length - urlsText.length;

    if (remainingSpace <= 0) return this;

    final truncatedContent = contentWithoutUrl.substring(0, remainingSpace);

    return '$truncatedContent$readMore$urlsText';
  }

  switch (app) {
    case SocialMediaApp.whatsapp:
      return insertReadMore(700);
    case SocialMediaApp.instagram:
      return insertReadMore(2200);
    case SocialMediaApp.linkedin:
      return insertReadMore(1300);
    case SocialMediaApp.facebook:
      return insertReadMore(1300);
    case SocialMediaApp.twitter:
      return insertReadMore(250);
    case SocialMediaApp.telegram:
      return insertReadMore(4096);
    default:
      return this;
  }
}