Skip to content

Commit

Permalink
Merge pull request #940 from StepicOrg/release/1.207
Browse files Browse the repository at this point in the history
Release/1.207
  • Loading branch information
rostikjoystick authored Jan 27, 2022
2 parents 8cc2e9e + bec0e9c commit 3915fa5
Show file tree
Hide file tree
Showing 55 changed files with 747 additions and 208 deletions.
4 changes: 2 additions & 2 deletions app/src/main/java/org/stepic/droid/core/ScreenManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.stepic.droid.model.CertificateViewItem;
import org.stepic.droid.model.CertificateListItem;
import org.stepic.droid.social.SocialMedia;
import org.stepik.android.domain.auth.model.SocialAuthType;
import org.stepik.android.domain.course.analytic.CourseViewSource;
Expand Down Expand Up @@ -91,7 +91,7 @@ public interface ScreenManager {

void openInWeb(Activity context, String path);

void addCertificateToLinkedIn(CertificateViewItem certificateViewItem);
void addCertificateToLinkedIn(CertificateListItem.Data certificateListItem);

void showCertificates(Context context);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
import org.stepic.droid.configuration.EndpointResolver;
import org.stepic.droid.configuration.Config;
import org.stepic.droid.di.AppSingleton;
import org.stepic.droid.model.CertificateViewItem;
import org.stepic.droid.model.CertificateListItem;
import org.stepic.droid.preferences.SharedPreferenceHelper;
import org.stepic.droid.preferences.UserPreferences;
import org.stepic.droid.social.SocialMedia;
Expand Down Expand Up @@ -531,17 +531,17 @@ public void openInWeb(Activity context, String path) {
}

@Override
public void addCertificateToLinkedIn(CertificateViewItem certificateViewItem) {
public void addCertificateToLinkedIn(CertificateListItem.Data certificateListItem) {
// TODO: 19/10/2017 linkedin exporting is not working due to changing API params is not filled

StringBuilder sb = new StringBuilder();
sb.append(AppConstants.LINKEDIN_ADD_URL);
sb.append("_ed=");//linkedin id parameter
sb.append(AppConstants.LINKEDIN_ED_ID);
sb.append("&pfCertificationName="); // linkedin cert name
sb.append(URLEncoder.encode(certificateViewItem.getTitle()));
sb.append(URLEncoder.encode(certificateListItem.getTitle()));
sb.append("&pfCertificationUrl=");//linkedin certificate url
sb.append(certificateViewItem.getCertificate().getUrl());
sb.append(certificateListItem.getCertificate().getUrl());


final Intent intent = new Intent(Intent.ACTION_VIEW);
Expand Down
4 changes: 2 additions & 2 deletions app/src/main/java/org/stepic/droid/core/ShareHelper.kt
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package org.stepic.droid.core

import android.content.Intent
import org.stepic.droid.model.CertificateViewItem
import org.stepic.droid.model.CertificateListItem
import org.stepik.android.model.*
import org.stepik.android.model.Unit
import org.stepik.android.model.user.User

interface ShareHelper {
fun getIntentForCourseSharing(course: Course): Intent

fun getIntentForShareCertificate(certificateViewItem: CertificateViewItem): Intent
fun getIntentForShareCertificate(certificateListItem: CertificateListItem.Data): Intent

fun getIntentForStepSharing(step: Step, lesson: Lesson, unit: Unit?): Intent

Expand Down
6 changes: 3 additions & 3 deletions app/src/main/java/org/stepic/droid/core/ShareHelperImpl.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import android.net.Uri
import org.stepic.droid.R
import org.stepic.droid.configuration.EndpointResolver
import org.stepic.droid.di.AppSingleton
import org.stepic.droid.model.CertificateViewItem
import org.stepic.droid.model.CertificateListItem
import org.stepic.droid.util.StringUtil
import org.stepic.droid.util.resolvers.text.TextResolver
import org.stepik.android.model.*
Expand Down Expand Up @@ -46,8 +46,8 @@ constructor(
return getShareIntentBase(textForSharing)
}

override fun getIntentForShareCertificate(certificateViewItem: CertificateViewItem): Intent =
getShareIntentBase(certificateViewItem.certificate.url ?: " ")
override fun getIntentForShareCertificate(certificateListItem: CertificateListItem.Data): Intent =
getShareIntentBase(certificateListItem.certificate.url ?: " ")

override fun getIntentForStepSharing(step: Step, lesson: Lesson, unit: Unit?): Intent {
val textForSharing = Uri.parse(StringUtil.getUriForStep(endpointResolver.getBaseUrl(), lesson, unit, step)).toString()
Expand Down
17 changes: 17 additions & 0 deletions app/src/main/java/org/stepic/droid/model/CertificateListItem.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package org.stepic.droid.model

import android.os.Parcelable
import kotlinx.android.parcel.Parcelize
import org.stepik.android.model.Certificate

sealed class CertificateListItem : Parcelable {
@Parcelize
data class Data(
val certificate: Certificate,
val title: String?,
val coverFullPath: String?
) : CertificateListItem()

@Parcelize
object Placeholder : CertificateListItem()
}
35 changes: 0 additions & 35 deletions app/src/main/java/org/stepic/droid/model/CertificateViewItem.kt

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ constructor(
intro = cursor.getString(DbStructureCourse.Columns.INTRO),
introVideo = Video(id = cursor.getLong(DbStructureCourse.Columns.INTRO_VIDEO_ID)),
language = cursor.getString(DbStructureCourse.Columns.LANGUAGE),
announcements = DbParseHelper.parseStringToLongList(cursor.getString(DbStructureCourse.Columns.ANNOUNCEMENTS)),
authors = DbParseHelper.parseStringToLongList(cursor.getString(DbStructureCourse.Columns.AUTHORS)),
instructors = DbParseHelper.parseStringToLongList(cursor.getString(DbStructureCourse.Columns.INSTRUCTORS)),
sections = DbParseHelper.parseStringToLongList(cursor.getString(DbStructureCourse.Columns.SECTIONS)),
Expand Down Expand Up @@ -106,6 +107,7 @@ constructor(
values.put(DbStructureCourse.Columns.INTRO, course.intro)
values.put(DbStructureCourse.Columns.INTRO_VIDEO_ID, course.introVideo?.id ?: -1) // todo add complete course entity and remove this hack
values.put(DbStructureCourse.Columns.LANGUAGE, course.language)
values.put(DbStructureCourse.Columns.ANNOUNCEMENTS, DbParseHelper.parseLongListToString(course.announcements))
values.put(DbStructureCourse.Columns.AUTHORS, DbParseHelper.parseLongListToString(course.authors))
values.put(DbStructureCourse.Columns.INSTRUCTORS, DbParseHelper.parseLongListToString(course.instructors))
values.put(DbStructureCourse.Columns.SECTIONS, DbParseHelper.parseLongListToString(course.sections))
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package org.stepic.droid.storage.migration

import androidx.room.migration.Migration
import androidx.sqlite.db.SupportSQLiteDatabase
import org.stepic.droid.storage.structure.DbStructureCourse
import org.stepik.android.cache.certificates.structure.DbStructureCertificate

object MigrationFrom78To79 : Migration(78, 79) {
override fun migrate(db: SupportSQLiteDatabase) {
db.execSQL("ALTER TABLE ${DbStructureCertificate.TABLE_NAME} ADD COLUMN ${DbStructureCertificate.Columns.IS_WITH_SCORE} INTEGER DEFAULT 1")
db.execSQL("ALTER TABLE ${DbStructureCourse.TABLE_NAME} ADD COLUMN ${DbStructureCourse.Columns.ANNOUNCEMENTS} TEXT")
db.execSQL("CREATE TABLE IF NOT EXISTS `Announcement` (`id` INTEGER NOT NULL, `course` INTEGER NOT NULL, `user` INTEGER, `subject` TEXT NOT NULL, `text` TEXT NOT NULL, `createDate` INTEGER, `nextDate` INTEGER, `sentDate` INTEGER, `status` TEXT NOT NULL, `isRestrictedByScore` INTEGER NOT NULL, `scorePercentMin` INTEGER NOT NULL, `scorePercentMax` INTEGER NOT NULL, `emailTemplate` TEXT, `isScheduled` INTEGER NOT NULL, `startDate` INTEGER, `mailPeriodDays` INTEGER NOT NULL, `mailQuantity` INTEGER NOT NULL, `isInfinite` INTEGER NOT NULL, `onEnroll` INTEGER NOT NULL, `publishCount` INTEGER, `queueCount` INTEGER, `sentCount` INTEGER, `openCount` INTEGER, `clickCount` INTEGER, `estimatedStartDate` INTEGER, `estimatedFinishDate` INTEGER, `noticeDates` TEXT NOT NULL, PRIMARY KEY(`id`))")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,7 @@ object Migrations {
MigrationFrom74To75,
MigrationFrom75To76,
MigrationFrom76To77,
MigrationFrom77To78
MigrationFrom77To78,
MigrationFrom78To79
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ object DbStructureCourse {
const val INTRO_VIDEO_ID = "intro_video_id"
const val LANGUAGE = "language"

const val ANNOUNCEMENTS = "announcements"
const val AUTHORS = "authors"
const val INSTRUCTORS = "instructors"
const val SECTIONS = "sections"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
import org.stepic.droid.base.App;
import org.stepic.droid.core.ScreenManager;
import org.stepic.droid.core.ShareHelper;
import org.stepic.droid.model.CertificateViewItem;
import org.stepic.droid.model.CertificateListItem;
import org.stepic.droid.util.ContextExtensionsKt;
import org.stepic.droid.util.DisplayUtils;

Expand All @@ -25,7 +25,7 @@
public class CertificateShareDialog extends BottomSheetDialog {

@NotNull
private final CertificateViewItem certificateViewItem;
private final CertificateListItem.Data certificateListItem;

@Inject
ScreenManager screenManager;
Expand All @@ -36,9 +36,9 @@ public class CertificateShareDialog extends BottomSheetDialog {
@Inject
Analytic analytic;

public CertificateShareDialog(@NonNull Context context, @NotNull CertificateViewItem certificateViewItem) {
public CertificateShareDialog(@NonNull Context context, @NotNull CertificateListItem.Data certificateListItem) {
super(context);
this.certificateViewItem = certificateViewItem;
this.certificateListItem = certificateListItem;
App.Companion.component().inject(this);
}

Expand All @@ -61,7 +61,7 @@ protected void onCreate(Bundle savedInstanceState) {
@Override
public void onClick(View view) {
dismiss();
screenManager.addCertificateToLinkedIn(certificateViewItem);
screenManager.addCertificateToLinkedIn(certificateListItem);
}
});

Expand All @@ -73,7 +73,7 @@ public void onClick(View view) {
ContextExtensionsKt.copyTextToClipboard(
getContext(),
App.Companion.getAppContext().getString(R.string.copy_link_title),
certificateViewItem.getCertificate().getUrl(),
certificateListItem.getCertificate().getUrl(),
getContext().getResources().getString(R.string.link_copied_title)
);
}
Expand All @@ -84,7 +84,7 @@ public void onClick(View view) {
public void onClick(View view) {
dismiss();
analytic.reportEvent(Analytic.Certificate.SHARE_LINK_CERTIFICATE);
Intent intent = shareHelper.getIntentForShareCertificate(certificateViewItem);
Intent intent = shareHelper.getIntentForShareCertificate(certificateListItem);
getContext().startActivity(intent);
}
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@
import androidx.fragment.app.DialogFragment;

import org.jetbrains.annotations.NotNull;
import org.stepic.droid.model.CertificateViewItem;
import org.stepic.droid.model.CertificateListItem;

public class CertificateShareDialogFragment extends DialogFragment {

public static final String TAG = "certificate_share_dialog";
private static final String CERTIFICATE_VIEW_ITEM_KEY = "certificateViewItemKey";

public static DialogFragment newInstance(@NotNull CertificateViewItem viewItem) {
public static DialogFragment newInstance(@NotNull CertificateListItem.Data viewItem) {
Bundle args = new Bundle();
args.putParcelable(CERTIFICATE_VIEW_ITEM_KEY, viewItem);
DialogFragment fragment = new CertificateShareDialogFragment();
Expand All @@ -25,7 +25,7 @@ public static DialogFragment newInstance(@NotNull CertificateViewItem viewItem)
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
CertificateViewItem viewItem = getArguments().getParcelable(CERTIFICATE_VIEW_ITEM_KEY);
CertificateListItem.Data viewItem = getArguments().getParcelable(CERTIFICATE_VIEW_ITEM_KEY);
return new CertificateShareDialog(getContext(), viewItem);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package org.stepik.android.cache.announcement

import io.reactivex.Completable
import io.reactivex.Single
import org.stepik.android.cache.announcement.dao.AnnouncementDao
import org.stepik.android.data.announcement.source.AnnouncementCacheDataSource
import org.stepik.android.domain.announcement.model.Announcement
import javax.inject.Inject

class AnnouncementCacheDataSourceImpl
@Inject
constructor(
private val announcementDao: AnnouncementDao
) : AnnouncementCacheDataSource {
override fun getAnnouncements(announcementIds: List<Long>): Single<List<Announcement>> =
announcementDao.getAnnouncement(announcementIds)

override fun saveAnnouncements(announcements: List<Announcement>): Completable =
announcementDao.saveAnnouncements(announcements)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package org.stepik.android.cache.announcement.dao

import androidx.room.Dao
import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Query
import io.reactivex.Completable
import io.reactivex.Single
import org.stepik.android.domain.announcement.model.Announcement

@Dao
interface AnnouncementDao {
@Query("SELECT * FROM Announcement WHERE id IN (:announcementIds)")
fun getAnnouncement(announcementIds: List<Long>): Single<List<Announcement>>

@Insert(onConflict = OnConflictStrategy.REPLACE)
fun saveAnnouncements(announcements: List<Announcement>): Completable
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package org.stepik.android.cache.base.database
import androidx.room.Database
import androidx.room.RoomDatabase
import androidx.room.TypeConverters
import org.stepik.android.cache.announcement.dao.AnnouncementDao
import org.stepik.android.cache.base.mapper.CollectionConverter
import org.stepik.android.cache.base.mapper.DateConverter
import org.stepik.android.cache.catalog.dao.CatalogBlockDao
Expand All @@ -26,6 +27,7 @@ import org.stepik.android.cache.mobile_tiers.dao.MobileTiersDao
import org.stepik.android.cache.proctor_session.dao.ProctorSessionDao
import org.stepik.android.cache.rubric.dao.RubricDao
import org.stepik.android.cache.wishlist.dao.WishlistDao
import org.stepik.android.domain.announcement.model.Announcement
import org.stepik.android.domain.course_purchase.model.BillingPurchasePayload
import org.stepik.android.domain.course_recommendations.model.CourseRecommendation
import org.stepik.android.domain.exam_session.model.ExamSession
Expand All @@ -51,7 +53,8 @@ import org.stepik.android.domain.wishlist.model.WishlistEntry
MobileTier::class,
LightSku::class,
WishlistEntry::class,
BillingPurchasePayload::class
BillingPurchasePayload::class,
Announcement::class
],
version = AppDatabase.VERSION,
exportSchema = false
Expand All @@ -65,7 +68,7 @@ import org.stepik.android.domain.wishlist.model.WishlistEntry
)
abstract class AppDatabase : RoomDatabase() {
companion object {
const val VERSION = 78
const val VERSION = 79
const val NAME = "stepic_database.db"
}

Expand All @@ -83,4 +86,5 @@ abstract class AppDatabase : RoomDatabase() {
abstract fun lightSkuDao(): LightSkuDao
abstract fun wishlistDao(): WishlistDao
abstract fun billingPurchasePayloadDao(): BillingPurchasePayloadDao
abstract fun announcementDao(): AnnouncementDao
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,12 @@ class DateConverter {
@TypeConverter
fun longToDate(long: Long): Date? =
long.takeIf { it > -1 }?.let(::Date)

@TypeConverter
fun dateListToLongList(dates: List<Date>?): List<Long>? =
dates?.map { it.time }

@TypeConverter
fun longListToDateList(longs: List<Long>?): List<Date>? =
longs?.map { Date(it) }
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import org.stepic.droid.util.getDate
import org.stepic.droid.util.getInt
import org.stepic.droid.util.getLong
import org.stepic.droid.util.getString
import org.stepic.droid.util.getBoolean
import org.stepik.android.cache.certificates.structure.DbStructureCertificate
import org.stepik.android.model.Certificate
import javax.inject.Inject
Expand Down Expand Up @@ -43,7 +44,8 @@ constructor(
previewUrl = cursor.getString(DbStructureCertificate.Columns.PREVIEW_URL),
savedFullName = cursor.getString(DbStructureCertificate.Columns.SAVED_FULLNAME),
editsCount = cursor.getInt(DbStructureCertificate.Columns.EDITS_COUNT),
allowedEditsCount = cursor.getInt(DbStructureCertificate.Columns.ALLOWED_EDITS_COUNT)
allowedEditsCount = cursor.getInt(DbStructureCertificate.Columns.ALLOWED_EDITS_COUNT),
isWithScore = cursor.getBoolean(DbStructureCertificate.Columns.IS_WITH_SCORE)
)

override fun getContentValues(persistentObject: Certificate): ContentValues =
Expand All @@ -63,5 +65,6 @@ constructor(
put(DbStructureCertificate.Columns.SAVED_FULLNAME, persistentObject.savedFullName)
put(DbStructureCertificate.Columns.EDITS_COUNT, persistentObject.editsCount)
put(DbStructureCertificate.Columns.ALLOWED_EDITS_COUNT, persistentObject.allowedEditsCount)
put(DbStructureCertificate.Columns.IS_WITH_SCORE, persistentObject.isWithScore)
}
}
Loading

0 comments on commit 3915fa5

Please sign in to comment.