Skip to content

Commit

Permalink
Merge pull request #361 from bitmold/onionservices_no_click_again
Browse files Browse the repository at this point in the history
Fixes #360 "Click again for backup"
  • Loading branch information
n8fr8 committed Jul 13, 2020
2 parents 85f6f30 + 88082af commit 5f296cc
Show file tree
Hide file tree
Showing 33 changed files with 147 additions and 159 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@
import android.database.Cursor;
import android.os.Bundle;
import android.os.Handler;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import android.view.Menu;
Expand Down Expand Up @@ -42,14 +41,13 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_activity_client_cookies);

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

mResolver = getContentResolver();

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
findViewById(R.id.fab).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AddCookieDialog dialog = new AddCookieDialog();
Expand All @@ -66,7 +64,7 @@ public void onClick(View view) {
CookieContentProvider.CONTENT_URI, true, new HSObserver(new Handler())
);

ListView cookies = (ListView) findViewById(R.id.clien_cookies_list);
ListView cookies = findViewById(R.id.clien_cookies_list);
cookies.setAdapter(mAdapter);

cookies.setOnItemClickListener(new AdapterView.OnItemClickListener() {
Expand Down Expand Up @@ -94,7 +92,7 @@ public void onItemClick(AdapterView<?> parent, View view, int position, long id)

CookieActionsDialog dialog = new CookieActionsDialog();
dialog.setArguments(arguments);
dialog.show(getSupportFragmentManager(), "CookieActionsDialog");
dialog.show(getSupportFragmentManager(), CookieActionsDialog.class.getSimpleName());
}
});

Expand Down Expand Up @@ -149,7 +147,10 @@ public void onRequestPermissionsResult(int requestCode,
break;
}
case CookieActionsDialog.WRITE_EXTERNAL_STORAGE_FROM_COOKIE_ACTION_DIALOG: {
Toast.makeText(this, R.string.click_again_for_backup, Toast.LENGTH_LONG).show();
try {
CookieActionsDialog activeDialog = (CookieActionsDialog) getSupportFragmentManager().findFragmentByTag(CookieActionsDialog.class.getSimpleName());
activeDialog.doBackup();
} catch (ClassCastException e) {}
break;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,21 @@
import android.database.Cursor;
import android.os.Bundle;
import android.os.Handler;

import com.google.android.material.floatingactionbutton.FloatingActionButton;

import androidx.core.view.MenuItemCompat;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;

import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.Toast;

import org.torproject.android.R;
import org.torproject.android.settings.LocaleHelper;
import org.torproject.android.ui.hiddenservices.adapters.OnionListAdapter;
Expand All @@ -42,13 +45,13 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_hs_list_view);

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

mResolver = getContentResolver();

fab = (FloatingActionButton) findViewById(R.id.fab);
fab = findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Expand All @@ -69,7 +72,7 @@ public void onClick(View view) {
HSContentProvider.CONTENT_URI, true, new HSObserver(new Handler())
);

ListView onion_list = (ListView) findViewById(R.id.onion_list);
ListView onion_list = findViewById(R.id.onion_list);
onion_list.setAdapter(mAdapter);

onion_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
Expand Down Expand Up @@ -101,12 +104,12 @@ public void onItemClick(AdapterView<?> parent, View view, int position, long id)

HSActionsDialog dialog = new HSActionsDialog();
dialog.setArguments(arguments);
dialog.show(getSupportFragmentManager(), "HSActionsDialog");
dialog.show(getSupportFragmentManager(), HSActionsDialog.class.getSimpleName());
}
});
}


@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(LocaleHelper.onAttach(base));
Expand Down Expand Up @@ -185,7 +188,11 @@ public void onRequestPermissionsResult(int requestCode,
break;
}
case HSActionsDialog.WRITE_EXTERNAL_STORAGE_FROM_ACTION_DIALOG: {
Toast.makeText(this, R.string.click_again_for_backup, Toast.LENGTH_LONG).show();
try {
HSActionsDialog activeDialog = (HSActionsDialog) getSupportFragmentManager().findFragmentByTag(HSActionsDialog.class.getSimpleName());
activeDialog.doBackup();
} catch (ClassCastException e) {
}
break;
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.torproject.android.ui.hiddenservices.dialogs;


import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
Expand All @@ -10,70 +9,33 @@
import androidx.fragment.app.DialogFragment;
import androidx.appcompat.app.AlertDialog;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import org.torproject.android.R;
import org.torproject.android.ui.hiddenservices.backup.BackupUtils;
import org.torproject.android.ui.hiddenservices.permissions.PermissionManager;

public class CookieActionsDialog extends DialogFragment {
public static final int WRITE_EXTERNAL_STORAGE_FROM_COOKIE_ACTION_DIALOG = 4;
private AlertDialog actionDialog;

@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Bundle arguments = getArguments();

final View dialog_view = getActivity().getLayoutInflater().inflate(R.layout.layout_cookie_actions, null);
final AlertDialog actionDialog = new AlertDialog.Builder(getActivity())
actionDialog = new AlertDialog.Builder(getActivity())
.setView(dialog_view)
.setTitle(R.string.client_cookies)
.create();

Button backup = (Button) dialog_view.findViewById(R.id.btn_cookie_backup);
backup.setOnClickListener(new View.OnClickListener() {
dialog_view.findViewById(R.id.btn_cookie_backup).setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Context mContext = v.getContext();

if (PermissionManager.isLollipopOrHigher()
&& !PermissionManager.hasExternalWritePermission(mContext)) {

PermissionManager.requestExternalWritePermissions(
getActivity(), WRITE_EXTERNAL_STORAGE_FROM_COOKIE_ACTION_DIALOG);

return;
}

BackupUtils backup_utils = new BackupUtils(mContext);
String backupPath = backup_utils.createCookieBackup(
arguments.getString("domain"),
arguments.getString("auth_cookie_value"),
arguments.getInt("enabled")
);

if (backupPath == null || backupPath.length() < 1) {
Toast.makeText(mContext, R.string.error, Toast.LENGTH_LONG).show();
actionDialog.dismiss();
return;
}

Toast.makeText(mContext, R.string.backup_saved_at_external_storage, Toast.LENGTH_LONG).show();

Uri selectedUri = Uri.parse(backupPath.substring(0, backupPath.lastIndexOf("/")));
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(selectedUri, "resource/folder");

if (intent.resolveActivityInfo(mContext.getPackageManager(), 0) != null) {
startActivity(intent);
} else {
Toast.makeText(mContext, R.string.filemanager_not_available, Toast.LENGTH_LONG).show();
}
actionDialog.dismiss();
doBackup();
}
});

Button delete = (Button) dialog_view.findViewById(R.id.btn_cookie_delete);
delete.setOnClickListener(new View.OnClickListener() {
dialog_view.findViewById(R.id.btn_cookie_delete).setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
CookieDeleteDialog dialog = new CookieDeleteDialog();
dialog.setArguments(arguments);
Expand All @@ -82,13 +44,58 @@ public void onClick(View v) {
}
});

Button cancel = (Button) dialog_view.findViewById(R.id.btn_cookie_cancel);
cancel.setOnClickListener(new View.OnClickListener() {
dialog_view.findViewById(R.id.btn_cookie_cancel).setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
actionDialog.dismiss();
}
});

return actionDialog;
}

public void doBackup() {
Context mContext = getContext();
Bundle arguments = getArguments();

if (PermissionManager.isLollipopOrHigher()
&& !PermissionManager.hasExternalWritePermission(mContext)) {

PermissionManager.requestExternalWritePermissions(
getActivity(), WRITE_EXTERNAL_STORAGE_FROM_COOKIE_ACTION_DIALOG);

return;
}

BackupUtils backup_utils = new BackupUtils(mContext);
String backupPath;
try {
backupPath = backup_utils.createCookieBackup(
arguments.getString("domain"),
arguments.getString("auth_cookie_value"),
arguments.getInt("enabled")
);
} catch (NullPointerException npe) {
backupPath = null;
}

if (backupPath == null || backupPath.length() < 1) {
Toast.makeText(mContext, R.string.error, Toast.LENGTH_LONG).show();
actionDialog.dismiss();
return;
}

Toast.makeText(mContext, R.string.backup_saved_at_external_storage, Toast.LENGTH_LONG).show();

Uri selectedUri = Uri.parse(backupPath.substring(0, backupPath.lastIndexOf("/")));
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(selectedUri, "resource/folder");

if (intent.resolveActivityInfo(mContext.getPackageManager(), 0) != null) {
startActivity(intent);
} else {
Toast.makeText(mContext, R.string.filemanager_not_available, Toast.LENGTH_LONG).show();
}
actionDialog.dismiss();
}

}

0 comments on commit 5f296cc

Please sign in to comment.