#1756 Email newsletter dialog

This commit is contained in:
Andrei 2022-12-26 14:02:52 -08:00
parent 765827819b
commit cdeeed0e8e
5 changed files with 110 additions and 0 deletions

View file

@ -13,6 +13,7 @@ import com.newsblur.database.BlurDatabaseHelper
import com.newsblur.fragment.FolderListFragment
import com.newsblur.fragment.LoginAsDialogFragment
import com.newsblur.fragment.LogoutDialogFragment
import com.newsblur.fragment.NewslettersFragment
import com.newsblur.service.NBSyncService
import com.newsblur.util.ListTextSize
import com.newsblur.util.ListTextSize.Companion.fromSize
@ -182,6 +183,11 @@ class MainContextMenuDelegateImpl(
activity.startActivity(intent)
true
}
R.id.menu_newsletters -> {
val newFragment: DialogFragment = NewslettersFragment()
newFragment.show(activity.supportFragmentManager, NewslettersFragment::class.java.name)
true
}
else -> false
}
}

View file

@ -0,0 +1,47 @@
package com.newsblur.fragment
import android.app.Dialog
import android.content.ClipData
import android.content.ClipboardManager
import android.os.Bundle
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment
import com.newsblur.R
import com.newsblur.databinding.NewsletterDialogBinding
import com.newsblur.util.PrefsUtils
import com.newsblur.util.setViewGone
import com.newsblur.util.setViewVisible
class NewslettersFragment : DialogFragment() {
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val view = layoutInflater.inflate(R.layout.newsletter_dialog, null)
val binding: NewsletterDialogBinding = NewsletterDialogBinding.bind(view)
val emailAddress = generateEmail()
binding.txtEmail.text = emailAddress
binding.btnSetup.setOnClickListener {
binding.btnSetup.setViewGone()
binding.txtSetup.setViewVisible()
}
return AlertDialog.Builder(requireContext()).apply {
setView(binding.root)
setPositiveButton(android.R.string.ok, null)
setNegativeButton(R.string.copy_email) { _, _ ->
copyToClipboard(emailAddress)
}
}.create()
}
private fun generateEmail(): String {
val userDetails = PrefsUtils.getUserDetails(requireContext())
return "${userDetails.username}-12345678@newsletters.newsblur.com"
}
private fun copyToClipboard(message: String) {
val clipboardManager = requireContext().getSystemService(ClipboardManager::class.java)
val clipData = ClipData.newPlainText("NewsBlur email forwarding", message)
clipboardManager.setPrimaryClip(clipData)
}
}

View file

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:animateLayoutChanges="true"
android:orientation="vertical"
android:paddingHorizontal="25dp">
<androidx.appcompat.widget.AppCompatTextView
style="?defaultText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/forwarding_email_address"
android:textSize="18sp"
android:textStyle="bold" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/txt_email"
style="?defaultText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:textSize="14sp" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/btn_setup"
style="?defaultText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:paddingVertical="6dp"
android:text="@string/setup_instructions"
android:textSize="12sp" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/txt_setup"
style="?defaultText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/setup_instructions_details"
android:textSize="12sp"
android:visibility="gone" />
</androidx.appcompat.widget.LinearLayoutCompat>

View file

@ -27,6 +27,11 @@
android:title="@string/menu_notifications"
app:showAsAction="never" />
<item android:id="@+id/menu_newsletters"
android:title="@string/menu_newsletters"
app:showAsAction="never"
android:visible="false" />
<item android:id="@+id/menu_text_size"
android:title="@string/menu_text_size" >
<menu>

View file

@ -269,6 +269,11 @@
<string name="feed_opens">%d opens</string>
<string name="feed_stories_per_month">%d stories/month</string>
<string name="forwarding_email_address">Forwarding email address</string>
<string name="setup_instructions">Setup instructions \u25bc</string>
<string name="setup_instructions_details">To read your email newsletters in NewsBlur, forward your newsletters to your custom email address shown above.\n\nIn Gmail, go to Settings > Forwarding and click on Add a forwarding address. Add your custom NewsBlur email address.\n\nGmail will walk you through confirming the email address. You\'ll want to come back to NewsBlur and look for the confirmation email under the "Newsletters" folder.\n\nNext, create a filter with all of your newsletters so that they forward to the custom address on NewsBlur.</string>
<string name="copy_email">Copy email</string>
<string name="import_export">Import/Export…</string>
<string name="settings">Preferences…</string>
<string name="menu_mute_sites">Mute Sites…</string>
@ -279,6 +284,7 @@
<string name="title_widget_setup">Tap to setup in NewsBlur</string>
<string name="title_no_subscriptions">No active subscriptions detected</string>
<string name="title_widget_loading">Loading…</string>
<string name="menu_newsletters">Newsletters…</string>
<string name="import_export_title">Import/Export OPML</string>
<string name="notifications_title">Notifications</string>