From 3625bd22caff5d12ef8820925702c7fc1301b938 Mon Sep 17 00:00:00 2001 From: aj Date: Sun, 2 Feb 2020 09:31:31 +0000 Subject: [PATCH] added polling thread at join queue and disabling of login button --- .../example/applogin/JoinQueueActivity.java | 68 +++++++++++++++---- .../com/example/applogin/Login2Activity.java | 7 +- 2 files changed, 61 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/example/applogin/JoinQueueActivity.java b/app/src/main/java/com/example/applogin/JoinQueueActivity.java index df4a0f5..07145c9 100644 --- a/app/src/main/java/com/example/applogin/JoinQueueActivity.java +++ b/app/src/main/java/com/example/applogin/JoinQueueActivity.java @@ -17,6 +17,8 @@ import java.util.concurrent.ExecutionException; public class JoinQueueActivity extends AppCompatActivity { + Thread pollingThread; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -27,6 +29,10 @@ public class JoinQueueActivity extends AppCompatActivity { @Override public void onClick(View v) { + if(pollingThread.isAlive()){ + pollingThread.interrupt(); + } + SharedPreferences preferences = getApplicationContext().getSharedPreferences("scheduler_preferences", Context.MODE_PRIVATE); QueueTask task = new QueueTask("location1", preferences.getString("api_key", null)); @@ -49,21 +55,59 @@ public class JoinQueueActivity extends AppCompatActivity { } }); - SharedPreferences preferences = getApplicationContext().getSharedPreferences("scheduler_preferences", Context.MODE_PRIVATE); - GetUserTask task = new GetUserTask(preferences.getString("api_key", null)); + final SharedPreferences preferences = getApplicationContext().getSharedPreferences("scheduler_preferences", Context.MODE_PRIVATE); + final long timeInterval = 2000; + Runnable runnable = new Runnable() { - task.execute(); - try { - User user = task.get(); + public void run() { + boolean changed = false; + while (!changed) { - if(user.getState() != User.State.inactive){ - joinButton.setEnabled(false); + GetUserTask task = new GetUserTask(preferences.getString("api_key", null)); + task.execute(); + try { + User user = task.get(); + + Intent intent; + switch(user.getState()){ + case in_queue: + intent = new Intent(JoinQueueActivity.this, WaitingActivity.class); + startActivity(intent); + changed = true; + break; + case assigned: + intent = new Intent(JoinQueueActivity.this, PluginWait_Activity.class); + startActivity(intent); + changed = true; + break; + case connected_charging: + intent = new Intent(JoinQueueActivity.this, ChargingActivity.class); + startActivity(intent); + changed = true; + break; + case connected_full: + intent = new Intent(JoinQueueActivity.this, FullActivity.class); + startActivity(intent); + changed = true; + break; + } + + } catch (ExecutionException e) { + e.printStackTrace(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + try { + Thread.sleep(timeInterval); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } - } catch (ExecutionException e) { - e.printStackTrace(); - } catch (InterruptedException e) { - e.printStackTrace(); - } + }; + pollingThread = new Thread(runnable); + pollingThread.start(); } } diff --git a/app/src/main/java/com/example/applogin/Login2Activity.java b/app/src/main/java/com/example/applogin/Login2Activity.java index 06feb2b..b00c1a2 100644 --- a/app/src/main/java/com/example/applogin/Login2Activity.java +++ b/app/src/main/java/com/example/applogin/Login2Activity.java @@ -32,6 +32,7 @@ import java.util.concurrent.ExecutionException; public class Login2Activity extends AppCompatActivity { ProgressBar loading; + Button signInButton; @Override protected void onCreate(Bundle savedInstanceState) { @@ -55,9 +56,9 @@ public class Login2Activity extends AppCompatActivity { } - final Button signInButton = findViewById(R.id.login); final EditText usernameEditText = findViewById(R.id.username); final EditText passwordEditText = findViewById(R.id.password); + signInButton = findViewById(R.id.login); loading = findViewById(R.id.loading); signInButton.setOnClickListener(new View.OnClickListener() { @Override @@ -92,8 +93,9 @@ public class Login2Activity extends AppCompatActivity { private void tryLogin(String username, String password) { - NativeLoginTask task = new NativeLoginTask(username, password); + signInButton.setEnabled(false); + NativeLoginTask task = new NativeLoginTask(username, password); task.execute(); try { @@ -101,6 +103,7 @@ public class Login2Activity extends AppCompatActivity { if (result == null) { + signInButton.setEnabled(true); Toast.makeText(Login2Activity.this, "error", Toast.LENGTH_SHORT).show(); }else{