diff --git a/app/src/main/java/eu/faircode/email/FragmentSetup.java b/app/src/main/java/eu/faircode/email/FragmentSetup.java index ae907742e9..193e810530 100644 --- a/app/src/main/java/eu/faircode/email/FragmentSetup.java +++ b/app/src/main/java/eu/faircode/email/FragmentSetup.java @@ -54,7 +54,6 @@ import android.widget.CompoundButton; import android.widget.ImageButton; import android.widget.ScrollView; import android.widget.TextView; -import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -71,8 +70,9 @@ import androidx.lifecycle.Observer; import androidx.localbroadcastmanager.content.LocalBroadcastManager; import androidx.preference.PreferenceManager; +import com.google.android.material.snackbar.Snackbar; + import net.openid.appauth.AppAuthConfiguration; -import net.openid.appauth.AuthState; import net.openid.appauth.AuthorizationException; import net.openid.appauth.AuthorizationRequest; import net.openid.appauth.AuthorizationResponse; @@ -86,16 +86,8 @@ import net.openid.appauth.ResponseTypeValues; import net.openid.appauth.TokenRequest; import net.openid.appauth.TokenResponse; -import org.json.JSONArray; -import org.json.JSONObject; - -import java.io.IOException; -import java.io.InputStream; -import java.net.HttpURLConnection; -import java.net.URL; +import java.text.NumberFormat; import java.util.ArrayList; -import java.util.Collections; -import java.util.Date; import java.util.List; public class FragmentSetup extends FragmentBase implements SharedPreferences.OnSharedPreferenceChangeListener { @@ -1369,21 +1361,32 @@ public class FragmentSetup extends FragmentBase implements SharedPreferences.OnS args.putLong("account", account); args.putString("accessToken", access.accessToken); - new SimpleTask() { + new SimpleTask() { @Override - protected Void onExecute(Context context, Bundle args) throws Throwable { + protected Integer onExecute(Context context, Bundle args) throws Throwable { long account = args.getLong("account"); String accessToken = args.getString("accessToken"); - MicrosoftGraph.downloadContacts(context, account, accessToken); - return null; + return MicrosoftGraph.downloadContacts(context, account, accessToken); } @Override - protected void onExecuted(Bundle args, Void data) { + protected void onExecuted(Bundle args, @NonNull Integer count) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); prefs.edit().putBoolean("suggest_sent", true).apply(); - ToastEx.makeText(context, R.string.title_completed, Toast.LENGTH_LONG).show(); + + NumberFormat NF = NumberFormat.getInstance(); + String msg = getString(R.string.title_setup_import_graph_result, NF.format(count)); + + final Snackbar snackbar = Snackbar.make(view, msg, Snackbar.LENGTH_INDEFINITE) + .setGestureInsetBottomIgnored(true); + snackbar.setAction(android.R.string.ok, new View.OnClickListener() { + @Override + public void onClick(View view) { + snackbar.dismiss(); + } + }); + snackbar.show(); } @Override diff --git a/app/src/main/java/eu/faircode/email/MicrosoftGraph.java b/app/src/main/java/eu/faircode/email/MicrosoftGraph.java index b0d3631960..cf5a03663c 100644 --- a/app/src/main/java/eu/faircode/email/MicrosoftGraph.java +++ b/app/src/main/java/eu/faircode/email/MicrosoftGraph.java @@ -124,7 +124,8 @@ public class MicrosoftGraph { } } - static void downloadContacts(Context context, long account, String accessToken) throws IOException, JSONException { + static int downloadContacts(Context context, long account, String accessToken) throws IOException, JSONException { + int count = 0; DB db = DB.getInstance(context); // https://learn.microsoft.com/en-us/graph/api/user-list-contacts?view=graph-rest-1.0&tabs=http @@ -168,6 +169,7 @@ public class MicrosoftGraph { contact.first_contacted = new Date().getTime(); contact.last_contacted = contact.first_contacted; db.contact().insertContact(contact); + count++; } } } @@ -187,5 +189,7 @@ public class MicrosoftGraph { } finally { connection.disconnect(); } + + return count; } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4e8675fdfe..fbb55f8312 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -262,6 +262,7 @@ Which permissions are needed and why? How can I import contacts? Outlook contacts + New contacts: %1$s Disable battery optimizations To send and receive email reliably in the background Battery optimizations should be disabled for the app to ensure reliable sending and receiving of messages in the background