Bug Fixes

Bug Fixes
master
msmannan00 2021-05-24 20:06:43 +05:00
parent 30a8bd0fcc
commit ad6da782b3
68 changed files with 1002 additions and 336 deletions

View File

@ -278,7 +278,7 @@ class bookmarkViewController
}
private void onLongPressMenu(View pView) {
mPopupWindow = helperMethod.onCreateMenu(pView, R.layout.history_bookmark_menu);
mPopupWindow = helperMethod.onCreateMenu(pView, R.layout.history_bookmark_menu, status.sSettingLanguageRegion);
}
private void onDrawSwipableBackground(Canvas pCanvas, RecyclerView.ViewHolder pViewHolder, float pDX, int pActionState) {

View File

@ -62,9 +62,8 @@ public class bridgeController extends AppCompatActivity {
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
pluginController.getInstance().onLanguageInvoke(Collections.singletonList(this), pluginEnums.eLangManager.M_ACTIVITY_CREATED);
if(newConfig.uiMode != getResources().getConfiguration().uiMode){
if(activityThemeManager.getInstance().onInitTheme(this)){
activityContextManager.getInstance().onResetTheme();
activityThemeManager.getInstance().onConfigurationChanged(this);
}
super.onConfigurationChanged(newConfig);
@ -135,7 +134,7 @@ public class bridgeController extends AppCompatActivity {
public void onUpdateBridges(String pBridge, String pType) {
if(pBridge.length()>5){
mBridgeModel.onTrigger(bridgeEnums.eBridgeModelCommands.M_CUSTOM_BRIDGE, Arrays.asList(pBridge, pType));
mBridgeViewController.onTrigger(bridgeEnums.eBridgeViewCommands.M_INIT_VIEWS, Arrays.asList(status.sBridgeCustomBridge,250, status.sBridgeCustomType));
mBridgeViewController.onTrigger(bridgeEnums.eBridgeViewCommands.M_INIT_VIEWS, Arrays.asList(status.sBridgeCustomBridge,250));
}else {
if(status.sBridgeCustomBridge.equals("meek")){
mBridgeModel.onTrigger(bridgeEnums.eBridgeModelCommands.M_MEEK_BRIDGE, null);

View File

@ -18,9 +18,9 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.core.content.ContextCompat;
import com.darkweb.genesissearchengine.constants.status;
import com.darkweb.genesissearchengine.constants.strings;
import com.darkweb.genesissearchengine.helperManager.helperMethod;
import com.darkweb.genesissearchengine.helperManager.sharedUIMethod;
import com.example.myapplication.R;
import java.util.List;
@ -51,21 +51,7 @@ class bridgeViewController
}
private void initPostUI(){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = mContext.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) {
window.setStatusBarColor(ContextCompat.getColor(mContext, R.color.blue_dark));
mContext.getWindow().setStatusBarColor(ContextCompat.getColor(mContext, R.color.landing_ease_blue));
}
else {
if(AppCompatDelegate.getDefaultNightMode() == AppCompatDelegate.MODE_NIGHT_NO){
mContext.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
mContext.getWindow().setStatusBarColor(ContextCompat.getColor(mContext, R.color.c_background));
}
}
sharedUIMethod.updateStatusBar(mContext);
}
private void animateColor(TextView p_view, int p_from, int p_to, String p_command, int p_duration){
@ -107,7 +93,7 @@ class bridgeViewController
mCustomBridgeBlocker.setVisibility(View.GONE);
}
private void initViews(String p_bridge, int p_duration, String pType){
private void initViews(String p_bridge, int p_duration){
resetRadioButtons(p_duration);
if(p_bridge.equals(strings.BRIDGE_CUSTOM_BRIDGE_OBFS4)){
animateColor(mBridgeObfs, mBridgeObfs.getCurrentTextColor(), mContext.getResources().getColor(R.color.c_text_v1), "textColor", p_duration);
@ -127,13 +113,13 @@ class bridgeViewController
mCustomPort.setText(strings.GENERIC_EMPTY_STR);
}else {
onEnableCustomBridge();
mCustomPort.setText(("(Type) " + pType + " ➔ " + "(Config) "+p_bridge.replace("\n","")));
mCustomPort.setText(("(Config) "+p_bridge.replace("\n","")));
}
}
public void onTrigger(bridgeEnums.eBridgeViewCommands p_commands, List<Object> p_data){
if(p_commands == bridgeEnums.eBridgeViewCommands.M_INIT_VIEWS){
initViews((String) p_data.get(0), (int)p_data.get(1), (String) p_data.get(2));
initViews((String) p_data.get(0), (int)p_data.get(1));
}
if(p_commands == bridgeEnums.eBridgeViewCommands.M_ENABLE_CUSTOM_BRIDGE){
onEnableCustomBridge();

View File

@ -11,7 +11,7 @@ import com.darkweb.genesissearchengine.dataManager.dataController;
import com.darkweb.genesissearchengine.helperManager.helperMethod;
import com.example.myapplication.R;
import org.torproject.android.service.wrapper.orbotLocalConstants;
import org.torproject.android.proxy.wrapper.orbotLocalConstants;
public class externalShortcutController extends AppCompatActivity {

View File

@ -28,6 +28,8 @@ import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.ItemTouchHelper;
import androidx.recyclerview.widget.RecyclerView;
import com.darkweb.genesissearchengine.constants.status;
import com.darkweb.genesissearchengine.constants.strings;
import com.darkweb.genesissearchengine.helperManager.helperMethod;
import com.example.myapplication.R;
@ -268,7 +270,7 @@ class historyViewController
}
private void onLongPressMenu(View pView) {
mPopupWindow = helperMethod.onCreateMenu(pView, R.layout.history_bookmark_menu);
mPopupWindow = helperMethod.onCreateMenu(pView, R.layout.history_bookmark_menu, status.sSettingLanguageRegion);
}
private void onDrawSwipableBackground(Canvas pCanvas, RecyclerView.ViewHolder pViewHolder, float pDX, int pActionState) {

View File

@ -77,7 +77,8 @@ import static com.darkweb.genesissearchengine.pluginManager.pluginEnums.eMessage
import static org.mozilla.geckoview.GeckoSessionSettings.USER_AGENT_MODE_DESKTOP;
import static org.mozilla.geckoview.GeckoSessionSettings.USER_AGENT_MODE_MOBILE;
public class geckoSession extends GeckoSession implements GeckoSession.MediaDelegate,GeckoSession.ScrollDelegate,GeckoSession.PermissionDelegate,GeckoSession.ProgressDelegate, GeckoSession.HistoryDelegate,GeckoSession.NavigationDelegate,GeckoSession.ContentDelegate
public class
geckoSession extends GeckoSession implements GeckoSession.MediaDelegate,GeckoSession.ScrollDelegate,GeckoSession.PermissionDelegate,GeckoSession.ProgressDelegate, GeckoSession.HistoryDelegate,GeckoSession.NavigationDelegate,GeckoSession.ContentDelegate
{
private eventObserver.eventListener event;
@ -128,6 +129,7 @@ public class geckoSession extends GeckoSession implements GeckoSession.MediaDele
setScrollDelegate(this);
mDownloadManager = new geckoDownloadManager();
setPromptDelegate(new geckoPromptView(mContext));
setSelectionActionDelegate(new selectionActionDelegate(mContext, true));
}
public void onDestroy(){
@ -408,12 +410,10 @@ public class geckoSession extends GeckoSession implements GeckoSession.MediaDele
if(var2.equals("https://genesishiddentechnologies.com") || var2.startsWith(CONST_GENESIS_URL_CACHED) || var2.startsWith(CONST_GENESIS_URL_CACHED_DARK)){
if(var2.startsWith(CONST_GENESIS_URL_CACHED_DARK) && (status.sTheme == enums.Theme.THEME_LIGHT || helperMethod.isDayMode(mContext.get()))){
isPageLoading = false;
//stop();
event.invokeObserver(null, enums.etype.M_CHANGE_HOME_THEME);
}
else if(var2.startsWith(CONST_GENESIS_URL_CACHED) && (status.sTheme != enums.Theme.THEME_LIGHT && !helperMethod.isDayMode(mContext.get()))){
isPageLoading = false;
//stop();
event.invokeObserver(null, enums.etype.M_CHANGE_HOME_THEME);
}
}

View File

@ -0,0 +1,447 @@
package com.darkweb.genesissearchengine.appManager.homeManager.geckoManager;
import android.annotation.TargetApi;
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Matrix;
import android.graphics.Rect;
import android.graphics.RectF;
import android.os.Build;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.UiThread;
import android.util.Log;
import android.view.ActionMode;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import com.darkweb.genesissearchengine.appManager.activityContextManager;
import org.mozilla.gecko.util.ThreadUtils;
import org.mozilla.geckoview.GeckoSession;
/**
* Class that implements a basic SelectionActionDelegate. This class is used by GeckoView by
* default if the consumer does not explicitly set a SelectionActionDelegate.
*
* To provide custom actions, extend this class and override the following methods,
*
* 1) Override {@link #getAllActions} to include custom action IDs in the returned array. This
* array must include all actions, available or not, and must not change over the class lifetime.
*
* 2) Override {@link #isActionAvailable} to return whether a custom action is currently available.
*
* 3) Override {@link #prepareAction} to set custom title and/or icon for a custom action.
*
* 4) Override {@link #performAction} to perform a custom action when used.
*/
@UiThread
public class selectionActionDelegate implements ActionMode.Callback,
GeckoSession.SelectionActionDelegate {
private static final String LOGTAG = "BasicSelectionAction";
protected static final String ACTION_PROCESS_TEXT = Intent.ACTION_PROCESS_TEXT;
private static final String[] FLOATING_TOOLBAR_ACTIONS = new String[] {
ACTION_CUT, ACTION_COPY, ACTION_PASTE, ACTION_SELECT_ALL, ACTION_PROCESS_TEXT, "SEARCH"
};
private static final String[] FIXED_TOOLBAR_ACTIONS = new String[] {
ACTION_SELECT_ALL, ACTION_CUT, ACTION_COPY, ACTION_PASTE,"SEARCH"
};
protected final @NonNull Activity mActivity;
protected final boolean mUseFloatingToolbar;
protected final @NonNull Matrix mTempMatrix = new Matrix();
protected final @NonNull RectF mTempRect = new RectF();
private boolean mExternalActionsEnabled;
protected @Nullable ActionMode mActionMode;
protected @Nullable GeckoSession mSession;
protected @Nullable Selection mSelection;
protected boolean mRepopulatedMenu;
@TargetApi(Build.VERSION_CODES.M)
private class Callback2Wrapper extends ActionMode.Callback2 {
@Override
public boolean onCreateActionMode(final ActionMode actionMode, final Menu menu) {
return selectionActionDelegate.this.onCreateActionMode(actionMode, menu);
}
@Override
public boolean onPrepareActionMode(final ActionMode actionMode, final Menu menu) {
return selectionActionDelegate.this.onPrepareActionMode(actionMode, menu);
}
@Override
public boolean onActionItemClicked(final ActionMode actionMode, final MenuItem menuItem) {
return selectionActionDelegate.this.onActionItemClicked(actionMode, menuItem);
}
@Override
public void onDestroyActionMode(final ActionMode actionMode) {
selectionActionDelegate.this.onDestroyActionMode(actionMode);
}
@Override
public void onGetContentRect(final ActionMode mode, final View view, final Rect outRect) {
super.onGetContentRect(mode, view, outRect);
selectionActionDelegate.this.onGetContentRect(mode, view, outRect);
}
}
@SuppressWarnings("checkstyle:javadocmethod")
public selectionActionDelegate(final @NonNull Activity activity) {
this(activity, Build.VERSION.SDK_INT >= 23);
}
@SuppressWarnings("checkstyle:javadocmethod")
public selectionActionDelegate(final @NonNull Activity activity,
final boolean useFloatingToolbar) {
mActivity = activity;
mUseFloatingToolbar = useFloatingToolbar;
mExternalActionsEnabled = true;
}
/**
* Set whether to include text actions from other apps in the floating toolbar.
*
* @param enable True if external actions should be enabled.
*/
public void enableExternalActions(final boolean enable) {
ThreadUtils.assertOnUiThread();
mExternalActionsEnabled = enable;
if (mActionMode != null) {
mActionMode.invalidate();
}
}
/**
* Get whether text actions from other apps are enabled.
*
* @return True if external actions are enabled.
*/
public boolean areExternalActionsEnabled() {
return mExternalActionsEnabled;
}
/**
* Return list of all actions in proper order, regardless of their availability at present.
* Override to add to or remove from the default set.
*
* @return Array of action IDs in proper order.
*/
protected @NonNull String[] getAllActions() {
return mUseFloatingToolbar ? FLOATING_TOOLBAR_ACTIONS
: FIXED_TOOLBAR_ACTIONS;
}
/**
* Return whether an action is presently available. Override to indicate
* availability for custom actions.
*
* @param id Action ID.
* @return True if the action is presently available.
*/
protected boolean isActionAvailable(final @NonNull String id) {
if (mSelection == null) {
return false;
}
if (mExternalActionsEnabled && !mSelection.text.isEmpty() &&
ACTION_PROCESS_TEXT.equals(id)) {
final PackageManager pm = mActivity.getPackageManager();
return pm.resolveActivity(getProcessTextIntent(),
PackageManager.MATCH_DEFAULT_ONLY) != null;
}
if(id.equals("SEARCH")){
return true;
}
return mSelection.isActionAvailable(id);
}
/**
* Provides access to whether there are text selection actions available. Override to indicate
* availability for custom actions.
*
* @return True if there are text selection actions available.
*/
public boolean isActionAvailable() {
if (mSelection == null) {
return false;
}
return isActionAvailable(ACTION_PROCESS_TEXT) ||
!mSelection.availableActions.isEmpty();
}
/**
* Prepare a menu item corresponding to a certain action. Override to prepare
* menu item for custom action.
*
* @param id Action ID.
* @param item New menu item to prepare.
*/
protected void prepareAction(final @NonNull String id, final @NonNull MenuItem item) {
switch (id) {
case ACTION_CUT:
item.setTitle(android.R.string.cut);
break;
case ACTION_COPY:
item.setTitle(android.R.string.copy);
break;
case "SEARCH":
item.setTitle("Search");
break;
case ACTION_PASTE:
item.setTitle(android.R.string.paste);
break;
case ACTION_SELECT_ALL:
item.setTitle(android.R.string.selectAll);
break;
case ACTION_PROCESS_TEXT:
throw new IllegalStateException("Unexpected action");
}
}
/**
* Perform the specified action. Override to perform custom actions.
*
* @param id Action ID.
* @param item Nenu item for the action.
* @return True if the action was performed.
*/
protected boolean performAction(final @NonNull String id, final @NonNull MenuItem item) {
if (ACTION_PROCESS_TEXT.equals(id)) {
try {
mActivity.startActivity(item.getIntent());
} catch (final ActivityNotFoundException e) {
Log.e(LOGTAG, "Cannot perform action", e);
return false;
}
return true;
}
if (mSelection == null) {
return false;
}
if (id.equals("SEARCH")) {
activityContextManager.getInstance().getHomeController().onSearchString(mSelection.text);
mActionMode.finish();
return false;
}
mSelection.execute(id);
// Android behavior is to clear selection on copy.
if (ACTION_COPY.equals(id)) {
if (mUseFloatingToolbar) {
clearSelection();
} else {
mActionMode.finish();
}
}
return true;
}
/**
* Get the current selection object. This object should not be stored as it does not update
* when the selection becomes invalid. Stale actions are ignored.
*
* @return The {@link GeckoSession.SelectionActionDelegate.Selection} attached to the current
* action menu. <code>null</code> if no action menu is active.
*/
public @Nullable Selection getSelection() {
return mSelection;
}
/**
* Clear the current selection, if possible.
*/
public void clearSelection() {
if (mSelection == null) {
return;
}
if (isActionAvailable(ACTION_COLLAPSE_TO_END)) {
mSelection.collapseToEnd();
} else if (isActionAvailable(ACTION_UNSELECT)) {
mSelection.unselect();
} else {
mSelection.hide();
}
}
private Intent getProcessTextIntent() {
final Intent intent = new Intent(Intent.ACTION_PROCESS_TEXT);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_PROCESS_TEXT, mSelection.text);
// TODO: implement ability to replace text in Gecko for editable selection (bug 1453137).
intent.putExtra(Intent.EXTRA_PROCESS_TEXT_READONLY, true);
return intent;
}
@Override
public boolean onCreateActionMode(final ActionMode actionMode, final Menu menu) {
ThreadUtils.assertOnUiThread();
final String[] allActions = getAllActions();
for (final String actionId : allActions) {
if (isActionAvailable(actionId)) {
if (!mUseFloatingToolbar && (
Build.VERSION.SDK_INT == 22 || Build.VERSION.SDK_INT == 23)) {
// Android bug where onPrepareActionMode is not called initially.
onPrepareActionMode(actionMode, menu);
}
return true;
}
}
return false;
}
@Override
public boolean onPrepareActionMode(final ActionMode actionMode, final Menu menu) {
ThreadUtils.assertOnUiThread();
final String[] allActions = getAllActions();
boolean changed = false;
// Whether we are repopulating an existing menu.
mRepopulatedMenu = menu.size() != 0;
// For each action, see if it's available at present, and if necessary,
// add to or remove from menu.
for (int i = 0; i < allActions.length; i++) {
final String actionId = allActions[i];
final int menuId = i + Menu.FIRST;
if (ACTION_PROCESS_TEXT.equals(actionId)) {
if (mExternalActionsEnabled && !mSelection.text.isEmpty()) {
menu.addIntentOptions(menuId, menuId, menuId,
mActivity.getComponentName(),
/* specifiec */ null, getProcessTextIntent(),
/* flags */ 0, /* items */ null);
changed = true;
} else if (menu.findItem(menuId) != null) {
menu.removeGroup(menuId);
changed = true;
}
continue;
}
if (isActionAvailable(actionId)) {
if (menu.findItem(menuId) == null) {
prepareAction(actionId, menu.add(/* group */ Menu.NONE, menuId,
menuId, /* title */ ""));
changed = true;
}
} else if (menu.findItem(menuId) != null) {
menu.removeItem(menuId);
changed = true;
}
}
return changed;
}
@Override
public boolean onActionItemClicked(final ActionMode actionMode, final MenuItem menuItem) {
ThreadUtils.assertOnUiThread();
MenuItem realMenuItem = null;
if (mRepopulatedMenu) {
// When we repopulate an existing menu, Android can sometimes give us an old,
// deleted MenuItem. Find the current MenuItem that corresponds to the old one.
final Menu menu = actionMode.getMenu();
final int size = menu.size();
for (int i = 0; i < size; i++) {
final MenuItem item = menu.getItem(i);
if (item == menuItem || (item.getItemId() == menuItem.getItemId() &&
item.getTitle().equals(menuItem.getTitle()))) {
realMenuItem = item;
break;
}
}
} else {
realMenuItem = menuItem;
}
if (realMenuItem == null) {
return false;
}
final String[] allActions = getAllActions();
return performAction(allActions[realMenuItem.getItemId() - Menu.FIRST], realMenuItem);
}
@Override
public void onDestroyActionMode(final ActionMode actionMode) {
ThreadUtils.assertOnUiThread();
if (!mUseFloatingToolbar) {
clearSelection();
}
mSession = null;
mSelection = null;
mActionMode = null;
}
@SuppressWarnings("checkstyle:javadocmethod")
public void onGetContentRect(final @Nullable ActionMode mode, final @Nullable View view,
final @NonNull Rect outRect) {
ThreadUtils.assertOnUiThread();
if (mSelection == null || mSelection.clientRect == null) {
return;
}
mSession.getClientToScreenMatrix(mTempMatrix);
mTempMatrix.mapRect(mTempRect, mSelection.clientRect);
mTempRect.roundOut(outRect);
}
@TargetApi(Build.VERSION_CODES.M)
@Override
public void onShowActionRequest(final GeckoSession session, final Selection selection) {
ThreadUtils.assertOnUiThread();
mSession = session;
mSelection = selection;
if (mActionMode != null) {
if (isActionAvailable()) {
mActionMode.invalidate();
} else {
mActionMode.finish();
}
return;
}
if (mUseFloatingToolbar) {
mActionMode = mActivity.startActionMode(new Callback2Wrapper(),
ActionMode.TYPE_FLOATING);
} else {
mActionMode = mActivity.startActionMode(this);
}
}
@Override
public void onHideAction(final GeckoSession session, final int reason) {
ThreadUtils.assertOnUiThread();
if (mActionMode == null) {
return;
}
switch (reason) {
case HIDE_REASON_ACTIVE_SCROLL:
case HIDE_REASON_ACTIVE_SELECTION:
case HIDE_REASON_INVISIBLE_SELECTION:
if (mUseFloatingToolbar) {
// Hide the floating toolbar when scrolling/selecting.
mActionMode.finish();
}
break;
case HIDE_REASON_NO_SELECTION:
mActionMode.finish();
break;
}
}
}

View File

@ -1,7 +1,7 @@
package com.darkweb.genesissearchengine.appManager.homeManager.homeController;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.ActivityOptions;
import android.app.DownloadManager;
import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver;
@ -78,8 +78,10 @@ import org.mozilla.geckoview.GeckoResult;
import org.mozilla.geckoview.GeckoSession;
import org.torproject.android.proxy.OrbotService;
import org.torproject.android.proxy.util.Prefs;
import org.torproject.android.service.wrapper.LocaleHelper;
import org.torproject.android.service.wrapper.orbotLocalConstants;
import org.torproject.android.proxy.wrapper.LocaleHelper;
import org.torproject.android.proxy.wrapper.orbotLocalConstants;
import java.io.StringWriter;
import java.lang.ref.WeakReference;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
@ -91,6 +93,7 @@ import java.util.Locale;
import java.util.Objects;
import java.util.concurrent.Callable;
import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
import static android.content.Intent.FLAG_ACTIVITY_NO_ANIMATION;
import static com.darkweb.genesissearchengine.constants.constants.CONST_GENESIS_HELP_URL_CACHE;
import static com.darkweb.genesissearchengine.constants.constants.CONST_GENESIS_HELP_URL_CACHE_DARK;
import static com.darkweb.genesissearchengine.constants.constants.CONST_GENESIS_URL_CACHED;
@ -192,6 +195,19 @@ public class homeController extends AppCompatActivity implements ComponentCallba
super.onCreate(savedInstanceState);
setContentView(R.layout.home_view);
Thread.setDefaultUncaughtExceptionHandler((t, e) -> {
status.sSettingIsAppStarted = false;
finishAndRemoveTask();
Intent intent = new Intent(this, homeController.class);
intent.addFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_NO_ANIMATION);
intent.putExtra("crash",true);
this.startActivity(intent);
this.finish();
Runtime.getRuntime().exit(0);
});
initPreFixes();
activityContextManager.getInstance().setHomeController(this);
pluginController.getInstance().initializeAllServices(this);
@ -279,6 +295,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
initSuggestionView(new ArrayList<>(), strings.GENERIC_EMPTY_STR);
}
public void onLoadTabFromTabController(){
Object mTempModel = dataController.getInstance().invokeTab(dataEnums.eTabCommands.GET_CURRENT_TAB, null);
@ -323,8 +340,6 @@ public class homeController extends AppCompatActivity implements ComponentCallba
mHomeViewController.onUpdateSearchBar(model.getSession().getCurrentURL(), false, false, false);
}
onLoadTab(model.getSession(),false,true);
//onLoadURL(model.getSession().getCurrentURL());
//mGeckoClient.onReload(mGeckoView, this);
}else {
onNewIntent(getIntent());
onOpenLinkNewTab(helperMethod.getDomainName(mHomeModel.getSearchEngine()));
@ -366,7 +381,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
}
private void initLocalLanguage() {
pluginController.getInstance().onLanguageInvoke(Collections.singletonList(this),pluginEnums.eLangManager.M_SET_LANGUAGE);
pluginController.getInstance().onLanguageInvoke(Arrays.asList(this, status.sSettingLanguage, status.sSettingLanguageRegion, status.mThemeApplying),pluginEnums.eLangManager.M_SET_LANGUAGE);
}
@Override
@ -464,6 +479,13 @@ public class homeController extends AppCompatActivity implements ComponentCallba
public void initPreFixes() {
try {
if(getIntent().getBooleanExtra("crash", false)){
new Handler().postDelayed(() ->
{
pluginController.getInstance().onMessageManagerInvoke(Collections.singletonList(homeController.this), M_APPLICATION_CRASH);
}, 2000);
}
if(!status.mThemeApplying){
orbotLocalConstants.mTorLogsStatus = strings.GENERIC_EMPTY_STR;
}
@ -547,6 +569,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
mGeckoClient.initialize(mGeckoView, new geckoViewCallback(), this,false);
}
public void onLoadURL(String url){
if(mGeckoView.getSession()!=null && !mGeckoView.getSession().isOpen()){
mGeckoView.getSession().open(mGeckoClient.getmRuntime());
@ -698,7 +721,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
super.onDestroy();
return;
}
pluginController.getInstance().onOrbotInvoke(null, pluginEnums.eOrbotManager.M_DESTROY);
pluginController.getInstance().onOrbotInvoke(Collections.singletonList(status.mThemeApplying), pluginEnums.eOrbotManager.M_DESTROY);
mBackSplash.setImageDrawable(null);
mBackSplash.setBackground(null);
@ -965,6 +988,14 @@ public class homeController extends AppCompatActivity implements ComponentCallba
onLoadURL(url);
}
public void onSearchString(String pString){
String validated_url = mHomeModel.urlComplete(pString, mHomeModel.getSearchEngine());
pString = validated_url;
mHomeViewController.onUpdateSearchBar(pString,false,true, false);
onLoadURL(pString);
}
public void onSuggestionInvoked(View view){
String mVal = ((TextView)view.findViewById(R.id.pURL)).getText().toString();
if(mVal.equals(strings.GENERIC_EMPTY_STR)){
@ -1382,7 +1413,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
isFocusChanging = false;
isSuggestionSearchOpened = false;
mSearchbar.requestFocus();
mSearchbar.setText(helperMethod.urlDesigner(mSearchBarPreviousText, this, mSearchbar.getCurrentTextColor()));
mSearchbar.setText(helperMethod.urlDesigner(mSearchBarPreviousText, this, mSearchbar.getCurrentTextColor(), status.sTheme));
mSearchbar.selectAll();
mHomeViewController.initSearchBarFocus(true, isKeyboardOpened);
}
@ -1451,7 +1482,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
isFocusChanging = false;
isSuggestionSearchOpened = false;
mSearchbar.requestFocus();
mSearchbar.setText(helperMethod.urlDesigner(mSearchBarPreviousText, this, mSearchbar.getCurrentTextColor()));
mSearchbar.setText(helperMethod.urlDesigner(mSearchBarPreviousText, this, mSearchbar.getCurrentTextColor(), status.sTheme));
mSearchbar.selectAll();
mHomeViewController.initSearchBarFocus(true, isKeyboardOpened);
}
@ -1536,7 +1567,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
}
public void onStartApplication(View view){
pluginController.getInstance().onOrbotInvoke(null, pluginEnums.eOrbotManager.M_START_ORBOT);
pluginController.getInstance().onOrbotInvoke(Arrays.asList(status.sBridgeCustomBridge, status.sBridgeGatewayManual, status.sBridgeCustomType, status.sBridgeStatus, status.sShowImages, status.sClearOnExit, (String)dataController.getInstance().invokeBridges(dataEnums.eBridgeWebsiteCommands.M_FETCH, null)), pluginEnums.eOrbotManager.M_START_ORBOT);
onInvokeProxyLoading();
mHomeViewController.initHomePage();
}
@ -1709,7 +1740,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
}
else if (menuId == R.id.pMenuQuit)
{
pluginController.getInstance().onOrbotInvoke(null, pluginEnums.eOrbotManager.M_DESTROY);
pluginController.getInstance().onOrbotInvoke(Collections.singletonList(status.mThemeApplying), pluginEnums.eOrbotManager.M_DESTROY);
new Handler().postDelayed(() ->
{
@ -1852,6 +1883,8 @@ public class homeController extends AppCompatActivity implements ComponentCallba
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_OPEN_URL_IN_NEW_TAB,true));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_POPUP,true));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_STRING, Arrays.asList(keys.BRIDGE_CUSTOM_TYPE,strings.BRIDGE_CUSTOM_BRIDGE_OBFS4));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.BRIDGE_ENABLES,false));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_GATEWAY_MANUAL,false));
dataController.getInstance().invokeTab(dataEnums.eTabCommands.M_CLEAR_TAB, null);
@ -1869,15 +1902,14 @@ public class homeController extends AppCompatActivity implements ComponentCallba
pluginController.getInstance().onMessageManagerInvoke(Collections.singletonList(this), M_DATA_CLEARED);
activityContextManager.getInstance().getHomeController().onClearSettings();
status.sSettingIsAppStarted = false;
finishAndRemoveTask();
Intent intent = new Intent(this, homeController.class);
intent.addFlags(FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_NO_ANIMATION);
this.startActivity(intent);
overridePendingTransition(R.anim.popup_anim_in, R.anim.popup_anim_out);
((Activity) this).finish();
overridePendingTransition(R.anim.popup_scale_in, R.anim.popup_scale_out);
this.finish();
Runtime.getRuntime().exit(0);
@ -2214,7 +2246,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
}
}
else if(e_type.equals(enums.etype.on_load_error)){
pluginController.getInstance().onLanguageInvoke(Collections.singletonList(homeController.this), pluginEnums.eLangManager.M_SET_LANGUAGE);
pluginController.getInstance().onLanguageInvoke(Arrays.asList(homeController.this, status.sSettingLanguage, status.sSettingLanguageRegion, status.mThemeApplying), pluginEnums.eLangManager.M_SET_LANGUAGE);
initLocalLanguage();
mHomeViewController.onPageFinished();
mGeckoClient.onRedrawPixel(homeController.this);

View File

@ -48,7 +48,7 @@ import com.example.myapplication.R;
import com.google.android.gms.ads.AdView;
import com.google.android.material.appbar.AppBarLayout;
import org.mozilla.geckoview.GeckoView;
import org.torproject.android.service.wrapper.orbotLocalConstants;
import org.torproject.android.proxy.wrapper.orbotLocalConstants;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@ -493,7 +493,7 @@ class homeViewController
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
ColorAnimator oneToTwo = new ColorAnimator(ContextCompat.getColor(mContext, R.color.landing_ease_blue), ContextCompat.getColor(mContext, R.color.green_dark_v2));
int mDelay = 1350;
int mDelay = 500;
if(status.mThemeApplying || mInstant){
mDelay = 0;
}
@ -503,8 +503,8 @@ class homeViewController
animator.addUpdateListener(animation ->
{
float v = (float) animation.getAnimatedValue();
mContext.getWindow().setStatusBarColor(oneToTwo.with(v));
mContext.getWindow().setStatusBarColor(oneToTwo.with(v));
mSplashScreen.setAlpha(1-v);
mContext.getWindow().setStatusBarColor(oneToTwo.with(v*1f));
mContext.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
});
animator.addListener(new AnimatorListenerAdapter() {
@ -526,7 +526,6 @@ class homeViewController
}
}
});
animator.start();
}else {
mContext.getWindow().setStatusBarColor(ContextCompat.getColor(mContext, R.color.c_background));
@ -651,8 +650,12 @@ class homeViewController
onClearSelections(false);
mGeckoView.requestFocus();
mProgressBarIndeterminate.animate().cancel();
mProgressBarIndeterminate.animate().setStartDelay(750).setDuration(250).alpha(0).withEndAction(() -> {
mSplashScreen.animate().setDuration(250).setStartDelay(300).alpha(0).withEndAction(() -> {
mProgressBarIndeterminate.animate().setStartDelay(350).setDuration(250).alpha(0).withEndAction(() -> {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
initStatusBarColor(false);
}
mSplashScreen.animate().setDuration(0).setStartDelay(1000).alpha(0).withEndAction(() -> {
mProgressBarIndeterminate.setVisibility(View.GONE);
mSplashScreen.setClickable(false);
mSplashScreen.setFocusable(false);
@ -671,9 +674,6 @@ class homeViewController
});
mEvent.invokeObserver(null, enums.etype.M_WELCOME_MESSAGE);
mOrbotLogManager.setClickable(false);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
initStatusBarColor(false);
}
status.sSettingIsAppRestarting = true;
}
}
@ -1161,7 +1161,7 @@ class homeViewController
if(url.length()<=300){
url = removeEndingSlash(url);
mSearchbar.setText(helperMethod.urlDesigner(url, mContext, mSearchbar.getCurrentTextColor()));
mSearchbar.setText(helperMethod.urlDesigner(url, mContext, mSearchbar.getCurrentTextColor(), status.sTheme));
mSearchbar.selectAll();
if(isTextSelected){
@ -1224,6 +1224,7 @@ class homeViewController
}
mProgressBar.setVisibility(View.VISIBLE);
mProgressBar.setAlpha(1);
mProgressBar.animate().cancel();
if(value != mProgressBar.getProgress()){
@ -1234,8 +1235,6 @@ class homeViewController
}
if(value >= 100 || value<=0){
mProgressBar.animate().alpha(0).setStartDelay(200).withEndAction(() -> mProgressBar.setProgress(0));
}else {
mProgressBar.setAlpha(1);
}
}
}

View File

@ -154,7 +154,7 @@ public class languageController extends AppCompatActivity {
getIntent().putExtra("activity_restarted",((LinearLayoutManager) Objects.requireNonNull(mRecycleView.getLayoutManager())).findFirstCompletelyVisibleItemPosition());
helperMethod.restartActivity(getIntent(), this);
overridePendingTransition(R.anim.fade_in_lang, R.anim.fade_out_lang);
pluginController.getInstance().onLanguageInvoke(Collections.singletonList(this), pluginEnums.eLangManager.M_SET_LANGUAGE);
pluginController.getInstance().onLanguageInvoke(Arrays.asList(this, status.sSettingLanguage, status.sSettingLanguageRegion, status.sTheme), pluginEnums.eLangManager.M_SET_LANGUAGE);
if(activityContextManager.getInstance().getSettingController()!=null && !activityContextManager.getInstance().getSettingController().isDestroyed()){
activityContextManager.getInstance().getSettingController().onRedrawXML();
@ -209,7 +209,7 @@ public class languageController extends AppCompatActivity {
mLanguageViewController.onTrigger(languageEnums.eLanguagevViewController.M_UPDATE_BLOCKER, Collections.singletonList(true));
}
else if(e_type.equals(languageEnums.eLanguageAdapterCallback.M_SYSTEM_LANGUAGE_SUPPORT_INFO)){
return pluginController.getInstance().onLanguageInvoke(null, M_SUPPORTED_SYSTEM_LANGUAGE_INFO);
return pluginController.getInstance().onLanguageInvoke(Collections.singletonList(status.sSettingLanguage), M_SUPPORTED_SYSTEM_LANGUAGE_INFO);
}
return null;
}

View File

@ -15,7 +15,7 @@ import com.darkweb.genesissearchengine.appManager.tabManager.tabEnums;
import com.darkweb.genesissearchengine.constants.constants;
import com.darkweb.genesissearchengine.eventObserver;
import com.example.myapplication.R;
import org.torproject.android.service.wrapper.logRowModel;
import org.torproject.android.proxy.wrapper.logRowModel;
import java.util.ArrayList;
import java.util.List;

View File

@ -28,8 +28,8 @@ import com.darkweb.genesissearchengine.pluginManager.pluginEnums;
import com.example.myapplication.R;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import org.torproject.android.service.wrapper.logRowModel;
import org.torproject.android.service.wrapper.orbotLocalConstants;
import org.torproject.android.proxy.wrapper.logRowModel;
import org.torproject.android.proxy.wrapper.orbotLocalConstants;
import java.util.ArrayList;
import java.util.Collections;

View File

@ -2,7 +2,7 @@ package com.darkweb.genesissearchengine.appManager.orbotLogManager;
import com.darkweb.genesissearchengine.constants.constants;
import com.darkweb.genesissearchengine.helperManager.helperMethod;
import org.torproject.android.service.wrapper.logRowModel;
import org.torproject.android.proxy.wrapper.logRowModel;
import java.util.ArrayList;
import java.util.List;

View File

@ -60,9 +60,8 @@ public class orbotController extends AppCompatActivity {
public void onConfigurationChanged(@NonNull Configuration newConfig) {
pluginController.getInstance().onLanguageInvoke(Collections.singletonList(this), pluginEnums.eLangManager.M_ACTIVITY_CREATED);
if(newConfig.uiMode != getResources().getConfiguration().uiMode){
if(activityThemeManager.getInstance().onInitTheme(this)){
activityContextManager.getInstance().onResetTheme();
activityThemeManager.getInstance().onConfigurationChanged(this);
}
super.onConfigurationChanged(newConfig);
@ -152,7 +151,6 @@ public class orbotController extends AppCompatActivity {
public boolean inSignatureArea(MotionEvent ev) {
float mEventY = ev.getY();
float mEventX = ev.getX();
Log.i("FUCKSSSS", helperMethod.getScreenWidth(this)-ev.getX() + "----" + ev.getX());
return mEventY>helperMethod.pxFromDp(500) || mEventX>helperMethod.getScreenWidth(this)-helperMethod.pxFromDp(80);
}

View File

@ -1,14 +1,9 @@
package com.darkweb.genesissearchengine.appManager.orbotManager;
import android.os.Build;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.LinearLayout;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.core.content.ContextCompat;
import com.example.myapplication.R;
import com.darkweb.genesissearchengine.helperManager.sharedUIMethod;
import com.google.android.material.switchmaterial.SwitchMaterial;
import java.util.List;
@ -34,21 +29,7 @@ class orbotViewController
}
private void initPostUI(){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = mContext.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) {
window.setStatusBarColor(mContext.getResources().getColor(R.color.blue_dark));
mContext.getWindow().setStatusBarColor(ContextCompat.getColor(mContext, R.color.landing_ease_blue));
}
else {
if(AppCompatDelegate.getDefaultNightMode() == AppCompatDelegate.MODE_NIGHT_NO){
mContext.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
}
mContext.getWindow().setStatusBarColor(ContextCompat.getColor(mContext, R.color.c_background));
}
}
sharedUIMethod.updateStatusBar(mContext);
}
private void bridgeSettingsStatus(boolean pStatus){

View File

@ -128,12 +128,8 @@ public class settingAdvanceController extends AppCompatActivity {
@Override
public void onBackPressed() {
if(mIsChanged){
pluginController.getInstance().onOrbotInvoke(null, pluginEnums.eOrbotManager.M_UPDATE_PRIVACY);
activityContextManager.getInstance().getHomeController().initRuntimeSettings();
}
onClose(null);
activityContextManager.getInstance().onRemoveStack(this);
finish();
}
/*UI Redirection*/
@ -146,7 +142,7 @@ public class settingAdvanceController extends AppCompatActivity {
public void onClose(View view){
if(mIsChanged){
pluginController.getInstance().onOrbotInvoke(null, pluginEnums.eOrbotManager.M_UPDATE_PRIVACY);
pluginController.getInstance().onOrbotInvoke(Arrays.asList(status.sShowImages, status.sClearOnExit), pluginEnums.eOrbotManager.M_UPDATE_PRIVACY);
activityContextManager.getInstance().getHomeController().initRuntimeSettings();
}
finish();

View File

@ -11,6 +11,7 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.core.content.ContextCompat;
import com.darkweb.genesissearchengine.appManager.activityContextManager;
import com.darkweb.genesissearchengine.appManager.bridgeManager.bridgeEnums;
import com.darkweb.genesissearchengine.appManager.helpManager.helpController;
import com.darkweb.genesissearchengine.constants.constants;
import com.darkweb.genesissearchengine.constants.enums;
@ -216,6 +217,9 @@ public class settingClearController extends AppCompatActivity {
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_POPUP,true));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_STRING, Arrays.asList(keys.BRIDGE_CUSTOM_TYPE,strings.BRIDGE_CUSTOM_BRIDGE_OBFS4));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.BRIDGE_ENABLES,false));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_GATEWAY_MANUAL,false));
if(mIsThemeChangable) {
status.mThemeApplying = true;
onBackPressed();

View File

@ -69,7 +69,7 @@ public class settingHomeController extends AppCompatActivity
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
pluginController.getInstance().onLanguageInvoke(Collections.singletonList(this), pluginEnums.eLangManager.M_ACTIVITY_CREATED);
if(activityThemeManager.getInstance().onInitTheme(this)){
if(activityThemeManager.getInstance().onInitTheme(this) && !status.mThemeApplying){
activityContextManager.getInstance().onResetTheme();
}

View File

@ -83,11 +83,17 @@ public class constants
public static final String CONST_NOTIFICATION_TITLE = "Genesis Browser";
public static final int CONST_NOTIFICATION_ID_VALUE = 1;
public static final int CONST_NOTIFICATION_REQUEST_CODE = 0;
public static final int mUserEngagementNotificationID = 1001;
/*Language CONSTANTS*/
public static final String CONST_LANGUAGE_DEFAULT_LANG = "default";
/*DOWNLOAD CONSTANTS*/
public static final String CONST_DOWNLOAD_COMMAND = "N_COMMAND";
public static final String CONST_DOWNLOAD_INTENT_KEY = "N_ID";
/*Helper CONSTANTS*/
public static final String CONST_HELP_MODEL_HEADER = "mHeader";
@ -95,6 +101,7 @@ public class constants
public static final String CONST_HELP_MODEL_ICON = "mIcon";
/*ENCRYPTION KEY*/
public static final String CONST_ENCRYPTION_KEY = "Zr4u7x!A%D*F-JaNdRgUkXp2s5v8y/B?";
public static final String CONST_ENCRYPTION_KEY_DATABASE = "Zr4u7x!!A%D*F-JaNdsS@@gUbbp^^5v8y/B?";

View File

@ -17,8 +17,7 @@ public class status
/*App Status*/
public static boolean sPaidStatus = false;
public static boolean sDeveloperBuild = true;
public static int mNotificationID = 1001;
public static boolean sDeveloperBuild = false;
/*Settings Status*/
public static Locale mSystemLocale = null;

View File

@ -125,6 +125,12 @@ public class dataController
return mReferenceWebsiteDataModel.onTrigger(pCommands, null);
}
/*Trigger Bridges*/
public Object invokeBridges(dataEnums.eBridgeWebsiteCommands pCommands, List<Object> pData){
return mBridgeWebsiteDataModel.onTrigger(pCommands, null);
}
/*Trigger Preferences*/
public Object invokePrefs(dataEnums.ePreferencesCommands pCommands, List<Object> pData){

View File

@ -1,7 +1,5 @@
package com.darkweb.genesissearchengine;
import com.darkweb.genesissearchengine.constants.enums;
import java.util.List;
public class eventObserver

View File

@ -4,12 +4,10 @@ import android.Manifest;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.annotation.SuppressLint;
import android.app.ActivityManager;
import android.app.DownloadManager;
import android.content.ActivityNotFoundException;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
@ -25,7 +23,6 @@ import android.graphics.drawable.Drawable;
import android.graphics.drawable.TransitionDrawable;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.os.Handler;
import android.os.Vibrator;
import android.text.SpannableString;
@ -36,10 +33,8 @@ import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewAnimationUtils;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.RotateAnimation;
import android.view.inputmethod.InputMethodManager;
import android.webkit.MimeTypeMap;
@ -53,16 +48,10 @@ import androidx.core.app.ShareCompat;
import androidx.core.content.ContextCompat;
import androidx.core.content.FileProvider;
import androidx.core.graphics.ColorUtils;
import com.darkweb.genesissearchengine.appManager.activityContextManager;
import com.darkweb.genesissearchengine.appManager.homeManager.FakeLauncherActivity;
import com.darkweb.genesissearchengine.constants.enums;
import com.darkweb.genesissearchengine.constants.keys;
import com.darkweb.genesissearchengine.constants.status;
import com.example.myapplication.R;
import org.xmlpull.v1.XmlPullParserException;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
@ -77,7 +66,6 @@ import java.net.URLConnection;
import java.security.Key;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Base64;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
@ -86,7 +74,6 @@ import java.util.UUID;
import java.util.concurrent.Callable;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.crypto.Cipher;
import javax.net.ssl.HttpsURLConnection;
import static android.content.Context.LAYOUT_INFLATER_SERVICE;
@ -216,10 +203,10 @@ public class helperMethod
return size.x;
}
public static SpannableString urlDesigner(String url, Context pContext, int pDefColor){
public static SpannableString urlDesigner(String url, Context pContext, int pDefColor, int pTheme){
int mColor = 0;
if(status.sTheme == enums.Theme.THEME_DARK){
if(pTheme == enums.Theme.THEME_DARK){
mColor = Color.argb(255, 0, 204, 71);
}else {
mColor = Color.argb(255, 0, 153, 54);
@ -790,7 +777,7 @@ public class helperMethod
return month + "/" + year + " | " + hour + ":" + minute + ":" + second;
}
public static PopupWindow onCreateMenu(View p_view, int p_layout) {
public static PopupWindow onCreateMenu(View p_view, int p_layout, String pSettingLanguageRegion) {
PopupWindow popupWindow;
LayoutInflater layoutInflater
@ -809,7 +796,7 @@ public class helperMethod
popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
popupWindow.setAnimationStyle(R.style.popup_window_animation);
if(status.sSettingLanguageRegion.equals("Ur")){
if(pSettingLanguageRegion.equals("Ur")){
popupWindow.showAtLocation(p_view, Gravity.TOP|Gravity.START,0,0);
}else {
popupWindow.showAtLocation(p_view, Gravity.TOP|Gravity.END,0,0);

View File

@ -80,9 +80,7 @@ public class adManager
@Override
public void onAdFailedToLoad(@NonNull LoadAdError var1) {
Log.i("sadsa","");
}
});
}
}

View File

@ -1,8 +1,6 @@
package com.darkweb.genesissearchengine.pluginManager.analyticPluginManager;
import androidx.appcompat.app.AppCompatActivity;
import com.darkweb.genesissearchengine.constants.status;
import com.darkweb.genesissearchengine.eventObserver;
import com.darkweb.genesissearchengine.pluginManager.pluginEnums;
import com.flurry.android.FlurryAgent;
@ -14,17 +12,20 @@ public class analyticManager
/*Private Variables*/
private WeakReference<AppCompatActivity> mAppContext;
private boolean mIsDeveloperBuild;
/*Initializations*/
public analyticManager(WeakReference<AppCompatActivity> pAppContext, eventObserver.eventListener pEvent){
public analyticManager(WeakReference<AppCompatActivity> pAppContext, eventObserver.eventListener pEvent, boolean pIsDeveloperBuild){
this.mAppContext = pAppContext;
this.mIsDeveloperBuild = pIsDeveloperBuild;
initialize();
}
private void initialize()
{
if(status.sDeveloperBuild){
if(mIsDeveloperBuild){
new FlurryAgent.Builder() .withLogEnabled(true) .build(mAppContext.get().getApplicationContext(), "4C4K4T5ND9RJKT4H47GQ");
}else {
new FlurryAgent.Builder() .withLogEnabled(true) .build(mAppContext.get().getApplicationContext(), "5RQYRV23928K6DXH8VWV");
@ -43,6 +44,7 @@ public class analyticManager
public void onTrigger(List<Object> pData, pluginEnums.eAnalyticManager pEventType) {
if(pEventType.equals(pluginEnums.eAnalyticManager.M_LOG_EVENT))
{
}
}
}

View File

@ -112,7 +112,7 @@ public class downloadReciever extends AsyncTask<String, Integer, String> {
.addAction(R.drawable.ic_download, "Cancel",pendingIntent)
.setSmallIcon(android.R.drawable.stat_sys_download);
build.setOngoing(Prefs.persistNotifications());
// build.setOngoing(Prefs.persistNotifications());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(mID + "",

View File

@ -4,10 +4,10 @@ import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Build;
import androidx.appcompat.app.AppCompatActivity;
import com.darkweb.genesissearchengine.constants.status;
import com.darkweb.genesissearchengine.eventObserver;
import com.darkweb.genesissearchengine.pluginManager.pluginEnums;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
@ -21,37 +21,37 @@ public class langManager {
/*Initializations*/
public langManager(AppCompatActivity pAppContext, eventObserver.eventListener pEvent, Locale pLanguage, Locale pSystemLocale) {
public langManager(AppCompatActivity pAppContext, eventObserver.eventListener pEvent, Locale pLanguage, Locale pSystemLocale, String pSettingLanguage, String pSettingRegionLanguage, boolean pThemeApplying) {
this.mEvent = pEvent;
this.mLanguage = pLanguage;
this.mSystemLocale = pSystemLocale;
onInitLanguage(pAppContext);
onInitLanguage(pAppContext, pSettingLanguage, pSettingRegionLanguage, pThemeApplying);
}
private boolean initLocale(){
if(!status.mThemeApplying){
private boolean initLocale(Boolean pThemeApplying){
if(!pThemeApplying){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Locale mSystemLocale = Resources.getSystem().getConfiguration().getLocales().get(0);
if(mSystemLocale!=status.mSystemLocale || !mSystemLocale.getLanguage().equals(mLanguage.getLanguage()) ){
status.mSystemLocale = mSystemLocale;
if(mSystemLocale!=mSystemLocale || !mSystemLocale.getLanguage().equals(mLanguage.getLanguage()) ){
mEvent.invokeObserver(Collections.singletonList(mSystemLocale), pluginEnums.eLangManager.M_UPDATE_LOCAL);
}
} else {
Locale mSystemLocale = Resources.getSystem().getConfiguration().locale;
if(mSystemLocale!=status.mSystemLocale || !mSystemLocale.getLanguage().equals(mLanguage.getLanguage())){
status.mSystemLocale = mSystemLocale;
if(mSystemLocale!=mSystemLocale || !mSystemLocale.getLanguage().equals(mLanguage.getLanguage())){
mEvent.invokeObserver(Collections.singletonList(mSystemLocale), pluginEnums.eLangManager.M_UPDATE_LOCAL);
}
}
}
return false;
}
private void onInitLanguage(AppCompatActivity pAppContext) {
if(status.sSettingLanguage.equals("default")){
private void onInitLanguage(AppCompatActivity pAppContext, String pSettingLanguage, String pSettingRegionLanguage, Boolean pThemeApplying) {
if(pSettingLanguage.equals("default")){
if(!mLanguage.getLanguage().equals(Resources.getSystem().getConfiguration().locale.getLanguage()) || !mLanguage.getCountry().equals(Resources.getSystem().getConfiguration().locale.getCountry()))
{
if(mSystemLocale==null){
initLocale();
initLocale(pThemeApplying);
}
String mSystemLangugage = mSystemLocale.toString();
if(mSystemLangugage.equals("en_US") || mSystemLangugage.equals("de_DE") || mSystemLangugage.equals("ur_UR") || mSystemLangugage.equals("ur_PK") || mSystemLangugage.equals("ca_ES") || mSystemLangugage.equals("zh_CN") || mSystemLangugage.equals("ch_CZ") || mSystemLangugage.equals("nl_NL") || mSystemLangugage.equals("fr_FR") || mSystemLangugage.equals("el_GR") || mSystemLangugage.equals("hu_HU") || mSystemLangugage.equals("in_ID") || mSystemLangugage.equals("it_IT") || mSystemLangugage.equals("ja_JP") || mSystemLangugage.equals("ko_KR") || mSystemLangugage.equals("pt_PT") || mSystemLangugage.equals("ro_RO") || mSystemLangugage.equals("ru_RU") || mSystemLangugage.equals("th_TH") || mSystemLangugage.equals("tr_TR") || mSystemLangugage.equals("uk_UA") || mSystemLangugage.equals("vi_VN")){
@ -69,7 +69,7 @@ public class langManager {
return;
}
}else {
mLanguage = new Locale(status.sSettingLanguage, status.sSettingLanguageRegion);
mLanguage = new Locale(pSettingLanguage, pSettingRegionLanguage);
}
Locale.setDefault(mLanguage);
@ -81,16 +81,16 @@ public class langManager {
/*Helper Methods*/
private void onCreate(AppCompatActivity pActivity) {
onInitLanguage(pActivity);
private void onCreate(AppCompatActivity pActivity, String pSettingLanguage, String pSettingRegionLanguage, Boolean pThemeApplying) {
onInitLanguage(pActivity, pSettingLanguage, pSettingRegionLanguage, pThemeApplying);
}
private void onResume(AppCompatActivity pActivity) {
onInitLanguage(pActivity);
private void onResume(AppCompatActivity pActivity, String pSettingLanguage, String pSettingRegionLanguage, Boolean pThemeApplying) {
onInitLanguage(pActivity, pSettingLanguage, pSettingRegionLanguage, pThemeApplying);
}
private String getSupportedSystemLanguageInfo() {
if(status.sSettingLanguage.equals("default")){
private String getSupportedSystemLanguageInfo(String pSettingLanguage) {
if(pSettingLanguage.equals("default")){
Locale mSystemLocale = Resources.getSystem().getConfiguration().locale;
String mSystemLangugage = mSystemLocale.toString();
@ -109,20 +109,20 @@ public class langManager {
public Object onTrigger(List<Object> pData, pluginEnums.eLangManager pEventType) {
if(pEventType.equals(pluginEnums.eLangManager.M_ACTIVITY_CREATED))
{
onCreate((AppCompatActivity) pData.get(0));
onCreate((AppCompatActivity) pData.get(0), (String)pData.get(1), (String)pData.get(2), (boolean)pData.get(3));
}
else if(pEventType.equals(pluginEnums.eLangManager.M_RESUME))
{
initLocale();
onResume((AppCompatActivity) pData.get(0));
initLocale((boolean)pData.get(3));
onResume((AppCompatActivity) pData.get(0), (String)pData.get(1), (String)pData.get(2), (boolean)pData.get(3));
}
else if(pEventType.equals(pluginEnums.eLangManager.M_SET_LANGUAGE))
{
onInitLanguage((AppCompatActivity) pData.get(0));
onInitLanguage((AppCompatActivity) pData.get(0), (String) pData.get(1), (String) pData.get(2), (boolean)pData.get(3));
}
else if(pEventType.equals(pluginEnums.eLangManager.M_SUPPORTED_SYSTEM_LANGUAGE_INFO))
{
return getSupportedSystemLanguageInfo();
return getSupportedSystemLanguageInfo((String) pData.get(0));
}
return null;
}

View File

@ -10,6 +10,7 @@ import android.graphics.drawable.InsetDrawable;
import android.net.Uri;
import android.os.Handler;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.EditText;
@ -19,7 +20,6 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.darkweb.genesissearchengine.appManager.activityContextManager;
import com.darkweb.genesissearchengine.constants.constants;
import com.darkweb.genesissearchengine.constants.status;
import com.darkweb.genesissearchengine.constants.strings;
import com.darkweb.genesissearchengine.eventObserver;
import com.darkweb.genesissearchengine.helperManager.helperMethod;
@ -260,6 +260,12 @@ public class messageManager
mDialog.setOnDismissListener(dialog -> onClearReference());
}
private void applicationCrashed()
{
initializeDialog(R.layout.application_crash, Gravity.BOTTOM);
mDialog.findViewById(R.id.pDismiss).setOnClickListener(v -> mDialog.dismiss());
mDialog.setOnDismissListener(dialog -> onClearReference());
}
private void openSecureConnectionPopup()
{
@ -327,11 +333,14 @@ public class messageManager
private void onUpdateBridges()
{
String mCustomBridge = (String) mEvent.invokeObserver(null, M_CUSTOM_BRIDGE);
String mBridgeType = (String) mEvent.invokeObserver(null, M_BRIDGE_TYPE);
initializeDialog(R.layout.popup_update_bridges, Gravity.CENTER);
mContext.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
if(!status.sBridgeCustomBridge.equals("meek") && !status.sBridgeCustomBridge.equals("obfs4")){
((EditText)mDialog.findViewById(R.id.pBridgeInput)).setText(status.sBridgeCustomBridge);
((EditText)mDialog.findViewById(R.id.pBridgeType)).setText(status.sBridgeCustomType);
if(!mCustomBridge.equals("meek") && !mCustomBridge.equals("obfs4")){
((EditText)mDialog.findViewById(R.id.pBridgeInput)).setText(mCustomBridge);
((EditText)mDialog.findViewById(R.id.pBridgeType)).setText(mBridgeType);
}
mDialog.setOnShowListener(dialog -> mContext.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING));
@ -358,11 +367,41 @@ public class messageManager
handler.postDelayed(runnable, 200);
});
mDialog.findViewById(R.id.mClear).setOnClickListener(v -> {
EditText mBridges = mDialog.findViewById(R.id.pBridgeInput);
TextView mTextView = mDialog.findViewById(R.id.pDescriptionError);
mBridges.setText(strings.GENERIC_EMPTY_STR);
mTextView.animate().setDuration(250).alpha(0);
});
mDialog.findViewById(R.id.pNext).setOnClickListener(v -> {
String mBridges = ((EditText)mDialog.findViewById(R.id.pBridgeInput)).getText().toString();
boolean mBridgeTypeExist = !mBridges.contains("obfs3") && !mBridges.contains("obfs4") && !mBridges.contains("fle") && !mBridges.contains("meek");
boolean mBridgeSize = mBridges.length()<10 || !mBridges.contains(".") || !mBridges.contains(" ");
if(mBridgeTypeExist || mBridgeSize){
TextView mTextView = mDialog.findViewById(R.id.pDescriptionError);
if(mTextView.getAlpha()==0 || mTextView.getAlpha()==1 || mTextView.getVisibility()!=View.VISIBLE){
mTextView.setAlpha(0);
mTextView.setVisibility(View.VISIBLE);
mTextView.animate().setDuration(250).alpha(1);
if(mBridgeTypeExist){
mTextView.setText("➔ Invalid bridge string");
}
else if(mBridgeSize){
mTextView.setText("➔ Invalid bridge type");
}
}
return;
}
mDialog.dismiss();
mContext.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
helperMethod.hideKeyboard(mContext);
mEvent.invokeObserver(Arrays.asList(((EditText)mDialog.findViewById(R.id.pBridgeInput)).getText().toString(), ((EditText)mDialog.findViewById(R.id.pBridgeType)).getText().toString()), M_SET_BRIDGES);
mEvent.invokeObserver(Arrays.asList(mBridges, ((EditText)mDialog.findViewById(R.id.pBridgeType)).getText().toString()), M_SET_BRIDGES);
});
}
@ -675,6 +714,11 @@ public class messageManager
dataClearedSuccessfully();
break;
case M_APPLICATION_CRASH:
/*VERIFIED*/
applicationCrashed();
break;
case M_SECURE_CONNECTION:
/*VERIFIED*/
openSecureConnectionPopup();

View File

@ -10,21 +10,19 @@ import android.content.Intent ;
import android.graphics.Color;
import android.os.Build;
import android.util.Log;
import androidx.core.app.NotificationCompat;
import com.darkweb.genesissearchengine.appManager.activityContextManager;
import com.darkweb.genesissearchengine.constants.status;
import com.darkweb.genesissearchengine.constants.strings;
import com.example.myapplication.R;
import java.util.Random;
import static com.darkweb.genesissearchengine.constants.constants.mUserEngagementNotificationID;
public class localEngagementManager extends BroadcastReceiver {
public void onReceive (Context context , Intent intent) {
try{
final int NOTIFY_ID = status.mNotificationID;
final int NOTIFY_ID = mUserEngagementNotificationID;
String pTitle = strings.NOTIFICATION_TITLE;
String pBody = strings.NOTIFICATION_BODY[new Random().nextInt(strings.NOTIFICATION_BODY.length)];

View File

@ -33,7 +33,7 @@ public class notifictionManager
private void onNotificationClear(){
NotificationManager notificationManager = (NotificationManager) mAppContext.get().getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancel(status.mNotificationID);
notificationManager.cancel(mUserEngagementNotificationID);
}
private void onCreateUserEngagementNotification(int pDelay){

View File

@ -6,11 +6,14 @@ import androidx.appcompat.app.AppCompatActivity;
import org.mozilla.gecko.PrefsHelper;
import org.torproject.android.proxy.OrbotService;
import org.torproject.android.proxy.util.Prefs;
import org.torproject.android.service.wrapper.orbotLocalConstants;
import org.torproject.android.proxy.wrapper.orbotLocalConstants;
import java.lang.ref.WeakReference;
import java.util.List;
import com.darkweb.genesissearchengine.constants.*;
import com.darkweb.genesissearchengine.constants.constants;
import com.darkweb.genesissearchengine.constants.keys;
import com.darkweb.genesissearchengine.constants.strings;
import com.darkweb.genesissearchengine.eventObserver;
import com.darkweb.genesissearchengine.pluginManager.pluginEnums;
@ -43,11 +46,12 @@ public class orbotManager
this.mAppContext = null;
}
private void onStartOrbot(){
orbotLocalConstants.mBridges = status.sBridgeCustomBridge;
orbotLocalConstants.mIsManualBridge = status.sBridgeGatewayManual;
orbotLocalConstants.mManualBridgeType = status.sBridgeCustomType;
Prefs.putBridgesEnabled(status.sBridgeStatus);
private void onStartOrbot(String pBridgeCustomBridge, boolean pBridgeGatewayManual, String pBridgeCustomType, boolean pBridgeStatus, int pShowImages, boolean mClearOnExit, String pBridgesDefault){
orbotLocalConstants.mBridges = pBridgeCustomBridge;
orbotLocalConstants.mIsManualBridge = pBridgeGatewayManual;
orbotLocalConstants.mManualBridgeType = pBridgeCustomType;
orbotLocalConstants.mBridgesDefault = pBridgesDefault;
Prefs.putBridgesEnabled(pBridgeStatus);
Intent mServiceIntent = new Intent(mAppContext.get().getApplicationContext(), OrbotService.class);
mServiceIntent.setAction(ACTION_START);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
@ -59,7 +63,7 @@ public class orbotManager
mAppContext.get().startService(mServiceIntent);
}
initializeProxy();
initializeProxy(pShowImages, mClearOnExit);
}
/*Helper Methods*/
@ -93,29 +97,15 @@ public class orbotManager
/*Proxy Manager*/
private void onSetProxy(String url){
/* if(url.contains("genesishiddentechnologies.com")){
PrefsHelper.setPref(keys.PROXY_TYPE, 0);
PrefsHelper.setPref(keys.PROXY_SOCKS,null);
PrefsHelper.setPref(keys.PROXY_SOCKS_PORT, null);
PrefsHelper.setPref(keys.PROXY_SOCKS_VERSION,null);
PrefsHelper.setPref(keys.PROXY_SOCKS_REMOTE_DNS,null);
}
else {
PrefsHelper.setPref(keys.PROXY_TYPE, 1);
PrefsHelper.setPref(keys.PROXY_SOCKS,constants.CONST_PROXY_SOCKS);
PrefsHelper.setPref(keys.PROXY_SOCKS_PORT, 9050);
PrefsHelper.setPref(keys.PROXY_SOCKS_VERSION,constants.CONST_PROXY_SOCKS_VERSION);
PrefsHelper.setPref(keys.PROXY_SOCKS_REMOTE_DNS,constants.CONST_PROXY_SOCKS_REMOTE_DNS);
} */
PrefsHelper.setPref(keys.PROXY_TYPE, 1);
PrefsHelper.setPref(keys.PROXY_SOCKS,constants.CONST_PROXY_SOCKS);
PrefsHelper.setPref(keys.PROXY_SOCKS, constants.CONST_PROXY_SOCKS);
PrefsHelper.setPref(keys.PROXY_SOCKS_PORT, 9050);
PrefsHelper.setPref(keys.PROXY_SOCKS_VERSION,constants.CONST_PROXY_SOCKS_VERSION);
PrefsHelper.setPref(keys.PROXY_SOCKS_REMOTE_DNS,constants.CONST_PROXY_SOCKS_REMOTE_DNS);
}
private void initializeProxy()
private void initializeProxy(int pShowImages, boolean mClearOnExit)
{
PrefsHelper.setPref(keys.PROXY_TYPE, 0);
PrefsHelper.setPref(keys.PROXY_SOCKS,null);
@ -138,25 +128,26 @@ public class orbotManager
PrefsHelper.setPref("browser.cache.memory.enable",true);
PrefsHelper.setPref("browser.cache.disk.capacity",1000);
onUpdatePrivacyPreferences();
onUpdatePrivacyPreferences(pShowImages, mClearOnExit);
}
private void onUpdatePrivacyPreferences()
private void onUpdatePrivacyPreferences(int pShowImages, boolean mClearOnExit)
{
PrefsHelper.setPref(keys.PROXY_IMAGE, status.sShowImages);
PrefsHelper.setPref(keys.PROXY_IMAGE, pShowImages);
PrefsHelper.setPref("privacy.clearOnShutdown.cache",mClearOnExit);
PrefsHelper.setPref("privacy.clearOnShutdown.downloads",mClearOnExit);
PrefsHelper.setPref("privacy.clearOnShutdown.formdata",mClearOnExit);
PrefsHelper.setPref("privacy.clearOnShutdown.history",mClearOnExit);
PrefsHelper.setPref("privacy.clearOnShutdown.offlineApps",mClearOnExit);
PrefsHelper.setPref("privacy.clearOnShutdown.passwords",mClearOnExit);
PrefsHelper.setPref("privacy.clearOnShutdown.sessions",mClearOnExit);
PrefsHelper.setPref("privacy.clearOnShutdown.siteSettings",mClearOnExit);
PrefsHelper.setPref("browser.display.show_image_placeholders",true);
PrefsHelper.setPref("browser.cache.disk.enable",false);
PrefsHelper.setPref("browser.cache.memory.enable",true);
PrefsHelper.setPref("browser.cache.disk.capacity",0);
PrefsHelper.setPref("privacy.resistFingerprinting",true);
PrefsHelper.setPref("privacy.clearOnShutdown.cache",status.sClearOnExit);
PrefsHelper.setPref("privacy.clearOnShutdown.downloads",status.sClearOnExit);
PrefsHelper.setPref("privacy.clearOnShutdown.formdata",status.sClearOnExit);
PrefsHelper.setPref("privacy.clearOnShutdown.history",status.sClearOnExit);
PrefsHelper.setPref("privacy.clearOnShutdown.offlineApps",status.sClearOnExit);
PrefsHelper.setPref("privacy.clearOnShutdown.passwords",status.sClearOnExit);
PrefsHelper.setPref("privacy.clearOnShutdown.sessions",status.sClearOnExit);
PrefsHelper.setPref("privacy.clearOnShutdown.siteSettings",status.sClearOnExit);
PrefsHelper.setPref("privacy.donottrackheader.enabled",false);
PrefsHelper.setPref("privacy.donottrackheader.value",1);
PrefsHelper.setPref("network.http.sendRefererHeader", 0);
@ -176,6 +167,10 @@ public class orbotManager
return "Warning | " + orbotLocalConstants.mTorLogsStatus;
}
else if(orbotLocalConstants.mTorLogsStatus.startsWith("Invalid Configuration")){
return orbotLocalConstants.mTorLogsStatus;
}
if(!logs.contains("Bootstrapped") && !mLogsStarted){
logs = "Initializing Bootstrap";
mLogsStarted = true;
@ -202,8 +197,8 @@ public class orbotManager
return OrbotService.getServiceObject().getProxyStatus();
}
private void onDestroy(){
if(!status.mThemeApplying) {
private void onDestroy(boolean pThemeApplying){
if(pThemeApplying) {
OrbotService.getServiceObject().onDestroy();
}
}
@ -233,11 +228,11 @@ public class orbotManager
}
else if(pEventType.equals(pluginEnums.eOrbotManager.M_UPDATE_PRIVACY))
{
onUpdatePrivacyPreferences();
onUpdatePrivacyPreferences((int) pData.get(0),(boolean) pData.get(1));
}
else if(pEventType.equals(pluginEnums.eOrbotManager.M_START_ORBOT))
{
onStartOrbot();
onStartOrbot((String) pData.get(0),(boolean) pData.get(1),(String) pData.get(2),(boolean) pData.get(3),(int) pData.get(4),(boolean) pData.get(5),(String) pData.get(6));
}
else if(pEventType.equals(pluginEnums.eOrbotManager.M_IS_ORBOT_RUNNING))
{
@ -273,7 +268,7 @@ public class orbotManager
}
else if(pEventType.equals(pluginEnums.eOrbotManager.M_DESTROY))
{
onDestroy();
onDestroy((boolean) pData.get(0));
}
return null;
}

View File

@ -29,6 +29,8 @@ import java.util.List;
import java.util.Locale;
import static com.darkweb.genesissearchengine.pluginManager.pluginEnums.eAdManagerCallbacks.M_SHOW_LOADED_ADS;
import static com.darkweb.genesissearchengine.pluginManager.pluginEnums.eLangManager.M_ACTIVITY_CREATED;
import static com.darkweb.genesissearchengine.pluginManager.pluginEnums.eLangManager.M_RESUME;
import static com.darkweb.genesissearchengine.pluginManager.pluginEnums.eMessageManager.*;
import static com.darkweb.genesissearchengine.pluginManager.pluginEnums.eMessageManagerCallbacks.*;
@ -59,7 +61,7 @@ public class pluginController
}
public void preInitialize(homeController context){
mLangManager = new langManager(context,new langCallback(), new Locale(status.sSettingLanguage), status.mSystemLocale);
mLangManager = new langManager(context,new langCallback(), new Locale(status.sSettingLanguage), status.mSystemLocale, status.sSettingLanguage, status.sSettingLanguageRegion, status.mThemeApplying);
}
public void initialize(){
@ -79,7 +81,7 @@ public class pluginController
mNotificationManager = new notifictionManager(mHomeController,new notificationCallback());
mAdManager = new adManager(new admobCallback(), ((homeController)mHomeController.get()).getBannerAd(), status.sPaidStatus);
mAnalyticsManager = new analyticManager(mHomeController,new analyticCallback());
mAnalyticsManager = new analyticManager(mHomeController,new analyticCallback(), status.sDeveloperBuild);
mMessageManager = new messageManager(new messageCallback());
mOrbotManager = orbotManager.getInstance();
mDownloadManager = new downloadManager(mHomeController,new downloadCallback());
@ -187,6 +189,11 @@ public class pluginController
if(mLangManager==null){
return null;
}
if(pEventType.equals(M_RESUME) || pEventType.equals(M_ACTIVITY_CREATED)){
return mLangManager.onTrigger(Arrays.asList(pData.get(0), status.sSettingLanguage, status.sSettingLanguageRegion, status.mThemeApplying), pEventType);
}
return mLangManager.onTrigger(pData, pEventType);
}
@ -194,6 +201,9 @@ public class pluginController
@Override
public Object invokeObserver(List<Object> data, Object event_type)
{
if(event_type.equals(pluginEnums.eLangManager.M_UPDATE_LOCAL)){
status.mSystemLocale = (Locale)data.get(0);
}
return null;
}
}
@ -261,6 +271,12 @@ public class pluginController
else if(pEventType.equals(M_APP_RATED)){
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.PROXY_IS_APP_RATED,true));
}
else if(pEventType.equals(M_CUSTOM_BRIDGE)){
return status.sBridgeCustomBridge;
}
else if(pEventType.equals(M_BRIDGE_TYPE)){
return status.sBridgeCustomType;
}
else if(pEventType.equals(M_DOWNLOAD_FILE)){
((homeController)mHomeController.get()).onDownloadFile();
}

View File

@ -19,7 +19,7 @@ public class pluginEnums
/*Lanuage Manager*/
public enum eLangManager{
M_SET_LANGUAGE, M_ACTIVITY_CREATED, M_RESUME, M_SUPPORTED_SYSTEM_LANGUAGE_INFO, M_INIT_LOCALE
M_SET_LANGUAGE, M_ACTIVITY_CREATED, M_RESUME, M_SUPPORTED_SYSTEM_LANGUAGE_INFO, M_INIT_LOCALE, M_UPDATE_LOCAL
}
public enum eLangManagerCallbacks{
@ -28,10 +28,10 @@ public class pluginEnums
/*Message Manager*/
public enum eMessageManager{
M_RESET, M_DATA_CLEARED, M_SECURE_CONNECTION, M_POPUP_BLOCKED, M_PANIC, M_MAX_TAB_REACHED,M_DOWNLOAD_SINGLE, M_UPDATE_BRIDGES, M_NEW_IDENTITY, M_NOT_SUPPORTED, M_BRIDGE_MAIL, M_LONG_PRESS_WITH_LINK, M_LONG_PRESS_URL, M_LONG_PRESS_DOWNLOAD, M_START_ORBOT, M_DOWNLOAD_FAILURE, M_DOWNLOAD_FILE, M_RATE_APP, M_REPORT_URL, M_CLEAR_BOOKMARK, M_CLEAR_HISTORY, M_BOOKMARK, M_PANIC_RESET, M_RATE_SUCCESS, M_RATE_FAILURE, M_LANGUAGE_SUPPORT_FAILURE, M_WELCOME
M_RESET, M_DATA_CLEARED, M_APPLICATION_CRASH, M_SECURE_CONNECTION, M_POPUP_BLOCKED, M_PANIC, M_MAX_TAB_REACHED,M_DOWNLOAD_SINGLE, M_UPDATE_BRIDGES, M_NEW_IDENTITY, M_NOT_SUPPORTED, M_BRIDGE_MAIL, M_LONG_PRESS_WITH_LINK, M_LONG_PRESS_URL, M_LONG_PRESS_DOWNLOAD, M_START_ORBOT, M_DOWNLOAD_FAILURE, M_DOWNLOAD_FILE, M_RATE_APP, M_REPORT_URL, M_CLEAR_BOOKMARK, M_CLEAR_HISTORY, M_BOOKMARK, M_PANIC_RESET, M_RATE_SUCCESS, M_RATE_FAILURE, M_LANGUAGE_SUPPORT_FAILURE, M_WELCOME
}
public enum eMessageManagerCallbacks{
M_CANCEL_WELCOME, M_APP_RATED, M_DOWNLOAD_FILE_MANUAL, M_OPEN_LINK_CURRENT_TAB, M_COPY_LINK, M_REQUEST_BRIDGES, M_SET_BRIDGES, M_OPEN_LINK_NEW_TAB, M_CLEAR_TAB, M_RATE_APPLICATION, M_OPEN_PRIVACY
M_CANCEL_WELCOME, M_APP_RATED, M_DOWNLOAD_FILE_MANUAL, M_OPEN_LINK_CURRENT_TAB, M_COPY_LINK, M_REQUEST_BRIDGES, M_SET_BRIDGES, M_OPEN_LINK_NEW_TAB, M_CLEAR_TAB, M_RATE_APPLICATION, M_OPEN_PRIVACY, M_CUSTOM_BRIDGE, M_BRIDGE_TYPE
}
/*Download Manager*/

View File

@ -7,13 +7,15 @@ import com.darkweb.genesissearchengine.pluginManager.pluginController;
import com.darkweb.genesissearchengine.pluginManager.pluginEnums;
import java.util.Collections;
import static com.darkweb.genesissearchengine.constants.constants.*;
public class downloadNotificationReciever extends BroadcastReceiver {
public void onReceive (Context context , Intent intent) {
int mCommand = intent.getExtras().getInt("N_COMMAND");
int mCommand = intent.getExtras().getInt(CONST_DOWNLOAD_COMMAND);
if(mCommand==1){
pluginController.getInstance().onDownloadInvoke(Collections.singletonList(intent.getExtras().getInt("N_ID")), pluginEnums.eDownloadManager.M_TRIGGER);
pluginController.getInstance().onDownloadInvoke(Collections.singletonList(intent.getExtras().getInt(CONST_DOWNLOAD_INTENT_KEY)), pluginEnums.eDownloadManager.M_TRIGGER);
}else if(mCommand==0 || mCommand==2) {
pluginController.getInstance().onDownloadInvoke(Collections.singletonList(intent.getExtras().getInt("N_ID")), pluginEnums.eDownloadManager.M_CANCEL);
pluginController.getInstance().onDownloadInvoke(Collections.singletonList(intent.getExtras().getInt(CONST_DOWNLOAD_INTENT_KEY)), pluginEnums.eDownloadManager.M_CANCEL);
}
}
}

View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true"
android:fillEnabled="true">
<scale
android:duration="200"
android:fromXScale="0.95"
android:fromYScale="0.95"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1"
android:toYScale="1"
/>
<alpha android:fromAlpha="0"
android:toAlpha="1.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:duration="200"
android:repeatCount="0"/>
</set>

View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true"
android:fillEnabled="true">
<scale
android:duration="250"
android:fromXScale="1"
android:fromYScale="1"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="0.95"
android:toYScale="0.95"
/>
<alpha android:fromAlpha="1.0"
android:toAlpha="0.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:duration="250"
android:repeatCount="0"/>
</set>

View File

@ -10,7 +10,7 @@
<intent
android:action="erase"
android:targetPackage="com.darkweb.genesissearchengine.production"
android:targetClass="com.darkweb.genesissearchengine.appManager.externalNavigationManager.externalShortcuts">
android:targetClass="com.darkweb.genesissearchengine.appManager.externalCommandManager.externalShortcutController">
<extra android:name="shortcut" android:value="open" />
</intent>
</shortcut>
@ -23,7 +23,7 @@
<intent
android:action="erase"
android:targetPackage="com.darkweb.genesissearchengine.production"
android:targetClass="com.darkweb.genesissearchengine.appManager.externalNavigationManager.externalShortcuts">
android:targetClass="com.darkweb.genesissearchengine.appManager.externalCommandManager.externalShortcutController">
<extra android:name="shortcut" android:value="erase_and_open" />
</intent>
</shortcut>
@ -36,7 +36,7 @@
<intent
android:action="erase"
android:targetPackage="com.darkweb.genesissearchengine.production"
android:targetClass="com.darkweb.genesissearchengine.appManager.externalNavigationManager.externalShortcuts">
android:targetClass="com.darkweb.genesissearchengine.appManager.externalCommandManager.externalShortcutController">
<extra android:name="shortcut" android:value="erase" />
</intent>
</shortcut>

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/c_long_button">
<item android:id="@android:id/background">
<shape android:shape="rectangle">
<gradient
android:angle="90"
android:endColor="@color/c_long_button"
android:startColor="@color/c_long_button"
android:type="linear" />
<corners android:radius="5.5dp" />
</shape>
</item>
</ripple>

View File

@ -0,0 +1,6 @@
<vector android:height="24dp" android:tint="#3C5C7E"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M21.67,18.17l-5.3,-5.3h-0.99l-2.54,2.54v0.99l5.3,5.3c0.39,0.39 1.02,0.39 1.41,0l2.12,-2.12C22.06,19.2 22.06,18.56 21.67,18.17z"/>
<path android:fillColor="@android:color/white" android:pathData="M17.34,10.19l1.41,-1.41l2.12,2.12c1.17,-1.17 1.17,-3.07 0,-4.24l-3.54,-3.54l-1.41,1.41V1.71L15.22,1l-3.54,3.54l0.71,0.71h2.83l-1.41,1.41l1.06,1.06l-2.89,2.89L7.85,6.48V5.06L4.83,2.04L2,4.87l3.03,3.03h1.41l4.13,4.13l-0.85,0.85H7.6l-5.3,5.3c-0.39,0.39 -0.39,1.02 0,1.41l2.12,2.12c0.39,0.39 1.02,0.39 1.41,0l5.3,-5.3v-2.12l5.15,-5.15L17.34,10.19z"/>
</vector>

View File

@ -0,0 +1,97 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="20dp">
<androidx.cardview.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginEnd="15dp"
app:cardCornerRadius="5.5dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/pMainLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@xml/hox_rounded_corner">
<TextView
android:id="@+id/pHeader"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:paddingStart="15dp"
android:paddingEnd="15dp"
android:text="@string/ALERT_CRASH"
android:textAlignment="textStart"
android:textColor="@color/c_text_setting_heading_v2"
android:textSize="17sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/pDescription"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:alpha="0.6"
android:paddingStart="15dp"
android:paddingEnd="15dp"
android:text="@string/ALERT_CRASH_INFO"
android:textAlignment="textStart"
android:textColor="@color/c_alert_text"
android:textSize="13sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pHeader"
tools:ignore="SmallSp" />
<View
android:id="@+id/pDivider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="25dp"
android:background="@color/c_view_divier_background"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pDescription" />
<LinearLayout
android:id="@+id/pNavigationContainer"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginTop="25dp"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pDescription">
<Button
android:id="@+id/pDismiss"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@xml/ax_ripple_default_round_bottom"
android:padding="0dp"
android:paddingStart="15dp"
android:layout_gravity="center"
android:text="@string/ALERT_DISMISS"
android:textAllCaps="false"
android:textColor="@color/holo_gray"
android:textSize="14sp"
android:textStyle="bold" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -22,8 +22,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:paddingEnd="15dp"
android:paddingStart="15dp"
android:paddingEnd="15dp"
android:text="@string/ALERT_UPDATE_BRIDGES"
android:textAlignment="textStart"
android:textColor="@color/c_text_setting_heading_v2"
@ -38,8 +38,8 @@
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:alpha="0.6"
android:paddingEnd="15dp"
android:paddingStart="15dp"
android:paddingEnd="15dp"
android:text="@string/ALERT_UPDATE_BRIDGES_INFO"
android:textAlignment="textStart"
android:textColor="@color/c_alert_text"
@ -49,20 +49,39 @@
app:layout_constraintTop_toBottomOf="@+id/pHeader"
tools:ignore="SmallSp" />
<TextView
android:id="@+id/pDescriptionError"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:alpha="0.6"
android:paddingStart="15dp"
android:paddingEnd="15dp"
android:text="➔ Invalid Bridges ( Try Again )"
android:textAlignment="textStart"
android:textColor="@color/c_button_warning"
android:textSize="13sp"
android:textStyle="bold"
android:visibility="invisible"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pBridgeType"
tools:ignore="SmallSp" />
<EditText
android:id="@+id/pBridgeInput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="10dp"
android:layout_marginTop="15dp"
android:layout_marginEnd="48dp"
android:background="@xml/gx_generic_input"
android:ems="10"
android:elevation="3dp"
android:hint="@string/ALERT_ADD_BRIDGES_HINT"
android:ems="10"
android:hint="@string/ALERT_ADD_BRIDGES_HINT_V1"
android:importantForAutofill="no"
android:maxLines="1"
android:inputType="text"
android:maxLines="1"
android:padding="7dp"
android:paddingStart="11dp"
android:paddingEnd="8dp"
@ -71,7 +90,7 @@
android:textColorHint="@color/c_text_v2"
android:textCursorDrawable="@xml/gx_search_cursor_state"
android:textSize="14sp"
app:layout_constraintEnd_toEndOf="@+id/pDivider"
app:layout_constraintEnd_toStartOf="@+id/mClear"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pDescription" />
@ -82,10 +101,11 @@
android:layout_marginStart="10dp"
android:layout_marginTop="15dp"
android:layout_marginEnd="10dp"
android:visibility="gone"
android:background="@xml/gx_generic_input"
android:elevation="3dp"
android:ems="10"
android:hint="@string/ALERT_ADD_BRIDGES_TYPE_HINT"
android:hint="@string/ALERT_ADD_BRIDGES_TYPE_HINT_V1"
android:importantForAutofill="no"
android:inputType="text"
android:maxLines="1"
@ -101,15 +121,30 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pBridgeInput" />
<ImageButton
android:id="@+id/mClear"
android:layout_width="33dp"
android:layout_height="33dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="9dp"
android:layout_marginBottom="4dp"
android:elevation="3dp"
android:background="@xml/hox_rounded_corner_splash"
android:contentDescription="@string/GENERAL_TODO"
android:src="@xml/ic_baseline_cross"
app:layout_constraintBottom_toTopOf="@+id/pDescriptionError"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pDescription" />
<View
android:id="@+id/pDivider"
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="15dp"
android:layout_marginTop="10dp"
android:background="@color/c_view_divier_background"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pBridgeType" />
app:layout_constraintTop_toBottomOf="@+id/pDescriptionError" />
<LinearLayout
android:id="@+id/pNavigationContainer"

View File

@ -59,13 +59,10 @@
android:layout_weight="1"/>
<ImageView
android:layout_width="47dp"
android:layout_height="match_parent"
android:padding="0dp"
android:layout_marginEnd="0dp"
android:layout_width="50dp"
android:layout_height="40dp"
android:paddingStart="8dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="6dp"
android:paddingStart="3dp"
android:onClick="onOpenInfo"
android:background="@xml/gx_ripple_gray_round_left"
android:contentDescription="@string/GENERAL_TODO"
@ -356,7 +353,6 @@
android:textCursorDrawable="@xml/gx_search_cursor_state"
android:id="@+id/pCustomPort"
android:layout_width="0dp"
android:textColor="@color/c_text_v1"
android:layout_weight="11"
android:clickable="false"
android:onClick="onOpenCustomBridgeUpdater"
@ -369,7 +365,8 @@
android:layout_marginStart="15dp"
android:ems="10"
android:maxLines="1"
android:textColorHint="@color/c_button_text"
android:textColor="@color/c_text_v1"
android:textColorHint="@color/c_text_v2"
android:hint="@string/BRIDGE_PORT_HINT"
android:textSize="14.5sp"
android:text=""
@ -381,10 +378,10 @@
android:textSize="13sp"
android:layout_width="0dp"
android:layout_weight="4"
android:textColor="@color/c_button_text"
android:textColor="@color/white"
android:onClick="requestBridges"
android:layout_height="45dp"
android:background="@xml/hox_rounded_corner_suggestion_settings"
android:background="@xml/hox_rounded_corner_bridge_settings"
android:layout_marginStart="5dp"
android:text="@string/BRIDGE_REQUEST" />
</LinearLayout>

View File

@ -462,9 +462,9 @@
android:background="@xml/hox_rounded_corner_splash_right"
android:contentDescription="@string/GENERAL_TODO"
android:onClick="panicExit"
android:padding="5dp"
android:padding="6dp"
android:scaleType="fitCenter"
android:src="@xml/ic_baseline_error_home_v1"
android:src="@xml/ic_baseline_repair"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />

View File

@ -55,16 +55,13 @@
<ImageView
android:layout_width="47dp"
android:layout_height="match_parent"
android:layout_width="50dp"
android:layout_height="40dp"
android:paddingStart="8dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="6dp"
android:layout_marginEnd="0dp"
android:onClick="onOpenInfo"
android:background="@xml/gx_ripple_gray_round_left"
android:contentDescription="@string/GENERAL_TODO"
android:onClick="onOpenInfo"
android:padding="0dp"
android:paddingStart="3dp"
android:src="@xml/ic_info"
app:tint="@color/c_icon_tint_light" />

View File

@ -51,13 +51,10 @@
android:layout_weight="1"/>
<ImageView
android:layout_width="47dp"
android:layout_height="match_parent"
android:padding="0dp"
android:layout_marginEnd="0dp"
android:layout_width="50dp"
android:layout_height="40dp"
android:paddingStart="8dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="6dp"
android:paddingStart="7dp"
android:onClick="onOpenInfo"
android:background="@xml/gx_ripple_gray_round_left"
android:contentDescription="@string/GENERAL_TODO"
@ -237,12 +234,12 @@
android:layout_height="30dp"
android:layout_marginStart="16dp"
android:layout_marginBottom="0dp"
android:onClick="onClose"
android:clickable="false"
android:focusable="false"
android:paddingTop="2dp"
android:layout_marginTop="-3dp"
android:scaleType="fitCenter"
android:src="@xml/ic_gear"
android:background="?attr/selectableItemBackgroundBorderless"
android:contentDescription="@string/GENERAL_TODO"
app:tint="@color/c_navigation_tint" />
@ -251,6 +248,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="40"
android:layout_marginTop="1dp"
android:textColor="@color/c_text_v1"
android:layout_marginStart="10dp"
android:text="@string/ORBOT_SETTING_CUSTOM_BRIDGE"
@ -261,7 +259,7 @@
android:layout_height="30dp"
android:layout_marginStart="20dp"
android:layout_marginBottom="0dp"
android:layout_marginTop="-5dp"
android:layout_marginTop="-4dp"
android:clickable="false"
android:scaleType="fitCenter"
android:padding="2dp"

View File

@ -50,16 +50,14 @@
android:layout_weight="1" />
<ImageView
android:layout_width="45dp"
android:layout_height="45dp"
android:layout_width="50dp"
android:layout_height="40dp"
android:paddingStart="8dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="6dp"
android:layout_marginEnd="4dp"
android:background="@xml/gx_ripple_default_round"
android:contentDescription="@string/GENERAL_TODO"
android:onClick="onOpenInfo"
android:padding="9dp"
android:src="@xml/ic_gear"
android:background="@xml/gx_ripple_gray_round_left"
android:contentDescription="@string/GENERAL_TODO"
android:src="@xml/ic_info"
app:tint="@color/c_icon_tint_light" />
</LinearLayout>

View File

@ -60,13 +60,10 @@
android:layout_weight="1"/>
<ImageView
android:layout_width="47dp"
android:layout_height="match_parent"
android:padding="0dp"
android:layout_marginEnd="0dp"
android:layout_width="50dp"
android:layout_height="40dp"
android:paddingStart="8dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="6dp"
android:paddingStart="7dp"
android:onClick="onOpenInfo"
android:background="@xml/gx_ripple_gray_round_left"
android:contentDescription="@string/GENERAL_TODO"

View File

@ -59,13 +59,10 @@
android:layout_weight="1"/>
<ImageView
android:layout_width="47dp"
android:layout_height="match_parent"
android:padding="0dp"
android:layout_marginEnd="0dp"
android:layout_width="50dp"
android:layout_height="40dp"
android:paddingStart="8dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="6dp"
android:paddingStart="7dp"
android:onClick="onOpenInfo"
android:background="@xml/gx_ripple_gray_round_left"
android:contentDescription="@string/GENERAL_TODO"

View File

@ -59,16 +59,13 @@
android:layout_weight="1" />
<ImageView
android:layout_width="47dp"
android:layout_height="match_parent"
android:layout_width="50dp"
android:layout_height="40dp"
android:paddingStart="8dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="6dp"
android:layout_marginEnd="0dp"
android:onClick="onOpenInfo"
android:background="@xml/gx_ripple_gray_round_left"
android:contentDescription="@string/GENERAL_TODO"
android:onClick="onOpenInfo"
android:padding="0dp"
android:paddingStart="7dp"
android:src="@xml/ic_info"
app:tint="@color/c_icon_tint_light" />

View File

@ -60,13 +60,10 @@
android:layout_weight="1"/>
<ImageView
android:layout_width="47dp"
android:layout_height="match_parent"
android:padding="0dp"
android:layout_marginEnd="0dp"
android:layout_width="50dp"
android:layout_height="40dp"
android:paddingStart="8dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="6dp"
android:paddingStart="7dp"
android:onClick="onOpenInfo"
android:background="@xml/gx_ripple_gray_round_left"
android:contentDescription="@string/GENERAL_TODO"

View File

@ -58,13 +58,10 @@
android:layout_weight="1"/>
<ImageView
android:layout_width="47dp"
android:layout_height="match_parent"
android:padding="0dp"
android:layout_marginEnd="0dp"
android:layout_width="50dp"
android:layout_height="40dp"
android:paddingStart="8dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="6dp"
android:paddingStart="7dp"
android:onClick="onOpenInfo"
android:background="@xml/gx_ripple_gray_round_left"
android:contentDescription="@string/GENERAL_TODO"

View File

@ -57,13 +57,10 @@
android:layout_weight="1"/>
<ImageView
android:layout_width="47dp"
android:layout_height="match_parent"
android:padding="0dp"
android:layout_marginEnd="0dp"
android:layout_width="50dp"
android:layout_height="40dp"
android:paddingStart="8dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="6dp"
android:paddingStart="7dp"
android:onClick="onOpenInfo"
android:background="@xml/gx_ripple_gray_round_left"
android:contentDescription="@string/GENERAL_TODO"

View File

@ -58,13 +58,10 @@
android:layout_weight="1"/>
<ImageView
android:layout_width="47dp"
android:layout_height="match_parent"
android:padding="0dp"
android:layout_marginEnd="0dp"
android:layout_width="50dp"
android:layout_height="40dp"
android:paddingStart="8dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="6dp"
android:paddingStart="7dp"
android:onClick="onOpenInfo"
android:background="@xml/gx_ripple_gray_round_left"
android:contentDescription="@string/GENERAL_TODO"

View File

@ -58,13 +58,10 @@
android:layout_weight="1"/>
<ImageView
android:layout_width="47dp"
android:layout_height="match_parent"
android:padding="0dp"
android:layout_marginEnd="0dp"
android:layout_width="50dp"
android:layout_height="40dp"
android:paddingStart="8dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="6dp"
android:paddingStart="7dp"
android:onClick="onOpenInfo"
android:background="@xml/gx_ripple_gray_round_left"
android:contentDescription="@string/GENERAL_TODO"

View File

@ -60,18 +60,16 @@
android:layout_weight="1"/>
<ImageView
android:layout_width="47dp"
android:layout_height="match_parent"
android:padding="0dp"
android:layout_marginEnd="0dp"
android:layout_width="50dp"
android:layout_height="40dp"
android:paddingStart="8dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="6dp"
android:paddingStart="7dp"
android:onClick="onOpenInfo"
android:background="@xml/gx_ripple_gray_round_left"
android:contentDescription="@string/GENERAL_TODO"
android:src="@xml/ic_info"
app:tint="@color/c_icon_tint_light" />
</LinearLayout>
<!-- Title Header -->

View File

@ -58,15 +58,11 @@
android:layout_weight="1"/>
<ImageView
android:layout_width="47dp"
android:layout_height="match_parent"
android:padding="0dp"
android:layout_marginEnd="0dp"
android:layout_width="50dp"
android:layout_height="40dp"
android:paddingStart="8dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="6dp"
android:paddingStart="7dp"
android:onClick="onOpenInfo"
android:autoMirrored="true"
android:background="@xml/gx_ripple_gray_round_left"
android:contentDescription="@string/GENERAL_TODO"
android:src="@xml/ic_info"

View File

@ -83,5 +83,6 @@
<color name="c_list_remove_back">#0f0f0f</color>
<color name="c_list_alpha_black">#90000000</color>
<color name="c_ripple_light">#d9d9d9</color>
<color name="green_dark_v2">#1c1b21</color>
</resources>

View File

@ -130,7 +130,7 @@
<color name="green_button">#00b33c</color>
<color name="green_dark">#212d45</color>
<color name="green_dark_v1">#0A1727</color>
<color name="green_dark_v2">#f0f5ff</color>
<color name="green_dark_v2">#fafcff</color>
<color name="dark_purple">#ffffff</color>
<color name="warning">#ffc107</color>
<color name="connectors">#ffffff</color>

View File

@ -210,8 +210,8 @@
<!-- Alerts -->
<string name="ALERT_UPDATE_BRIDGES" translatable="true">Provide a Bridge I know</string>
<string name="ALERT_UPDATE_BRIDGES_INFO" translatable="true">Enter bridge information from a trusted source</string>
<string name="ALERT_ADD_BRIDGES_HINT" translatable="true">bridge string (obfs4 212.21.66.66:20621 ...)</string>
<string name="ALERT_ADD_BRIDGES_TYPE_HINT" translatable="true">bridge type (obfs4, meek, ...)</string>
<string name="ALERT_ADD_BRIDGES_HINT_V1" translatable="true">bridge string (obfs4 212.21.66.66:20621 ...)</string>
<string name="ALERT_ADD_BRIDGES_TYPE_HINT_V1" translatable="true">bridge type (obfs4, meek, ...)</string>
<string name="ALERT_REQUEST_BRIDGE" translatable="true">Request</string>
<string name="ALERT_SAVE_BRIDGE" translatable="true">Done</string>
@ -295,6 +295,9 @@
<string name="ALERT_DATA_CLEARED_INFO_SHORTCUT" translatable="true">Private data cleared successfully. Application will close in a moment. Now you can safely continue browsing</string>
<string name="ALERT_DATA_CLEARED_BUTTON" translatable="true">Closing Genesis Please Wait ...</string>
<string name="ALERT_CRASH" translatable="true">Unexpected Error</string>
<string name="ALERT_CRASH_INFO" translatable="true">Application crashed due to unexpected error. We are looking into the issue mean while you can continue with this application</string>
<!-- Privacy Policy -->
<string name="PRIVACY_HEADER" translatable="true">Privacy Policy</string>
<string name="PRIVACY_DESCRIPTION" translatable="true">We don\'t collect information and thats our privacy in a nutshell</string>

View File

@ -1,6 +1,6 @@
/* Version */
project.ext.vname = 'Build | Dark-Origin 1.0'
project.ext.vcode = 40
project.ext.vcode = 45
project.ext.buildType = 'release'
/* dimension */

View File

@ -47,9 +47,9 @@ import net.freehaven.tor.control.TorControlConnection;
import org.apache.commons.io.FileUtils;
import org.torproject.android.service.R;
import org.torproject.android.service.wrapper.localHelperMethod;
import org.torproject.android.service.wrapper.logRowModel;
import org.torproject.android.service.wrapper.orbotLocalConstants;
import org.torproject.android.proxy.wrapper.localHelperMethod;
import org.torproject.android.proxy.wrapper.logRowModel;
import org.torproject.android.proxy.wrapper.orbotLocalConstants;
import org.torproject.android.service.util.CustomShell;
import org.torproject.android.service.util.CustomTorResourceInstaller;
import org.torproject.android.service.util.DummyActivity;
@ -71,6 +71,8 @@ import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.StringReader;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Arrays;
@ -1721,8 +1723,10 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
alBridges = new ArrayList<>();
try {
BufferedReader in =
new BufferedReader(new InputStreamReader(getResources().openRawResource(R.raw.bridges), "UTF-8"));
String str;
while ((str = in.readLine()) != null) {
@ -1759,19 +1763,28 @@ public class OrbotService extends VpnService implements TorServiceConstants, Orb
if(orbotLocalConstants.mIsManualBridge){
List<String> mList = Arrays.asList(orbotLocalConstants.mBridges.split("\n "));
List<String> mList = Arrays.asList(orbotLocalConstants.mBridges.split("\n"));
alBridges.clear();
for(int e=0;e<mList.size();e++){
if(mList.get(e).length()<5){
continue;
}
List<String> mListTemp = Arrays.asList(mList.get(e).split(" "));
String mBridge = mList.get(e);
mBridge = mBridge.replace("\u00a0"," ");
mBridge = mBridge.trim();
int mIndex = 0;
while(mListTemp.get(mIndex).length()<3){
mIndex+=1;
while (mBridge.charAt(mIndex) == ' '){
mIndex+=2;
}
alBridges.add(new Bridge(mList.get(e).replace(mListTemp.get(mIndex),"") , orbotLocalConstants.mManualBridgeType));
mBridge = mBridge.substring(mIndex);
String mBridgeType = mBridge.split(" ")[0];
mBridge = mBridge.replaceAll((mBridgeType + " ") , "");
mBridge = mBridge.trim();
alBridges.add(new Bridge(mBridge ,mBridgeType));
}
}

View File

@ -24,7 +24,7 @@ public class StartTorReceiver extends BroadcastReceiver implements TorServiceCon
if (packageName != null) {
startTorIntent.putExtra(OrbotService.EXTRA_PACKAGE_NAME, packageName);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && Prefs.persistNotifications()) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
context.startForegroundService(startTorIntent);
} else {
context.startService(startTorIntent);

View File

@ -7,7 +7,7 @@ import net.freehaven.tor.control.EventHandler;
import org.torproject.android.proxy.util.ExternalIPFetcher;
import org.torproject.android.proxy.util.Prefs;
import org.torproject.android.service.R;
import org.torproject.android.service.wrapper.orbotLocalConstants;
import org.torproject.android.proxy.wrapper.orbotLocalConstants;
import java.text.NumberFormat;
import java.util.HashMap;

View File

@ -4,7 +4,7 @@ import android.content.Context;
import android.content.SharedPreferences;
import org.torproject.android.proxy.OrbotConstants;
import org.torproject.android.service.wrapper.orbotLocalConstants;
import org.torproject.android.proxy.wrapper.orbotLocalConstants;
import java.util.Locale;

View File

@ -1,4 +1,4 @@
package org.torproject.android.service.wrapper;
package org.torproject.android.proxy.wrapper;
import android.annotation.TargetApi;
import android.content.Context;

View File

@ -1,6 +1,5 @@
package org.torproject.android.service.wrapper;
package org.torproject.android.proxy.wrapper;
import java.time.LocalDateTime;
import java.util.Calendar;
public class localHelperMethod

View File

@ -1,4 +1,4 @@
package org.torproject.android.service.wrapper;
package org.torproject.android.proxy.wrapper;
public class logRowModel {
/*Private Variables*/

View File

@ -1,4 +1,4 @@
package org.torproject.android.service.wrapper;
package org.torproject.android.proxy.wrapper;
import android.content.Context;
import android.content.Intent;