Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
M
Magisk
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Magisk
Commits
46abbfe2
Commit
46abbfe2
authored
Sep 13, 2016
by
d8ahazard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
More refinements...
parent
145d4e4b
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
328 additions
and
131 deletions
+328
-131
BaseModuleFragment.java
...rc/main/java/com/topjohnwu/magisk/BaseModuleFragment.java
+162
-88
ReposAdapter.java
app/src/main/java/com/topjohnwu/magisk/ReposAdapter.java
+46
-16
ReposFragment.java
app/src/main/java/com/topjohnwu/magisk/ReposFragment.java
+90
-2
Module.java
app/src/main/java/com/topjohnwu/magisk/module/Module.java
+11
-10
Repo.java
app/src/main/java/com/topjohnwu/magisk/module/Repo.java
+18
-15
RepoHelper.java
...src/main/java/com/topjohnwu/magisk/module/RepoHelper.java
+1
-0
No files found.
app/src/main/java/com/topjohnwu/magisk/BaseModuleFragment.java
View file @
46abbfe2
This diff is collapsed.
Click to expand it.
app/src/main/java/com/topjohnwu/magisk/ReposAdapter.java
View file @
46abbfe2
...
@@ -33,24 +33,37 @@ import butterknife.ButterKnife;
...
@@ -33,24 +33,37 @@ import butterknife.ButterKnife;
public
class
ReposAdapter
extends
RecyclerView
.
Adapter
<
ReposAdapter
.
ViewHolder
>
{
public
class
ReposAdapter
extends
RecyclerView
.
Adapter
<
ReposAdapter
.
ViewHolder
>
{
private
ReposFragment
reposFragment
;
private
final
List
<
Repo
>
mList
;
private
final
List
<
Repo
>
mList
;
List
<
Boolean
>
mExpandedList
;
List
<
Boolean
>
mExpandedList
;
private
View
viewMain
;
private
View
viewMain
;
private
Context
context
;
private
Context
context
;
private
boolean
mIsInstalled
,
mCanUpdate
;
private
boolean
mCanUpdate
;
private
boolean
alertUpdate
;
private
boolean
ignoreAlertUpdate
;
private
Repo
repo
;
private
Repo
repo
;
private
ViewHolder
mHolder
;
private
ViewHolder
mHolder
;
private
String
mDonateUrl
,
mSupportUrl
,
mLogUrl
,
alertPackage
;
private
SharedPreferences
prefs
;
public
ReposAdapter
(
ReposFragment
reposFragment
,
List
<
Repo
>
list
)
{
public
ReposAdapter
(
ReposFragment
reposFragment
,
List
<
Repo
>
list
)
{
this
.
reposFragment
=
reposFragment
;
ReposFragment
reposFragment1
=
reposFragment
;
alertPackage
=
""
;
alertUpdate
=
false
;
this
.
mList
=
list
;
this
.
mList
=
list
;
Log
.
d
(
"Magisk"
,
"ReposAdapter: I am alive. I have a list "
+
list
.
size
());
Log
.
d
(
"Magisk"
,
"ReposAdapter: I am alive. I have a list "
+
list
.
size
());
mExpandedList
=
new
ArrayList
<>(
mList
.
size
());
mExpandedList
=
new
ArrayList
<>(
mList
.
size
());
for
(
int
i
=
0
;
i
<
mList
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
mList
.
size
();
i
++)
{
mExpandedList
.
add
(
false
);
mExpandedList
.
add
(
false
);
if
(
mList
.
get
(
i
).
canUpdate
())
{
alertUpdate
=
true
;
if
(
alertPackage
.
equals
(
""
))
{
alertPackage
=
mList
.
get
(
i
).
getName
();
}
else
{
alertPackage
+=
mList
.
get
(
i
).
getName
()
+
", "
;
}
}
}
}
}
}
@Override
@Override
...
@@ -75,17 +88,21 @@ public class ReposAdapter extends RecyclerView.Adapter<ReposAdapter.ViewHolder>
...
@@ -75,17 +88,21 @@ public class ReposAdapter extends RecyclerView.Adapter<ReposAdapter.ViewHolder>
@Override
@Override
public
void
onBindViewHolder
(
final
ViewHolder
holder
,
int
position
)
{
public
void
onBindViewHolder
(
final
ViewHolder
holder
,
int
position
)
{
prefs
=
PreferenceManager
.
getDefaultSharedPreferences
(
context
);
repo
=
mList
.
get
(
position
);
repo
=
mList
.
get
(
position
);
mHolder
=
holder
;
mHolder
=
holder
;
mDonateUrl
=
repo
.
getmDonateUrl
();
mSupportUrl
=
repo
.
getmSupportUrl
();
mLogUrl
=
repo
.
getmLogUrl
();
mExpandedList
=
new
ArrayList
<>(
mList
.
size
());
mExpandedList
=
new
ArrayList
<>(
mList
.
size
());
for
(
int
i
=
0
;
i
<
mList
.
size
();
i
++)
{
for
(
int
i
=
0
;
i
<
mList
.
size
();
i
++)
{
mExpandedList
.
add
(
false
);
mExpandedList
.
add
(
false
);
}
}
SetupViewElements
();
SetupViewElements
(
repo
);
}
}
private
void
SetupViewElements
()
{
private
void
SetupViewElements
(
Repo
repo
)
{
int
mPosition
=
mHolder
.
getAdapterPosition
();
int
mPosition
=
mHolder
.
getAdapterPosition
();
String
titleString
;
String
titleString
;
if
(
repo
.
getId
()
!=
null
)
{
if
(
repo
.
getId
()
!=
null
)
{
...
@@ -100,26 +117,37 @@ public class ReposAdapter extends RecyclerView.Adapter<ReposAdapter.ViewHolder>
...
@@ -100,26 +117,37 @@ public class ReposAdapter extends RecyclerView.Adapter<ReposAdapter.ViewHolder>
mHolder
.
description
.
setText
(
repo
.
getDescription
());
mHolder
.
description
.
setText
(
repo
.
getDescription
());
String
authorString
=
this
.
context
.
getResources
().
getString
(
R
.
string
.
author
)
+
" "
+
repo
.
getmAuthor
();
String
authorString
=
this
.
context
.
getResources
().
getString
(
R
.
string
.
author
)
+
" "
+
repo
.
getmAuthor
();
mHolder
.
author
.
setText
(
authorString
);
mHolder
.
author
.
setText
(
authorString
);
String
logUrl
=
repo
.
getmLogUrl
();
String
supportUrl
=
repo
.
getmSupportUrl
();
String
donateUrl
=
repo
.
getmDonateUrl
();
if
(
supportUrl
.
equals
(
""
))
mHolder
.
supportLink
.
setBackgroundColor
(
Color
.
GRAY
);
if
(
logUrl
.
equals
(
""
))
mHolder
.
changeLog
.
setBackgroundColor
(
Color
.
GRAY
);
if
(
donateUrl
.
equals
(
""
))
mHolder
.
authorLink
.
setBackgroundColor
(
Color
.
GRAY
);
if
(
prefs
.
contains
(
"ignoreUpdateAlerts"
))
{
ignoreAlertUpdate
=
prefs
.
getBoolean
(
"ignoreUpdateAlerts"
,
false
);
}
mHolder
.
installedStatus
.
setText
(
repo
.
isInstalled
()
?
this
.
context
.
getResources
().
getString
(
R
.
string
.
module_installed
)
:
this
.
context
.
getResources
().
getString
(
R
.
string
.
module_not_installed
));
mHolder
.
installedStatus
.
setText
(
repo
.
isInstalled
()
?
this
.
context
.
getResources
().
getString
(
R
.
string
.
module_installed
)
:
this
.
context
.
getResources
().
getString
(
R
.
string
.
module_not_installed
));
if
(
mExpandedList
.
get
(
mPosition
))
{
if
(
mExpandedList
.
get
(
mPosition
))
{
mHolder
.
expandLayout
.
setVisibility
(
View
.
VISIBLE
);
mHolder
.
expandLayout
.
setVisibility
(
View
.
VISIBLE
);
}
else
{
}
else
{
mHolder
.
expandLayout
.
setVisibility
(
View
.
GONE
);
mHolder
.
expandLayout
.
setVisibility
(
View
.
GONE
);
}
}
if
(
repo
.
isInstalled
())
{
if
(
repo
.
isInstalled
())
{
mHolder
.
installedStatus
.
setTextColor
(
Color
.
parseColor
(
"#14AD00"
));
mHolder
.
installedStatus
.
setTextColor
(
Color
.
parseColor
(
"#14AD00"
));
mHolder
.
updateStatus
.
setText
(
repo
.
canUpdate
()
?
this
.
context
.
getResources
().
getString
(
R
.
string
.
module_update_available
)
:
this
.
context
.
getResources
().
getString
(
R
.
string
.
module_up_to_date
));
mHolder
.
updateStatus
.
setText
(
repo
.
canUpdate
()
?
this
.
context
.
getResources
().
getString
(
R
.
string
.
module_update_available
)
:
this
.
context
.
getResources
().
getString
(
R
.
string
.
module_up_to_date
));
}
}
Log
.
d
(
"Magisk"
,
"ReposAdapter: Setting up info "
+
repo
.
getId
()
+
" and "
+
repo
.
getDescription
()
+
" and "
+
repo
.
getmVersion
());
Log
.
d
(
"Magisk"
,
"ReposAdapter: Setting up info "
+
repo
.
getId
()
+
" and "
+
repo
.
getDescription
()
+
" and "
+
repo
.
getmVersion
());
SharedPreferences
prefs
=
PreferenceManager
.
getDefaultSharedPreferences
(
context
);
prefs
=
PreferenceManager
.
getDefaultSharedPreferences
(
context
);
mCanUpdate
=
prefs
.
getBoolean
(
"repo-isInstalled_"
+
repo
.
getId
(),
false
);
mCanUpdate
=
prefs
.
getBoolean
(
"repo-canUpdate_"
+
repo
.
getId
(),
false
);
View
.
OnClickListener
oCl
=
view
->
{
View
.
OnClickListener
oCl
=
view
->
{
Log
.
d
(
"Magisk"
,
"Onlick captured, view is "
+
view
.
getId
());
Log
.
d
(
"Magisk"
,
"Onlick captured, view is "
+
view
.
getId
());
if
(
view
.
getId
()
==
mHolder
.
updateImage
.
getId
())
{
if
(
view
.
getId
()
==
mHolder
.
updateImage
.
getId
())
{
if
(!
mIsInstalled
|
mCanUpdate
)
{
if
(!
repo
.
isInstalled
()
|
repo
.
canUpdate
()
)
{
Utils
.
DownloadReceiver
receiver
=
new
Utils
.
DownloadReceiver
()
{
Utils
.
DownloadReceiver
receiver
=
new
Utils
.
DownloadReceiver
()
{
@Override
@Override
...
@@ -134,14 +162,14 @@ public class ReposAdapter extends RecyclerView.Adapter<ReposAdapter.ViewHolder>
...
@@ -134,14 +162,14 @@ public class ReposAdapter extends RecyclerView.Adapter<ReposAdapter.ViewHolder>
Toast
.
makeText
(
context
,
repo
.
getId
()
+
" is already installed."
,
Toast
.
LENGTH_SHORT
).
show
();
Toast
.
makeText
(
context
,
repo
.
getId
()
+
" is already installed."
,
Toast
.
LENGTH_SHORT
).
show
();
}
}
}
}
if
(
view
.
getId
()
==
mHolder
.
changeLog
.
getId
(
))
{
if
(
(
view
.
getId
()
==
mHolder
.
changeLog
.
getId
())
&&
(!
repo
.
getmLogUrl
().
equals
(
""
)
))
{
new
WebWindow
(
"Changelog"
,
repo
.
getmLog
Text
(),
this
.
context
);
new
WebWindow
(
"Changelog"
,
repo
.
getmLog
Url
(),
context
);
}
}
if
(
view
.
getId
()
==
mHolder
.
authorLink
.
getId
(
))
{
if
(
(
view
.
getId
()
==
mHolder
.
authorLink
.
getId
())
&&
(!
repo
.
getmSupportUrl
().
equals
(
""
)
))
{
new
WebWindow
(
"Donate"
,
repo
.
getmDonateUrl
(),
this
.
context
);
new
WebWindow
(
"Donate"
,
repo
.
getmDonateUrl
(),
context
);
}
}
if
(
view
.
getId
()
==
mHolder
.
supportLink
.
getId
(
))
{
if
(
(
view
.
getId
()
==
mHolder
.
supportLink
.
getId
())
&&
(!
repo
.
getmSupportUrl
().
equals
(
""
)
))
{
new
WebWindow
(
"Support"
,
repo
.
getmSupportUrl
(),
this
.
context
);
new
WebWindow
(
"Support"
,
repo
.
getmSupportUrl
(),
context
);
}
}
};
};
mHolder
.
changeLog
.
setOnClickListener
(
oCl
);
mHolder
.
changeLog
.
setOnClickListener
(
oCl
);
...
@@ -149,13 +177,15 @@ public class ReposAdapter extends RecyclerView.Adapter<ReposAdapter.ViewHolder>
...
@@ -149,13 +177,15 @@ public class ReposAdapter extends RecyclerView.Adapter<ReposAdapter.ViewHolder>
mHolder
.
authorLink
.
setOnClickListener
(
oCl
);
mHolder
.
authorLink
.
setOnClickListener
(
oCl
);
mHolder
.
supportLink
.
setOnClickListener
(
oCl
);
mHolder
.
supportLink
.
setOnClickListener
(
oCl
);
if
(
prefs
.
contains
(
"repo-isInstalled_"
+
repo
.
getId
()))
{
if
(
prefs
.
contains
(
"repo-isInstalled_"
+
repo
.
getId
()))
{
mIsInstalled
=
prefs
.
getBoolean
(
"repo-isInstalled_"
+
repo
.
getId
(),
false
);
boolean
mIsInstalled
=
prefs
.
getBoolean
(
"repo-isInstalled_"
+
repo
.
getId
(),
false
);
}
}
}
}
}
}
@Override
@Override
public
int
getItemCount
()
{
public
int
getItemCount
()
{
return
mList
.
size
();
return
mList
.
size
();
...
...
app/src/main/java/com/topjohnwu/magisk/ReposFragment.java
View file @
46abbfe2
package
com
.
topjohnwu
.
magisk
;
package
com
.
topjohnwu
.
magisk
;
import
android.content.Context
;
import
android.content.Context
;
import
android.content.DialogInterface
;
import
android.content.SharedPreferences
;
import
android.os.AsyncTask
;
import
android.os.AsyncTask
;
import
android.os.Bundle
;
import
android.os.Bundle
;
import
android.preference.PreferenceManager
;
import
android.support.annotation.Nullable
;
import
android.support.annotation.Nullable
;
import
android.support.v4.app.Fragment
;
import
android.support.v4.app.Fragment
;
import
android.support.v4.widget.SwipeRefreshLayout
;
import
android.support.v4.widget.SwipeRefreshLayout
;
import
android.support.v7.app.AlertDialog
;
import
android.support.v7.widget.RecyclerView
;
import
android.support.v7.widget.RecyclerView
;
import
android.util.Log
;
import
android.util.Log
;
import
android.view.LayoutInflater
;
import
android.view.LayoutInflater
;
...
@@ -15,8 +19,11 @@ import android.widget.TextView;
...
@@ -15,8 +19,11 @@ import android.widget.TextView;
import
com.topjohnwu.magisk.module.Repo
;
import
com.topjohnwu.magisk.module.Repo
;
import
com.topjohnwu.magisk.module.RepoHelper
;
import
com.topjohnwu.magisk.module.RepoHelper
;
import
com.topjohnwu.magisk.utils.Utils
;
import
java.io.File
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.List
;
import
butterknife.BindView
;
import
butterknife.BindView
;
...
@@ -25,41 +32,83 @@ import butterknife.ButterKnife;
...
@@ -25,41 +32,83 @@ import butterknife.ButterKnife;
public
class
ReposFragment
extends
Fragment
{
public
class
ReposFragment
extends
Fragment
{
public
static
List
<
Repo
>
mListRepos
=
new
ArrayList
<>();
public
static
List
<
Repo
>
mListRepos
=
new
ArrayList
<>();
public
static
List
<
Repo
>
mListReposToUpdate
=
new
ArrayList
<>();
@BindView
(
R
.
id
.
recyclerView
)
@BindView
(
R
.
id
.
recyclerView
)
RecyclerView
recyclerView
;
RecyclerView
recyclerView
;
@BindView
(
R
.
id
.
empty_rv
)
@BindView
(
R
.
id
.
empty_rv
)
TextView
emptyTv
;
TextView
emptyTv
;
@BindView
(
R
.
id
.
swipeRefreshLayout
)
@BindView
(
R
.
id
.
swipeRefreshLayout
)
SwipeRefreshLayout
swipeRefreshLayout
;
SwipeRefreshLayout
swipeRefreshLayout
;
private
View
mView
;
private
boolean
mCanUpdate
;
private
boolean
alertUpdate
;
private
boolean
ignoreAlertUpdate
;
private
String
alertPackage
;
private
SharedPreferences
prefs
;
@Nullable
@Nullable
@Override
@Override
public
View
onCreateView
(
LayoutInflater
inflater
,
@Nullable
ViewGroup
container
,
@Nullable
Bundle
savedInstanceState
)
{
public
View
onCreateView
(
LayoutInflater
inflater
,
@Nullable
ViewGroup
container
,
@Nullable
Bundle
savedInstanceState
)
{
View
view
=
inflater
.
inflate
(
R
.
layout
.
single_repo_fragment
,
container
,
false
);
View
view
=
inflater
.
inflate
(
R
.
layout
.
single_repo_fragment
,
container
,
false
);
mView
=
view
;
ButterKnife
.
bind
(
this
,
view
);
ButterKnife
.
bind
(
this
,
view
);
prefs
=
PreferenceManager
.
getDefaultSharedPreferences
(
getActivity
());
if
(
prefs
.
contains
(
"ignoreUpdateAlerts"
))
{
ignoreAlertUpdate
=
prefs
.
getBoolean
(
"ignoreUpdateAlerts"
,
false
);
}
swipeRefreshLayout
.
setOnRefreshListener
(()
->
{
swipeRefreshLayout
.
setOnRefreshListener
(()
->
{
Log
.
d
(
"Magisk"
,
"ReposFragment: WTF IM CALLED"
);
this
.
LoadRepo
(
true
);
this
.
LoadRepo
(
true
);
ignoreAlertUpdate
=
false
;
prefs
.
edit
().
putBoolean
(
"ignoreUpdateAlerts"
,
false
).
apply
();
});
});
LoadRepo
(
false
);
LoadRepo
(
false
);
setHasOptionsMenu
(
false
);
setHasOptionsMenu
(
false
);
alertUpdate
=
false
;
if
(
mListRepos
.
size
()
==
0
)
{
if
(
mListRepos
.
size
()
==
0
)
{
emptyTv
.
setVisibility
(
View
.
VISIBLE
);
emptyTv
.
setVisibility
(
View
.
VISIBLE
);
recyclerView
.
setVisibility
(
View
.
GONE
);
recyclerView
.
setVisibility
(
View
.
GONE
);
return
view
;
return
view
;
}
}
CheckForUpdates
();
Log
.
d
(
"Magisk"
,
"ReposFragment: ListRepos size is "
+
listRepos
().
size
());
Log
.
d
(
"Magisk"
,
"ReposFragment: ListRepos size is "
+
listRepos
().
size
());
recyclerView
.
setAdapter
(
new
ReposAdapter
(
this
,
mListRepos
));
recyclerView
.
setAdapter
(
new
ReposAdapter
(
this
,
mListRepos
));
return
view
;
return
view
;
}
}
@Override
public
void
onStart
()
{
super
.
onStart
();
NotifyOfAlerts
();
}
private
void
CheckForUpdates
()
{
for
(
int
i
=
0
;
i
<
mListRepos
.
size
();
i
++)
{
if
(
mListRepos
.
get
(
i
).
canUpdate
())
{
alertUpdate
=
true
;
mListReposToUpdate
.
add
(
mListRepos
.
get
(
i
));
}
}
}
@Override
public
void
onAttachFragment
(
Fragment
childFragment
)
{
super
.
onAttachFragment
(
childFragment
);
}
private
void
LoadRepo
(
boolean
doReload
)
{
private
void
LoadRepo
(
boolean
doReload
)
{
RepoHelper
.
TaskDelegate
taskDelegate
=
result
->
{
RepoHelper
.
TaskDelegate
taskDelegate
=
result
->
{
if
(
result
.
equals
(
"Complete"
))
{
if
(
result
.
equals
(
"Complete"
))
{
Log
.
d
(
"Magisk"
,
"ReposFragment, got delegate"
);
Log
.
d
(
"Magisk"
,
"ReposFragment, got delegate"
);
UpdateUI
();
UpdateUI
();
if
(
mView
!=
null
)
{
mView
.
invalidate
();
mView
.
requestLayout
();
}
}
}
};
};
...
@@ -75,6 +124,43 @@ public class ReposFragment extends Fragment {
...
@@ -75,6 +124,43 @@ public class ReposFragment extends Fragment {
}
}
private
void
NotifyOfAlerts
()
{
if
(
alertUpdate
&&
!
ignoreAlertUpdate
)
{
Iterator
<
Repo
>
iterRepo
=
mListReposToUpdate
.
iterator
();
while
(
iterRepo
.
hasNext
())
{
Repo
repo
=
iterRepo
.
next
();
DialogInterface
.
OnClickListener
dialogClickListener
=
(
dialog
,
which
)
->
{
switch
(
which
)
{
case
DialogInterface
.
BUTTON_POSITIVE
:
Utils
.
DownloadReceiver
receiver
=
new
Utils
.
DownloadReceiver
()
{
@Override
public
void
task
(
File
file
)
{
Log
.
d
(
"Magisk"
,
"Task firing"
);
new
Utils
.
FlashZIP
(
getActivity
(),
repo
.
getId
(),
file
.
toString
()).
execute
();
}
};
String
filename
=
repo
.
getId
().
replace
(
" "
,
""
)
+
".zip"
;
Utils
.
downloadAndReceive
(
getActivity
(),
receiver
,
repo
.
getmZipUrl
(),
filename
);
break
;
case
DialogInterface
.
BUTTON_NEGATIVE
:
ignoreAlertUpdate
=
true
;
SharedPreferences
.
Editor
editor
=
prefs
.
edit
();
editor
.
putBoolean
(
"ignoreUpdateAlerts"
,
ignoreAlertUpdate
);
editor
.
apply
();
break
;
}
};
AlertDialog
.
Builder
builder
=
new
AlertDialog
.
Builder
(
getActivity
());
builder
.
setMessage
(
"An update is available for "
+
repo
.
getName
()
+
". Would you like to install it?"
).
setPositiveButton
(
"Yes"
,
dialogClickListener
)
.
setNegativeButton
(
"No"
,
dialogClickListener
).
show
();
iterRepo
.
remove
();
}
}
}
@Override
@Override
...
@@ -102,6 +188,8 @@ public class ReposFragment extends Fragment {
...
@@ -102,6 +188,8 @@ public class ReposFragment extends Fragment {
recyclerView
.
setAdapter
(
new
ReposAdapter
(
this
,
listRepos
()));
recyclerView
.
setAdapter
(
new
ReposAdapter
(
this
,
listRepos
()));
if
(
swipeRefreshLayout
.
isRefreshing
())
{
if
(
swipeRefreshLayout
.
isRefreshing
())
{
swipeRefreshLayout
.
setRefreshing
(
false
);
swipeRefreshLayout
.
setRefreshing
(
false
);
CheckForUpdates
();
NotifyOfAlerts
();
}
}
...
...
app/src/main/java/com/topjohnwu/magisk/module/Module.java
View file @
46abbfe2
...
@@ -16,7 +16,7 @@ public class Module {
...
@@ -16,7 +16,7 @@ public class Module {
private
String
mVersion
=
"(No version provided)"
;
private
String
mVersion
=
"(No version provided)"
;
private
String
mDescription
=
"(No description provided)"
;
private
String
mDescription
=
"(No description provided)"
;
private
String
mUrl
,
mSupportUrl
,
mDonateUrl
,
mZipUrl
,
mBaseUrl
,
mManifestUrl
,
mAuthor
,
mLogUrl
;
private
String
mUrl
,
mSupportUrl
,
mDonateUrl
,
mZipUrl
,
mBaseUrl
,
mManifestUrl
,
mAuthor
,
mLogUrl
;
private
boolean
mEnable
,
mRemove
,
mUpdateAvailable
,
mIsOnline
,
mIsCacheModule
;
private
boolean
mEnable
,
mRemove
,
mUpdateAvailable
,
mIsInstalled
,
mIsCacheModule
;
private
String
mId
;
private
String
mId
;
...
@@ -81,12 +81,13 @@ public class Module {
...
@@ -81,12 +81,13 @@ public class Module {
this
.
mLogUrl
=
props
[
1
];
this
.
mLogUrl
=
props
[
1
];
break
;
break
;
default
:
default
:
Log
.
d
(
"Magisk"
,
"Manifest string not recognized: "
+
props
[
0
]);
Log
.
d
(
"Magisk"
,
"M
odule: M
anifest string not recognized: "
+
props
[
0
]);
break
;
break
;
}
}
}
}
Log
.
d
(
"Magisk"
,
"Module: Loaded module with ID of "
+
this
.
mId
+
" or "
+
mId
);
SharedPreferences
prefs
=
PreferenceManager
.
getDefaultSharedPreferences
(
context
);
SharedPreferences
prefs
=
PreferenceManager
.
getDefaultSharedPreferences
(
context
);
...
@@ -97,7 +98,6 @@ public class Module {
...
@@ -97,7 +98,6 @@ public class Module {
if
(!
preferenceKey
.
equals
(
"nope"
))
{
if
(!
preferenceKey
.
equals
(
"nope"
))
{
Log
.
d
(
"Magisk"
,
"Module: repo_"
+
mId
+
" found."
);
Log
.
d
(
"Magisk"
,
"Module: repo_"
+
mId
+
" found."
);
String
entryString
=
prefs
.
getString
(
"repo_"
+
mId
,
""
);
String
entryString
=
prefs
.
getString
(
"repo_"
+
mId
,
""
);
String
[]
subStrings
=
entryString
.
split
(
"\n"
);
String
[]
subStrings
=
entryString
.
split
(
"\n"
);
for
(
String
subKeys
:
subStrings
)
{
for
(
String
subKeys
:
subStrings
)
{
String
[]
idEntry
=
subKeys
.
split
(
"="
,
2
);
String
[]
idEntry
=
subKeys
.
split
(
"="
,
2
);
...
@@ -107,9 +107,9 @@ public class Module {
...
@@ -107,9 +107,9 @@ public class Module {
}
}
if
(
idEntry
[
1
].
equals
(
mId
))
{
if
(
idEntry
[
1
].
equals
(
mId
))
{
Log
.
d
(
"Magisk"
,
"Module: Hey, I know
I'm
online..."
);
Log
.
d
(
"Magisk"
,
"Module: Hey, I know
"
+
mId
+
" is
online..."
);
mIs
Online
=
true
;
mIs
Installed
=
true
;
}
else
mIs
Online
=
false
;
}
else
mIs
Installed
=
false
;
}
}
if
(
idEntry
[
0
].
equals
(
"logUrl"
))
{
if
(
idEntry
[
0
].
equals
(
"logUrl"
))
{
mLogUrl
=
idEntry
[
1
];
mLogUrl
=
idEntry
[
1
];
...
@@ -140,9 +140,8 @@ public class Module {
...
@@ -140,9 +140,8 @@ public class Module {
}
}
SharedPreferences
.
Editor
editor
=
prefs
.
edit
();
SharedPreferences
.
Editor
editor
=
prefs
.
edit
();
if
(
mIs
Online
)
{
if
(
mIs
Installed
)
{
editor
.
putBoolean
(
"repo-isInstalled_"
+
mId
,
true
);
editor
.
putBoolean
(
"repo-isInstalled_"
+
mId
,
true
);
}
else
{
}
else
{
editor
.
putBoolean
(
"repo-isInstalled_"
+
mId
,
false
);
editor
.
putBoolean
(
"repo-isInstalled_"
+
mId
,
false
);
}
}
...
@@ -195,7 +194,7 @@ public class Module {
...
@@ -195,7 +194,7 @@ public class Module {
public
String
getId
()
{
return
mId
;
}
public
String
getId
()
{
return
mId
;
}
public
String
get
ChangeLog
()
{
return
mLogUrl
;
}
public
String
get
mLogUrl
()
{
return
mLogUrl
;
}
public
String
getDescription
()
{
public
String
getDescription
()
{
return
mDescription
;
return
mDescription
;
...
@@ -229,6 +228,8 @@ public class Module {
...
@@ -229,6 +228,8 @@ public class Module {
return
mDonateUrl
;
return
mDonateUrl
;
}
}
public
String
getmZipUrl
()
{
return
mZipUrl
;
}
public
String
getmManifestUrl
()
{
public
String
getmManifestUrl
()
{
return
mManifestUrl
;
return
mManifestUrl
;
}
}
...
@@ -237,7 +238,7 @@ public class Module {
...
@@ -237,7 +238,7 @@ public class Module {
return
mSupportUrl
;
return
mSupportUrl
;
}
}
public
boolean
is
Online
()
{
return
mIsOnline
;
}
public
boolean
is
Installed
()
{
return
mIsInstalled
;
}
public
boolean
isUpdateAvailable
()
{
return
mUpdateAvailable
;
}
public
boolean
isUpdateAvailable
()
{
return
mUpdateAvailable
;
}
...
...
app/src/main/java/com/topjohnwu/magisk/module/Repo.java
View file @
46abbfe2
...
@@ -18,7 +18,7 @@ import java.util.Date;
...
@@ -18,7 +18,7 @@ import java.util.Date;
public
class
Repo
{
public
class
Repo
{
private
String
mBaseUrl
;
private
String
mBaseUrl
;
private
String
mZipUrl
;
private
String
mZipUrl
;
private
String
mLog
Text
;
private
String
mLog
Url
;
private
String
mManifestUrl
;
private
String
mManifestUrl
;
private
String
mVersion
;
private
String
mVersion
;
private
String
mName
;
private
String
mName
;
...
@@ -72,14 +72,17 @@ public class Repo {
...
@@ -72,14 +72,17 @@ public class Repo {
for
(
int
f
=
0
;
f
<
repoArray
.
length
();
f
++)
{
for
(
int
f
=
0
;
f
<
repoArray
.
length
();
f
++)
{
JSONObject
jsonobject
=
repoArray
.
getJSONObject
(
f
);
JSONObject
jsonobject
=
repoArray
.
getJSONObject
(
f
);
String
name
=
jsonobject
.
getString
(
"name"
);
String
name
=
jsonobject
.
getString
(
"name"
);
String
url
=
jsonobject
.
getString
(
"download_url"
).
trim
();
Log
.
d
(
"Magisk"
,
"Repo - checking object named "
+
name
+
" with value of "
+
url
);
if
(
name
.
contains
(
".zip"
))
{
if
(
name
.
contains
(
".zip"
))
{
this
.
mZipUrl
=
jsonobject
.
getString
(
"download_url"
);
this
.
mZipUrl
=
url
;
}
else
if
(
name
.
equals
(
"module.prop"
))
{
}
this
.
mManifestUrl
=
jsonobject
.
getString
(
"download_url"
);
if
(
name
.
equals
(
"module.prop"
))
{
}
else
if
(
name
.
equals
(
"changelog.txt"
))
{
this
.
mManifestUrl
=
url
;
String
logUrl
=
jsonobject
.
getString
(
"download_url"
);;
}
String
logText
=
webreq
.
makeWebServiceCall
(
logUrl
,
WebRequest
.
GET
);
if
(
name
.
contains
(
"log.txt"
))
{
this
.
mLogText
=
logText
;
Log
.
d
(
"Magisk"
,
"Repo: Setting log URL for "
+
name
+
" of "
+
url
);
this
.
mLogUrl
=
url
;
}
}
}
}
}
catch
(
JSONException
e
)
{
}
catch
(
JSONException
e
)
{
...
@@ -96,10 +99,9 @@ public class Repo {
...
@@ -96,10 +99,9 @@ public class Repo {
}
}
private
void
PutProps
(
String
manifestString
)
{
private
void
PutProps
(
String
manifestString
)
{
manifestString
=
manifestString
+
"zipUrl="
+
mZipUrl
+
"\nbaseUrl="
+
mBaseUrl
+
"\nmanifestUrl="
+
mManifestUrl
;
manifestString
=
manifestString
+
"zipUrl="
+
mZipUrl
+
"\nbaseUrl="
+
mBaseUrl
+
"\n
logUrl="
+
mLogUrl
+
"\n
manifestUrl="
+
mManifestUrl
;
SharedPreferences
prefs
=
PreferenceManager
.
getDefaultSharedPreferences
(
appContext
);
SharedPreferences
prefs
=
PreferenceManager
.
getDefaultSharedPreferences
(
appContext
);
SharedPreferences
.
Editor
editor
=
prefs
.
edit
();
SharedPreferences
.
Editor
editor
=
prefs
.
edit
();
editor
.
putString
(
"log_"
+
mId
,
mLogText
);
editor
.
putString
(
"repo_"
+
mId
,
manifestString
);
editor
.
putString
(
"repo_"
+
mId
,
manifestString
);
editor
.
putBoolean
(
"hasCachedRepos"
,
true
);
editor
.
putBoolean
(
"hasCachedRepos"
,
true
);
editor
.
putString
(
"updated_"
+
mId
,
this
.
lastUpdate
);
editor
.
putString
(
"updated_"
+
mId
,
this
.
lastUpdate
);
...
@@ -142,6 +144,9 @@ public class Repo {
...
@@ -142,6 +144,9 @@ public class Repo {
case
"support"
:
case
"support"
:
this
.
mSupportUrl
=
props
[
1
];
this
.
mSupportUrl
=
props
[
1
];
break
;
break
;
case
"logUrl"
:
this
.
mLogUrl
=
props
[
1
];
break
;
case
"donateUrl"
:
case
"donateUrl"
:
this
.
mDonateUrl
=
props
[
1
];
this
.
mDonateUrl
=
props
[
1
];
break
;
break
;
...
@@ -171,9 +176,7 @@ public class Repo {
...
@@ -171,9 +176,7 @@ public class Repo {
if
(
prefs
.
contains
(
"updated_"
+
this
.
mId
))
{
if
(
prefs
.
contains
(
"updated_"
+
this
.
mId
))
{
lastUpdate
=
prefs
.
getString
(
"updated_"
+
this
.
mId
,
""
);
lastUpdate
=
prefs
.
getString
(
"updated_"
+
this
.
mId
,
""
);
}
}
if
(
prefs
.
contains
(
"log_"
+
this
.
mId
))
{
mLogText
=
prefs
.
getString
(
"log_"
+
this
.
mId
,
""
);
}
return
this
.
mId
!=
null
;
return
this
.
mId
!=
null
;
...
@@ -239,8 +242,8 @@ public class Repo {
...
@@ -239,8 +242,8 @@ public class Repo {
return
mBaseUrl
;
return
mBaseUrl
;
}
}
public
String
getmLog
Text
()
{
public
String
getmLog
Url
()
{
return
mLog
Text
;
return
mLog
Url
;
}
}
...
...
app/src/main/java/com/topjohnwu/magisk/module/RepoHelper.java
View file @
46abbfe2
...
@@ -80,6 +80,7 @@ public class RepoHelper {
...
@@ -80,6 +80,7 @@ public class RepoHelper {
@Override
@Override
protected
void
onProgressUpdate
(
String
...
values
)
{
protected
void
onProgressUpdate
(
String
...
values
)
{
super
.
onProgressUpdate
(
values
);
super
.
onProgressUpdate
(
values
);
prefs
.
edit
().
putBoolean
(
"ignoreUpdateAlerts"
,
false
).
apply
();
Toast
.
makeText
(
activityContext
,
"Refreshing online modules"
,
Toast
.
LENGTH_SHORT
).
show
();
Toast
.
makeText
(
activityContext
,
"Refreshing online modules"
,
Toast
.
LENGTH_SHORT
).
show
();
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment