Move some files

This commit is contained in:
MrLetsplay 2023-06-22 19:19:48 +02:00
parent d0858d127a
commit 5925674826
Signed by: mr
SSH Key Fingerprint: SHA256:92jBH80vpXyaZHjaIl47pjRq+Yt7XGTArqQg1V7hSqg
7 changed files with 64 additions and 31 deletions

View File

@ -1,7 +1,5 @@
package com.cringe_studios.cringe_authenticator;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
@ -9,12 +7,10 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContract;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.biometric.BiometricPrompt;
@ -26,15 +22,14 @@ import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import com.cringe_studios.cringe_authenticator.databinding.ActivityMainBinding;
import com.cringe_studios.cringe_authenticator.databinding.FragmentDynamicBinding;
import com.cringe_studios.cringe_authenticator.fragment.DynamicFragment;
import com.cringe_studios.cringe_authenticator.fragment.HomeFragment;
import com.cringe_studios.cringe_authenticator.fragment.MenuFragment;
import com.cringe_studios.cringe_authenticator.fragment.SettingsFragment;
import com.cringe_studios.cringe_authenticator.scanner.QRScannerActivity;
import com.cringe_studios.cringe_authenticator.scanner.QRScannerContract;
import com.cringe_studios.cringe_authenticator.util.NavigationUtil;
import com.cringe_studios.cringe_authenticator.util.SettingsUtil;
import com.cringe_studios.cringe_authenticator_library.OTPType;
import com.google.android.material.color.utilities.DynamicColor;
import java.util.concurrent.Executor;
@ -73,10 +68,16 @@ public class MainActivity extends AppCompatActivity {
launchApp();
startQRCodeScan = registerForActivityResult(new QRScannerContract(), obj -> {
if(obj == null) { // Got some error TODO: show error message
Toast.makeText(this, "Failed to scan code", Toast.LENGTH_LONG).show();
return;
}
Fragment fragment = NavigationUtil.getCurrentFragment(this);
if(fragment instanceof DynamicFragment) {
DynamicFragment frag = (DynamicFragment) fragment;
SettingsUtil.addOTP(getSharedPreferences("groups", MODE_PRIVATE), frag.getGroupName(), obj);
SettingsUtil.addOTP(getSharedPreferences(DynamicFragment.GROUPS_PREFS_NAME, MODE_PRIVATE), frag.getGroupName(), obj);
frag.loadOTPs();
}
Log.i("AMOGUS", "Actually got something bruh" + obj);
});

View File

@ -3,6 +3,7 @@ package com.cringe_studios.cringe_authenticator.fragment;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@ -13,22 +14,28 @@ import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.cringe_studios.cringe_authenticator.OTPData;
import com.cringe_studios.cringe_authenticator.R;
import com.cringe_studios.cringe_authenticator.databinding.AuthenticateTotpBinding;
import com.cringe_studios.cringe_authenticator.databinding.FragmentDynamicBinding;
import com.cringe_studios.cringe_authenticator.databinding.OtpCodeBinding;
import com.cringe_studios.cringe_authenticator.util.FabUtil;
import com.cringe_studios.cringe_authenticator.util.NavigationUtil;
import com.cringe_studios.cringe_authenticator.util.SettingsUtil;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.cringe_studios.cringe_authenticator_library.OTP;
import java.util.List;
public class DynamicFragment extends Fragment {
public static final String
GROUPS_PREFS_NAME = "groups",
BUNDLE_GROUP = "group";
private String groupName;
private FragmentDynamicBinding binding;
private Handler handler;
private Runnable refreshCodes;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -39,7 +46,7 @@ public class DynamicFragment extends Fragment {
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
binding = FragmentDynamicBinding.inflate(inflater, container, false);
groupName = requireArguments().getString("group");
groupName = requireArguments().getString(DynamicFragment.BUNDLE_GROUP);
/*String[] totps = new String[]{"Code 1", "Code 2", groupName};
for(String totp : totps) {
@ -52,18 +59,31 @@ public class DynamicFragment extends Fragment {
FabUtil.showFabs(getActivity());
refreshCodes = () -> {
for(int i = 0; i < binding.itemList.getChildCount(); i++) {
View v = binding.itemList.getChildAt(i);
OTP otp = (OTP) v.getTag();
otp.getPin();
}
handler.postDelayed(refreshCodes, 1000L);
};
handler.post(refreshCodes);
return binding.getRoot();
}
public void loadOTPs() {
SharedPreferences prefs = getActivity().getSharedPreferences("groups", Context.MODE_PRIVATE);
SharedPreferences prefs = getActivity().getSharedPreferences(DynamicFragment.GROUPS_PREFS_NAME, Context.MODE_PRIVATE);
List<OTPData> data = SettingsUtil.getOTPs(prefs, groupName);
Log.i("AMOGUS", "OTPS: " + data);
binding.itemList.removeAllViews();
for(OTPData otp : data) {
AuthenticateTotpBinding itemBinding = AuthenticateTotpBinding.inflate(getLayoutInflater());
itemBinding.displayName.setText(otp.getName());
itemBinding.totpCode.setText(otp.toOTP().getPin());
OtpCodeBinding itemBinding = OtpCodeBinding.inflate(getLayoutInflater());
itemBinding.label.setText(otp.getName());
itemBinding.otpCode.setText(otp.toOTP().getPin());
itemBinding.getRoot().setTag(otp.toOTP());
binding.itemList.addView(itemBinding.getRoot());
}
}
@ -74,6 +94,12 @@ public class DynamicFragment extends Fragment {
this.binding = null;
}
@Override
public void onDestroy() {
handler.removeCallbacks(refreshCodes);
super.onDestroy();
}
public String getGroupName() {
return groupName;
}

View File

@ -29,16 +29,16 @@ public class MenuFragment extends Fragment {
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
binding = FragmentMenuBinding.inflate(inflater);
String[] items = {"a", "b"};
SharedPreferences pr = getContext().getSharedPreferences("menu", Context.MODE_PRIVATE);
String[] items = {"a", "b"};
for(String item : items) {
MenuItemBinding itemBinding = MenuItemBinding.inflate(inflater);
itemBinding.button.setText(item);
itemBinding.button.setOnClickListener(view -> {
Bundle bundle = new Bundle();
bundle.putString("tab", item);
bundle.putString(DynamicFragment.BUNDLE_GROUP, item);
NavigationUtil.navigate(this, DynamicFragment.class, bundle);
});
itemBinding.button.setOnLongClickListener(view -> {

View File

@ -1,4 +1,4 @@
package com.cringe_studios.cringe_authenticator;
package com.cringe_studios.cringe_authenticator.scanner;
import android.Manifest;
import android.app.Activity;
@ -24,6 +24,7 @@ import androidx.camera.lifecycle.ProcessCameraProvider;
import androidx.core.content.ContextCompat;
import androidx.lifecycle.LifecycleOwner;
import com.cringe_studios.cringe_authenticator.OTPData;
import com.cringe_studios.cringe_authenticator.databinding.ActivityQrScannerBinding;
import com.cringe_studios.cringe_authenticator_library.OTP;
import com.cringe_studios.cringe_authenticator_library.OTPAlgorithm;
@ -120,6 +121,8 @@ public class QRScannerActivity extends AppCompatActivity {
}
}
if(code == null) return;
Uri uri = Uri.parse(code.getRawValue());
Log.i("AMOGUS", code.getRawValue());
Log.i("AMOGUS", uri.getHost());
@ -180,7 +183,7 @@ public class QRScannerActivity extends AppCompatActivity {
}
}
private void success(OTPData data) {
private void success(@NonNull OTPData data) {
Intent result = new Intent();
result.putExtra("data", data);
setResult(Activity.RESULT_OK, result);
@ -188,8 +191,7 @@ public class QRScannerActivity extends AppCompatActivity {
}
private void error(String errorMessage) {
Intent result = new Intent();
setResult(Activity.RESULT_CANCELED, result);
setResult(Activity.RESULT_CANCELED, null);
finish();
}

View File

@ -1,4 +1,4 @@
package com.cringe_studios.cringe_authenticator;
package com.cringe_studios.cringe_authenticator.scanner;
import android.app.Activity;
import android.content.Context;
@ -8,6 +8,8 @@ import androidx.activity.result.contract.ActivityResultContract;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.cringe_studios.cringe_authenticator.OTPData;
public class QRScannerContract extends ActivityResultContract<Void, OTPData> {
@NonNull
@ -17,7 +19,7 @@ public class QRScannerContract extends ActivityResultContract<Void, OTPData> {
}
@Override
public OTPData parseResult(int result, @Nullable Intent intent) {
public @Nullable OTPData parseResult(int result, @Nullable Intent intent) {
if(result != Activity.RESULT_OK || intent == null) {
return null;
}

View File

@ -2,6 +2,8 @@ package com.cringe_studios.cringe_authenticator.util;
import android.content.SharedPreferences;
import androidx.annotation.NonNull;
import com.cringe_studios.cringe_authenticator.OTPData;
import com.google.gson.Gson;
@ -18,7 +20,7 @@ public class SettingsUtil {
return Arrays.asList(GSON.fromJson(currentOTPs, OTPData[].class));
}
public static void addOTP(SharedPreferences prefs, String group, OTPData data) {
public static void addOTP(SharedPreferences prefs, String group, @NonNull OTPData data) {
List<OTPData> otps = new ArrayList<>(getOTPs(prefs, group));
otps.add(data);

View File

@ -11,15 +11,15 @@
android:padding="5dp"
android:orientation="vertical">
<TextView
android:id="@+id/displayName"
android:id="@+id/label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="My TOTP"
android:text="My OTP"
android:textAlignment="center"
android:textSize="16sp" />
<TextView
android:id="@+id/totpCode"
android:id="@+id/otpCode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="000000"