Skip to content
Snippets Groups Projects
Commit 0b0c2b5c authored by Jawnnypoo's avatar Jawnnypoo
Browse files

Some cleanup of full screen image activity

parent 9612f4c8
No related branches found
No related tags found
No related merge requests found
Showing
with 36 additions and 90 deletions
Loading
Loading
@@ -3,15 +3,16 @@ package com.commit451.gitlab.activity
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.os.Parcelable
import android.support.v7.widget.Toolbar
import android.widget.ImageView
import butterknife.BindView
import butterknife.ButterKnife
import com.commit451.gitlab.App
import com.commit451.gitlab.R
import com.commit451.gitlab.extension.getParcelerParcelable
import com.commit451.gitlab.model.api.Project
import com.github.chrisbanes.photoview.PhotoViewAttacher
import com.commit451.gitlab.widget.ProjectFeedWidgetConfigureProjectActivity.Companion.EXTRA_PROJECT
import com.github.chrisbanes.photoview.PhotoView
import org.parceler.Parcels
 
/**
Loading
Loading
@@ -21,49 +22,42 @@ class FullscreenImageActivity : BaseActivity() {
 
companion object {
 
val IMAGE_URL = "url"
private val KEY_URL = "url"
private val KEY_PROJECT = "project"
 
private val EXTRA_PROJECT = "extra_project"
fun newIntent(context: Context, project: Project): Intent {
fun newIntent(context: Context, project: Project, url: String): Intent {
val intent = Intent(context, FullscreenImageActivity::class.java)
intent.putExtra(EXTRA_PROJECT, Parcels.wrap(project))
intent.putExtra(KEY_PROJECT, Parcels.wrap(project))
intent.putExtra(KEY_URL, url)
return intent
}
}
 
@BindView(R.id.toolbar) lateinit var toolbar: Toolbar
@BindView(R.id.fullscreen_content) lateinit var contentView: ImageView
lateinit var photoViewAttacher: PhotoViewAttacher
@BindView(R.id.fullscreen_content) lateinit var photoView: PhotoView
lateinit var project: Project
 
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_fullscreen_image)
ButterKnife.bind(this)
setToolbar()
 
project = Parcels.unwrap<Project>(intent.getParcelableExtra<Parcelable>(FullscreenImageActivity.EXTRA_PROJECT))
project = intent.getParcelerParcelable(KEY_PROJECT)
toolbar.setNavigationIcon(R.drawable.ic_back_24dp)
toolbar.setNavigationOnClickListener {
onBackPressed()
}
 
photoViewAttacher = PhotoViewAttacher(contentView)
photoViewAttacher.scaleType = ImageView.ScaleType.FIT_CENTER
photoView.scaleType = ImageView.ScaleType.FIT_CENTER
 
var imageUrl: String = intent.getStringExtra(IMAGE_URL)
var imageUrl: String = intent.getStringExtra(KEY_URL)
if (imageUrl.startsWith("/")) {
imageUrl = App.get().getAccount().serverUrl.toString() + project.pathWithNamespace + imageUrl
}
App.get().picasso.load(imageUrl).into(contentView)
}
private fun setToolbar() {
toolbar.setNavigationIcon(R.drawable.ic_back_24dp)
toolbar.title = ""
setSupportActionBar(toolbar)
}
override fun onSupportNavigateUp(): Boolean {
onBackPressed()
return true
App.get().picasso
.load(imageUrl)
.into(photoView)
}
}
package com.commit451.gitlab.adapter
 
import `in`.uncod.android.bypass.Bypass
import `in`.uncod.android.bypass.ImageSpanClickListener
import android.content.Context
import android.support.v7.widget.RecyclerView
import android.view.ViewGroup
import com.commit451.gitlab.activity.FullscreenImageActivity
import com.commit451.gitlab.model.api.MergeRequest
import com.commit451.gitlab.model.api.Note
import com.commit451.gitlab.model.api.Project
Loading
Loading
@@ -32,12 +30,7 @@ class MergeRequestDetailAdapter(context: Context, private val mergeRequest: Merg
 
private val notes: LinkedList<Note> = LinkedList()
private var loading = false
private var imageClickListener = ImageSpanClickListener { view, imageSpan,
imageUrl ->
val intent = FullscreenImageActivity.newIntent(view.context, project)
intent.putExtra(FullscreenImageActivity.IMAGE_URL, imageUrl)
context.startActivity(intent)
}
private val bypass: Bypass = BypassFactory.create(context, project)
 
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
Loading
Loading
Loading
Loading
@@ -30,7 +30,7 @@ object OkHttpClientFactory {
val builder = OkHttpClient.Builder()
.connectTimeout(30, TimeUnit.SECONDS)
.addInterceptor(AuthenticationRequestInterceptor(account))
.sslSocketFactory(customTrustManager.getSSLSocketFactory(), X509TrustManagerProvider.get())
.sslSocketFactory(customTrustManager.getSSLSocketFactory(), X509TrustManagerProvider.x509TrustManager)
.hostnameVerifier(customTrustManager.getHostnameVerifier())
 
if (includeSignInAuthenticator) {
Loading
Loading
package com.commit451.gitlab.api
 
import java.security.KeyStore
import java.security.KeyStoreException
import java.security.NoSuchAlgorithmException
import java.util.*
import javax.net.ssl.TrustManagerFactory
import javax.net.ssl.X509TrustManager
Loading
Loading
@@ -12,34 +10,7 @@ import javax.net.ssl.X509TrustManager
*/
object X509TrustManagerProvider {
 
private var x509TrustManager: X509TrustManager? = null
/**
* Get the static [X509TrustManager] for the system
* @return the static get
*/
fun get(): X509TrustManager {
if (x509TrustManager == null) {
try {
init()
} catch (any: Exception) {
//If they don't have X509 trust manager, they have bigger problems
throw RuntimeException(any)
}
}
return x509TrustManager!!
}
/**
* Getting the [X509TrustManager] as shown in the [okhttp3.OkHttpClient.Builder.sslSocketFactory] docs
* @throws NoSuchAlgorithmException
* *
* @throws KeyStoreException
*/
@Throws(NoSuchAlgorithmException::class, KeyStoreException::class)
private fun init() {
val x509TrustManager: X509TrustManager by lazy {
val trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm())
val nullKeystore : KeyStore? = null
trustManagerFactory.init(nullKeystore)
Loading
Loading
@@ -47,6 +18,6 @@ object X509TrustManagerProvider {
if (trustManagers.size != 1 || trustManagers[0] !is X509TrustManager) {
throw IllegalStateException("Unexpected default trust managers:" + Arrays.toString(trustManagers))
}
x509TrustManager = trustManagers[0] as X509TrustManager
trustManagers[0] as X509TrustManager
}
}
Loading
Loading
@@ -46,14 +46,14 @@ class CustomTrustManager : X509TrustManager {
 
@Throws(CertificateException::class)
override fun checkClientTrusted(chain: Array<X509Certificate>, authType: String) {
X509TrustManagerProvider.get().checkClientTrusted(chain, authType)
X509TrustManagerProvider.x509TrustManager.checkClientTrusted(chain, authType)
}
 
@Throws(CertificateException::class)
override fun checkServerTrusted(chain: Array<X509Certificate>, authType: String) {
val cause: CertificateException
try {
X509TrustManagerProvider.get().checkServerTrusted(chain, authType)
X509TrustManagerProvider.x509TrustManager.checkServerTrusted(chain, authType)
return
} catch (e: CertificateException) {
cause = e
Loading
Loading
@@ -67,7 +67,7 @@ class CustomTrustManager : X509TrustManager {
}
 
override fun getAcceptedIssuers(): Array<X509Certificate> {
return X509TrustManagerProvider.get().acceptedIssuers
return X509TrustManagerProvider.x509TrustManager.acceptedIssuers
}
 
fun getSSLSocketFactory(): SSLSocketFactory {
Loading
Loading
Loading
Loading
@@ -22,7 +22,7 @@ public final class X509Util {
return hexify(digest.digest());
}
 
private static String hexify(byte[] bytes) {
public static String hexify(byte[] bytes) {
char[] hexChars = new char[bytes.length * 3];
for (int i = 0; i < bytes.length; i++) {
int v = bytes[i] & 0xFF;
Loading
Loading
Loading
Loading
@@ -16,9 +16,8 @@ object BypassFactory {
 
fun create(context: Context, project: Project): Bypass {
val bypass = Bypass(context)
bypass.setImageSpanClickListener { view, imageSpan, imageUrl ->
val intent = FullscreenImageActivity.newIntent(view.context, project)
intent.putExtra(FullscreenImageActivity.IMAGE_URL, imageUrl)
bypass.setImageSpanClickListener { view, _, imageUrl ->
val intent = FullscreenImageActivity.newIntent(view.context, project, imageUrl)
context.startActivity(intent)
}
return bypass
Loading
Loading
Loading
Loading
@@ -2,6 +2,8 @@ package com.commit451.gitlab.util;
 
import android.net.Uri;
 
import com.commit451.gitlab.ssl.X509Util;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.Charset;
Loading
Loading
@@ -9,7 +11,6 @@ import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
 
public final class Gravatar {
private static final char[] HEX_ARRAY = "0123456789abcdef".toCharArray();
 
private Gravatar() {
}
Loading
Loading
@@ -26,22 +27,11 @@ public final class Gravatar {
return new Builder(email);
}
 
private static String hexify(byte[] bytes) {
char[] hexChars = new char[bytes.length * 2];
for (int i = 0; i < bytes.length; i++) {
int v = bytes[i] & 0xFF;
hexChars[i * 2] = HEX_ARRAY[v >>> 4];
hexChars[i * 2 + 1] = HEX_ARRAY[v & 0x0F];
}
return new String(hexChars, 0, hexChars.length);
}
private static String md5(String raw) {
try {
MessageDigest digest = MessageDigest.getInstance("MD5");
digest.update(raw.getBytes(Charset.forName("UTF-8")));
return hexify(digest.digest());
return X509Util.hexify(digest.digest());
} catch (NoSuchAlgorithmException e) {
throw new IllegalStateException(e);
}
Loading
Loading
Loading
Loading
@@ -55,7 +55,7 @@ class UserFeedWidgetConfigureActivity : BaseActivity() {
toolbar.setTitle(R.string.widget_choose_account)
 
adapterAccounts = AccountsAdapter()
adapterAccounts.setOnItemClickListener { adapter, view, position -> saveWidgetConfig(adapter.get(position)) }
adapterAccounts.setOnItemClickListener { adapter, _, position -> saveWidgetConfig(adapter.get(position)) }
list.layoutManager = LinearLayoutManager(this)
list.adapter = adapterAccounts
 
Loading
Loading
Loading
Loading
@@ -3,11 +3,10 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black"
tools:context="com.commit451.gitlab.activity.FullscreenImageActivity">
 
<com.github.chrisbanes.photoview.PhotoView
android:id="@+id/fullscreen_content"
android:id="@+id/photo_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment