Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pom-dependency-tree.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
ai.elimu:webapp:war:2.6.3-SNAPSHOT
ai.elimu:webapp:war:2.6.5-SNAPSHOT
+- ai.elimu:model:jar:model-2.0.97:compile
| \- com.google.code.gson:gson:jar:2.13.0:compile
| \- com.google.errorprone:error_prone_annotations:jar:2.37.0:compile
Expand Down
6 changes: 6 additions & 0 deletions src/main/java/ai/elimu/entity/application/Application.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,12 @@ public class Application extends BaseEntity {
@NotNull
private String packageName;

/**
* The GitHub repository slug, e.g. "soundcards"
*/
@NotNull
private String repoName;

private boolean infrastructural;

@ElementCollection(fetch = FetchType.EAGER)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ public class ApplicationVersion extends BaseEntity {
*/
public String getFileUrl() {
return "https://github.com/elimu-ai" +
"/" + getApplication().getPackageName().replace("ai.elimu.", "") +
"/" + getApplication().getRepoName() +
"/releases" +
"/download" +
"/" + getVersionName() +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
import ai.elimu.dao.ApplicationVersionDao;
import ai.elimu.entity.application.Application;
import ai.elimu.entity.application.ApplicationVersion;
import ai.elimu.model.v2.enums.Language;
import ai.elimu.model.v2.enums.admin.ApplicationStatus;
import ai.elimu.util.ChecksumHelper;
import ai.elimu.util.ConfigHelper;
import ai.elimu.util.DiscordHelper;
import ai.elimu.web.application.application_version.ApplicationVersionCreateController;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
Expand Down Expand Up @@ -85,7 +85,11 @@ public String handlePutRequest(
File tmpDirElimuAi = new File(tmpDir, "elimu-ai");
log.info("tmpDirElimuAi: " + tmpDirElimuAi);
log.info("tmpDirElimuAi.mkdir(): " + tmpDirElimuAi.mkdir());
File apkFile = new File(tmpDirElimuAi, application.getPackageName() + "-" + versionName + ".apk");
Language language = Language.valueOf(ConfigHelper.getProperty("content.language"));
File tmpDirLanguage = new File(tmpDirElimuAi, "lang-" + language);
log.info("tmpDirLanguage: " + tmpDirLanguage);
log.info("tmpDirLanguage.mkdir(): " + tmpDirLanguage.mkdir());
File apkFile = new File(tmpDirLanguage, application.getPackageName() + "-" + versionName + ".apk");
log.info("apkFile.getPath(): " + apkFile.getPath());
FileUtils.copyURLToFile(new URL(fileUrl), apkFile);
log.info("apkFile.exists(): " + apkFile.exists());
Expand Down Expand Up @@ -157,15 +161,6 @@ public String handlePutRequest(
applicationDao.update(application);
}

String contentUrl = "http://" + ConfigHelper.getProperty("content.language").toLowerCase() + ".elimu.ai/application/edit/" + application.getId();
DiscordHelper.sendChannelMessage(
"A new Application version (`.apk`) was published: " + contentUrl,
application.getPackageName(),
"Version: `" + applicationVersion.getVersionName() + "`",
null,
null
);

jsonResponseObject.put("result", "success");
jsonResponseObject.put("successMessage", "The application version was published with versionName " + applicationVersion.getVersionName());
response.setStatus(HttpStatus.OK.value());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import ai.elimu.entity.application.Application;
import ai.elimu.entity.application.ApplicationVersion;
import ai.elimu.entity.contributor.Contributor;
import ai.elimu.model.v2.enums.Language;
import ai.elimu.model.v2.enums.admin.ApplicationStatus;
import ai.elimu.util.ChecksumHelper;
import ai.elimu.util.ConfigHelper;
Expand Down Expand Up @@ -88,7 +89,11 @@ public String handleSubmit(
File tmpDirElimuAi = new File(tmpDir, "elimu-ai");
log.info("tmpDirElimuAi: " + tmpDirElimuAi);
log.info("tmpDirElimuAi.mkdir(): " + tmpDirElimuAi.mkdir());
File apkFile = new File(tmpDirElimuAi, application.getPackageName() + ".apk");
Language language = Language.valueOf(ConfigHelper.getProperty("content.language"));
File tmpDirLanguage = new File(tmpDirElimuAi, "lang-" + language);
log.info("tmpDirLanguage: " + tmpDirLanguage);
log.info("tmpDirLanguage.mkdir(): " + tmpDirLanguage.mkdir());
File apkFile = new File(tmpDirLanguage, application.getPackageName() + ".apk");
log.info("apkFile.getPath(): " + apkFile.getPath());
FileUtils.copyURLToFile(new URL(fileUrl), apkFile);
log.info("apkFile.exists(): " + apkFile.exists());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,7 @@ private void populateDatabase(WebApplicationContext webApplicationContext) {

Application application = new Application();
application.setPackageName("ai.elimu.soundcards");
application.setRepoName("sound-cards");
application.setApplicationStatus(ApplicationStatus.MISSING_APK);
application.setContributor(contributor);
applicationDao.create(application);
Expand Down
1 change: 1 addition & 0 deletions src/main/resources/META-INF/jpa-schema-export.sql
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@
applicationStatus varchar(255),
infrastructural bit not null,
packageName varchar(255),
repoName varchar(255),
contributor_id bigint,
primary key (id)
) type=MyISAM;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,15 @@
<content:aside>
<h5 class="center">Resources</h5>
<div class="card-panel deep-purple lighten-5">
<p>
GitHub repo:
</p>
<a href="https://github.com/elimu-ai/${application.repoName}" target="_blank">
github.com/elimu-ai/<b>${applicationVersion.application.repoName}</b>
</a>

<div class="divider" style="margin: 1em 0;"></div>

Comment thread
jo-elimu marked this conversation as resolved.
<p>
Once published, the APK will become available for download through the <a href="https://github.com/elimu-ai/appstore" target="_blank">elimu.ai Appstore</a>.
</p>
Expand Down
4 changes: 4 additions & 0 deletions src/main/webapp/WEB-INF/jsp/application/create.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@
<form:label path="packageName" cssErrorClass="error">Package name</form:label>
<form:input path="packageName" cssErrorClass="error" placeholder="ai.elimu.soundcards" />
</div>
<div class="col s12 m6 input-field">
<form:label path="repoName" cssErrorClass="error">Repo name</form:label>
<form:input path="repoName" cssErrorClass="error" placeholder="soundcards" />
</div>
</div>

<div class="row">
Expand Down
19 changes: 18 additions & 1 deletion src/main/webapp/WEB-INF/jsp/application/edit.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,14 @@
<div class="row">
<form:hidden path="contributor" value="${application.contributor.id}" />
<div class="input-field col s6">
Package name: <code>${application.packageName}</code>
<form:label path="packageName" cssErrorClass="error">Package name</form:label>
<form:input disabled="true" path="packageName" cssErrorClass="error" placeholder="ai.elimu.soundcards" />
<form:hidden path="packageName" value="${application.packageName}" />
</div>
<div class="col s12 m6 input-field">
<form:label path="repoName" cssErrorClass="error">Repo name</form:label>
<form:input path="repoName" cssErrorClass="error" placeholder="soundcards" />
</div>
<div class="input-field col s6">
<select id="applicationStatus" name="applicationStatus">
<option value="">-- Select --</option>
Expand Down Expand Up @@ -160,3 +165,15 @@
</div>
</div>
</content:section>

<content:aside>
<h5 class="center">Resources</h5>
<div class="card-panel deep-purple lighten-5">
<p>
GitHub repo:
</p>
<a href="https://github.com/elimu-ai/${application.repoName}" target="_blank">
github.com/elimu-ai/<b>${application.repoName}</b>
</a>
</div>
</content:aside>