diff --git a/app/build.gradle b/app/build.gradle
index 7629b10f..5748934c 100755
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -134,6 +134,7 @@ dependencies {
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'androidx.coordinatorlayout:coordinatorlayout:1.1.0'
implementation 'com.google.android.material:material:1.2.1'
+ implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
/* Automated APK Generation */
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 1b423aba..3dfd486e 100755
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -2,7 +2,6 @@
-
@@ -15,19 +14,21 @@
+
+
@@ -55,7 +56,7 @@
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:windowSoftInputMode="adjustPan" />
-
+
@@ -144,13 +147,12 @@
-
-
-
-
+
+
@@ -191,19 +193,16 @@
-
-
-
+
+
-
-
-
-
+
-
+ android:value="ca-app-pub-6985886044951738~4177628900" />
+ -->
-
-
-
-
-
-
-
-
+ android:authorities="org.torproject.android.ui.v3onionservice.genesis.clientauth"
+ android:exported="false" />
-
-
-
\ No newline at end of file
diff --git a/app/src/main/java/com/darkweb/genesissearchengine/appManager/activityContextManager.java b/app/src/main/java/com/darkweb/genesissearchengine/appManager/activityContextManager.java
index 2dae71b6..ed579d66 100755
--- a/app/src/main/java/com/darkweb/genesissearchengine/appManager/activityContextManager.java
+++ b/app/src/main/java/com/darkweb/genesissearchengine/appManager/activityContextManager.java
@@ -3,7 +3,7 @@ package com.darkweb.genesissearchengine.appManager;
import android.content.Context;
import androidx.appcompat.app.AppCompatActivity;
-import com.darkweb.genesissearchengine.appManager.bookmarkManager.bookmarkController;
+import com.darkweb.genesissearchengine.appManager.bookmarkManager.bookmarkHome.bookmarkController;
import com.darkweb.genesissearchengine.appManager.bridgeManager.bridgeController;
import com.darkweb.genesissearchengine.appManager.historyManager.historyController;
import com.darkweb.genesissearchengine.appManager.homeManager.homeController.homeController;
diff --git a/app/src/main/java/com/darkweb/genesissearchengine/appManager/bookmarkManager/BookmarkSettings/bookmarkSettingController.java b/app/src/main/java/com/darkweb/genesissearchengine/appManager/bookmarkManager/BookmarkSettings/bookmarkSettingController.java
new file mode 100644
index 00000000..869b836f
--- /dev/null
+++ b/app/src/main/java/com/darkweb/genesissearchengine/appManager/bookmarkManager/BookmarkSettings/bookmarkSettingController.java
@@ -0,0 +1,175 @@
+package com.darkweb.genesissearchengine.appManager.bookmarkManager.BookmarkSettings;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
+import android.content.res.Configuration;
+import android.os.Bundle;
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import com.darkweb.genesissearchengine.appManager.activityContextManager;
+import com.darkweb.genesissearchengine.appManager.activityThemeManager;
+import com.darkweb.genesissearchengine.constants.keys;
+import com.darkweb.genesissearchengine.constants.status;
+import com.darkweb.genesissearchengine.eventObserver;
+import com.darkweb.genesissearchengine.pluginManager.pluginController;
+import com.darkweb.genesissearchengine.pluginManager.pluginEnums;
+import com.example.myapplication.R;
+
+import org.mozilla.geckoview.GeckoSession;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+public class bookmarkSettingController extends AppCompatActivity {
+
+ /* Private Variables */
+
+ private bookmarkSettingModel mBookmarkSettingModel;
+ private bookmarkSettingViewController mBookmarkSettingViewController;
+
+ /* UI Variables */
+
+ private EditText mBookmarName;
+ private EditText mBookmarURL;
+
+ private TextView mBookmarkNameError;
+ private TextView mBookmarkURLError;
+
+ /* Initializations */
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ pluginController.getInstance().onLanguageInvoke(Collections.singletonList(this), pluginEnums.eLangManager.M_ACTIVITY_CREATED);
+ activityContextManager.getInstance().onStack(this);
+
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.bookmark_setting_view);
+
+ initializeViews();
+ initializeModels();
+ initializeLocalEventHandlers();
+ }
+
+ private void initializeViews() {
+ mBookmarName = findViewById(R.id.pBookmarkName);
+ mBookmarURL = findViewById(R.id.pBookmarkURL);
+ mBookmarkNameError = findViewById(R.id.pBookmarkNameError);
+ mBookmarkURLError = findViewById(R.id.pBookmarkURLError);
+ }
+
+ private void initializeLocalEventHandlers() {
+
+
+ TextWatcher mTextWatcher = new TextWatcher() {
+ @Override
+ public void afterTextChanged(Editable s) {
+ String mBookmarkName = (String) mBookmarkSettingViewController.onTrigger(bookmarkSettingEnums.eBookmarkSettingViewCommands.M_GET_BOOKMARK_NAME);
+ String mBookmarkURL = (String) mBookmarkSettingViewController.onTrigger(bookmarkSettingEnums.eBookmarkSettingViewCommands.M_GET_BOOKMARK_URL);
+ mBookmarkSettingModel.onTrigger(bookmarkSettingEnums.eBookmarkSettingModelCommands.M_VALIDATE_FORM, Arrays.asList(mBookmarkName, mBookmarkURL));
+ }
+
+ @Override
+ public void beforeTextChanged(CharSequence s, int start,int count, int after) {
+ }
+
+ @Override
+ public void onTextChanged(CharSequence s, int start,int before, int count) {
+
+ }
+ };
+
+ mBookmarName.addTextChangedListener(mTextWatcher);
+ mBookmarURL.addTextChangedListener(mTextWatcher);
+ }
+
+ public void initializeModels(){
+ String mBookmarkName = getIntent().getStringExtra(keys.BOOKMARK_SETTING_NAME);
+ String mBookmarkURL = getIntent().getStringExtra(keys.BOOKMARK_SETTING_URL);
+ int mBookmarkID = getIntent().getIntExtra(keys.BOOKMARK_SETTING_ID, -1);
+
+ mBookmarkSettingViewController = new bookmarkSettingViewController(this, new bookmarkSettingViewCallback(), mBookmarName, mBookmarURL, mBookmarkNameError, mBookmarkURLError);
+ mBookmarkSettingViewController.onTrigger(bookmarkSettingEnums.eBookmarkSettingViewCommands.M_INITIALIZE, Arrays.asList(mBookmarkName,mBookmarkURL));
+ mBookmarkSettingModel = new bookmarkSettingModel(this, new bookmarkSettingModelCallback(), mBookmarkID);
+ }
+
+ /* Local Override */
+
+ @Override
+ public void onConfigurationChanged(@NonNull Configuration newConfig) {
+ pluginController.getInstance().onLanguageInvoke(Collections.singletonList(this), pluginEnums.eLangManager.M_ACTIVITY_CREATED);
+ super.onConfigurationChanged(newConfig);
+
+ if(newConfig.uiMode != getResources().getConfiguration().uiMode){
+ activityContextManager.getInstance().onResetTheme();
+ activityThemeManager.getInstance().onConfigurationChanged(this);
+ }
+ }
+
+ @Override
+ public void onResume()
+ {
+ pluginController.getInstance().onLanguageInvoke(Collections.singletonList(this), pluginEnums.eLangManager.M_RESUME);
+ activityContextManager.getInstance().setCurrentActivity(this);
+ super.onResume();
+ }
+
+ @Override
+ protected void onDestroy() {
+ activityContextManager.getInstance().onRemoveStack(this);
+ super.onDestroy();
+ }
+
+ @Override
+ public void onBackPressed() {
+ onClose(null);
+ }
+
+ /* UI Redirection */
+
+ public void onClose(View view){
+ finish();
+ }
+
+ public void onUpdateBookmark(View view) {
+ String mBookmarkName = (String) mBookmarkSettingViewController.onTrigger(bookmarkSettingEnums.eBookmarkSettingViewCommands.M_GET_BOOKMARK_NAME);
+ String mBookmarkURL = (String) mBookmarkSettingViewController.onTrigger(bookmarkSettingEnums.eBookmarkSettingViewCommands.M_GET_BOOKMARK_URL);
+ mBookmarkSettingModel.onTrigger(bookmarkSettingEnums.eBookmarkSettingModelCommands.M_UPDATE_BOOKMARK, Arrays.asList(mBookmarkName, mBookmarkURL));
+ }
+
+ /* UI Callbacks */
+
+ private class bookmarkSettingViewCallback implements eventObserver.eventListener{
+
+ @Override
+ public Object invokeObserver(List