diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000000000000000000000000000000000000..96cc43efa6a0885098044e976cd780bb42c68a70 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="CompilerConfiguration"> + <resourceExtensions /> + <wildcardResourcePatterns> + <entry name="!?*.java" /> + <entry name="!?*.form" /> + <entry name="!?*.class" /> + <entry name="!?*.groovy" /> + <entry name="!?*.scala" /> + <entry name="!?*.flex" /> + <entry name="!?*.kt" /> + <entry name="!?*.clj" /> + <entry name="!?*.aj" /> + </wildcardResourcePatterns> + <annotationProcessing> + <profile default="true" name="Default" enabled="false"> + <processorPath useClasspath="true" /> + </profile> + </annotationProcessing> + </component> +</project> \ No newline at end of file diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml new file mode 100644 index 0000000000000000000000000000000000000000..e7bedf3377d40335424fd605124d4761390218bb --- /dev/null +++ b/.idea/copyright/profiles_settings.xml @@ -0,0 +1,3 @@ +<component name="CopyrightManager"> + <settings default="" /> +</component> \ No newline at end of file diff --git a/.idea/dictionaries/Afifun.xml b/.idea/dictionaries/Afifun.xml new file mode 100644 index 0000000000000000000000000000000000000000..65486e551888445095660a70944da85ca269ac7b --- /dev/null +++ b/.idea/dictionaries/Afifun.xml @@ -0,0 +1,7 @@ +<component name="ProjectDictionaryState"> + <dictionary name="Afifun"> + <words> + <w>sukses</w> + </words> + </dictionary> +</component> \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000000000000000000000000000000000000..7ac24c777f8adde6bd57c01c1bfa1cf0143f3d77 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="GradleSettings"> + <option name="linkedExternalProjectsSettings"> + <GradleProjectSettings> + <option name="distributionType" value="DEFAULT_WRAPPED" /> + <option name="externalProjectPath" value="$PROJECT_DIR$" /> + <option name="modules"> + <set> + <option value="$PROJECT_DIR$" /> + <option value="$PROJECT_DIR$/app" /> + </set> + </option> + <option name="resolveModulePerSourceSet" value="false" /> + </GradleProjectSettings> + </option> + </component> +</project> \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000000000000000000000000000000000000..b0a270f57538ff000609da788e82b8bc7dba468e --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="EntryPointsManager"> + <entry_points version="2.0" /> + </component> + <component name="NullableNotNullManager"> + <option name="myDefaultNullable" value="android.support.annotation.Nullable" /> + <option name="myDefaultNotNull" value="android.support.annotation.NonNull" /> + <option name="myNullables"> + <value> + <list size="4"> + <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" /> + <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" /> + <item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" /> + <item index="3" class="java.lang.String" itemvalue="android.support.annotation.Nullable" /> + </list> + </value> + </option> + <option name="myNotNulls"> + <value> + <list size="4"> + <item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" /> + <item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" /> + <item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" /> + <item index="3" class="java.lang.String" itemvalue="android.support.annotation.NonNull" /> + </list> + </value> + </option> + </component> + <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK"> + <output url="file://$PROJECT_DIR$/build/classes" /> + </component> + <component name="ProjectType"> + <option name="id" value="Android" /> + </component> +</project> \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000000000000000000000000000000000000..ca793b4e2c6e57a63551463fa65aa53d97db0fa2 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectModuleManager"> + <modules> + <module fileurl="file://$PROJECT_DIR$/MyUI.iml" filepath="$PROJECT_DIR$/MyUI.iml" /> + <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" /> + </modules> + </component> +</project> \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 0000000000000000000000000000000000000000..7f68460d8b38ac04e3a3224d7c79ef719b1991a9 --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="RunConfigurationProducerService"> + <option name="ignoredProducers"> + <set> + <option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" /> + <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" /> + <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" /> + </set> + </option> + </component> +</project> \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000000000000000000000000000000000000..94a25f7f4cb416c083d265558da75d457237d671 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="VcsDirectoryMappings"> + <mapping directory="$PROJECT_DIR$" vcs="Git" /> + </component> +</project> \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index affe87655f7825df6826523196f35f14a8643e1c..47021c873a0d93f32147a1932459f1c9e7f3010d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -18,9 +18,9 @@ <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data - android:host="localhost" + android:host="myui-dev.cs.ui.ac.id" android:scheme="akuncs" - android:path="/"/> + android:path="/backend/token/"/> </intent-filter> </activity> <activity android:name=".activity.HomeActivity"/> diff --git a/app/src/main/java/id/ac/ui/cs/myui/ServiceGenerator.java b/app/src/main/java/id/ac/ui/cs/myui/ServiceGenerator.java index cf6c26956859d111518d023adfb9c2dacea7c459..492187539b8e41ab440ddd27af7773ed5ad9d2c4 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/ServiceGenerator.java +++ b/app/src/main/java/id/ac/ui/cs/myui/ServiceGenerator.java @@ -36,13 +36,15 @@ public class ServiceGenerator extends AsyncTask<Object, Object, AccessToken> { this.code = code; } - public static final String API_BASE_URL = "https://akun.cs.ui.ac.id/"; - public static final String BACKEND_BASE_URL = "http://10.0.2.2/"; + public static final String API_BASE_URL = "https://api.cs.ui.ac.id/"; + public static final String AUTH_BASE_URL = "https://akun.cs.ui.ac.id/"; + public static final String BACKEND_BASE_URL = "https://myui-dev.cs.ui.ac.id/backend/"; + @Override protected AccessToken doInBackground(Object... objects) { OkHttpClient.Builder httpClient = new OkHttpClient.Builder(); - AccessToken data = null; + AccessToken accessToken = null; Retrofit.Builder builder = new Retrofit.Builder() .baseUrl(BACKEND_BASE_URL) @@ -61,11 +63,11 @@ public class ServiceGenerator extends AsyncTask<Object, Object, AccessToken> { } try{ body = call.execute(); + accessToken = body.body(); String isSuccess = Integer.toString(body.code()); Log.i("SUCCESS", isSuccess); Log.i("REASON", body.message()); - JSONObject jsonResult = new JSONObject(new Gson().toJson(body.body())); - //JSONObject access_token = jsonResult.getJSONObject("access_token"); + JSONObject jsonResult = new JSONObject(new Gson().toJson(accessToken)); Log.i("TOKEN", jsonResult.toString()); } catch (IOException e){ @@ -75,15 +77,17 @@ public class ServiceGenerator extends AsyncTask<Object, Object, AccessToken> { e.printStackTrace(); } - return data; + return accessToken; } @Override protected void onPostExecute(AccessToken accessToken) { if(!(accessToken == null)){ - Intent i = new Intent(context, HomeActivity.class); - context.startActivity(i); + Intent i = new Intent(this.context, HomeActivity.class); + i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + i.putExtra("access_token", accessToken.toString()); + this.context.startActivity(i); } } diff --git a/app/src/main/java/id/ac/ui/cs/myui/activity/HomeActivity.java b/app/src/main/java/id/ac/ui/cs/myui/activity/HomeActivity.java index 0b39cfad4fe562960bd06970a818afd40110df94..4eb40925a27d4510ccde018ae6adefd63cc661f2 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/activity/HomeActivity.java +++ b/app/src/main/java/id/ac/ui/cs/myui/activity/HomeActivity.java @@ -1,9 +1,11 @@ package id.ac.ui.cs.myui.activity; +import android.content.Intent; import android.support.annotation.IdRes; import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; +import android.widget.TextView; import com.roughike.bottombar.BottomBar; import com.roughike.bottombar.OnTabSelectListener; @@ -43,6 +45,10 @@ public class HomeActivity extends AppCompatActivity { transaction.addToBackStack(null); transaction.commit(); setTitle("MyUI"); + + Intent i = getIntent(); + String accessToken = i.getStringExtra("acess_token"); + }else if(tabId == R.id.tab_jadwal) { //Use JadwalFragment JadwalFragment jadwalFragment = new JadwalFragment(); diff --git a/app/src/main/java/id/ac/ui/cs/myui/activity/LoginActivity.java b/app/src/main/java/id/ac/ui/cs/myui/activity/LoginActivity.java index 8738352a0e43282d0bacaf0b7c52bc605ef9211a..3f9730a2eeb4dec1bbbe43f1a2709c0c6da9cfb4 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/activity/LoginActivity.java +++ b/app/src/main/java/id/ac/ui/cs/myui/activity/LoginActivity.java @@ -12,6 +12,12 @@ import android.util.Log; import android.view.View; import android.widget.Button; import android.content.Intent; +import android.widget.Toast; + +import com.google.gson.Gson; + +import org.json.JSONException; +import org.json.JSONObject; import java.io.IOException; @@ -19,7 +25,12 @@ import id.ac.ui.cs.myui.AccessToken; import id.ac.ui.cs.myui.LoginService; import id.ac.ui.cs.myui.R; import id.ac.ui.cs.myui.ServiceGenerator; +import okhttp3.OkHttpClient; import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.gson.GsonConverterFactory; import retrofit2.http.Field; /** @@ -29,7 +40,8 @@ import retrofit2.http.Field; public class LoginActivity extends AppCompatActivity { private final String clientId = "2bfJDNTlHhR9TJO6kQ5OsINqeMpNqFrudWOC8Vg9"; - private final String redirectUri = "akuncs://localhost/"; + private final String redirectUri = "akuncs://myui-dev.cs.ui.ac.id/"; + private final String BACKEND_BASE_URL = "https://myui-dev.cs.ui.ac.id/backend/"; @Override protected void onCreate(Bundle savedInstanceState) { @@ -45,7 +57,7 @@ public class LoginActivity extends AppCompatActivity { public void onClick(View v){ Intent intent = new Intent( Intent.ACTION_VIEW, - Uri.parse(ServiceGenerator.API_BASE_URL + "" + "oauth/authorize/?response_type=code&client_id=" + clientId + "&state=random_state_string")); + Uri.parse(ServiceGenerator.AUTH_BASE_URL + "" + "oauth/authorize/?response_type=code&client_id=" + clientId + "&state=random_state_string")); startActivity(intent); } }); @@ -64,6 +76,8 @@ public class LoginActivity extends AppCompatActivity { if (code != null) { // get access token try{ + +// Do in background ServiceGenerator serviceGenerator = new ServiceGenerator(getApplicationContext(),code); serviceGenerator.execute(); } diff --git a/app/src/main/java/id/ac/ui/cs/myui/fragment/MainFragment.java b/app/src/main/java/id/ac/ui/cs/myui/fragment/MainFragment.java index cd52e9b7d2384782907382a83215eac7b3a709ec..669a9d718a2a1f871b636ce2625948a7d336ccf4 100644 --- a/app/src/main/java/id/ac/ui/cs/myui/fragment/MainFragment.java +++ b/app/src/main/java/id/ac/ui/cs/myui/fragment/MainFragment.java @@ -7,6 +7,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; +import android.widget.TextView; import android.widget.Toast; import id.ac.ui.cs.myui.R;