Skip to content

Commit

Permalink
Rename domain model MediaItem to Media (#438)
Browse files Browse the repository at this point in the history
  • Loading branch information
luizgrp authored Jul 26, 2022
1 parent 892772e commit 983f393
Show file tree
Hide file tree
Showing 74 changed files with 868 additions and 865 deletions.
56 changes: 28 additions & 28 deletions media-data/api/current.api
Original file line number Diff line number Diff line change
Expand Up @@ -13,20 +13,20 @@ package com.google.android.horologist.media.data.mapper {
field public static final com.google.android.horologist.media.data.mapper.CommandMapper INSTANCE;
}

public final class Media3MediaItemMapper {
method public androidx.media3.common.MediaItem map(com.google.android.horologist.media.model.MediaItem mediaItem);
method public java.util.List<androidx.media3.common.MediaItem> map(java.util.List<com.google.android.horologist.media.model.MediaItem> mediaItems);
field public static final com.google.android.horologist.media.data.mapper.Media3MediaItemMapper INSTANCE;
}

public final class MediaItemMapper {
method public com.google.android.horologist.media.model.MediaItem map(androidx.media3.common.MediaItem media3MediaItem, optional String defaultArtist);
method public androidx.media3.common.MediaItem map(com.google.android.horologist.media.model.Media media);
method public java.util.List<androidx.media3.common.MediaItem> map(java.util.List<com.google.android.horologist.media.model.Media> media);
field public static final com.google.android.horologist.media.data.mapper.MediaItemMapper INSTANCE;
}

public final class MediaItemPositionMapper {
method public com.google.android.horologist.media.model.MediaItemPosition? map(androidx.media3.common.Player? player);
field public static final com.google.android.horologist.media.data.mapper.MediaItemPositionMapper INSTANCE;
public final class MediaMapper {
method public com.google.android.horologist.media.model.Media map(androidx.media3.common.MediaItem mediaItem, optional String defaultArtist);
field public static final com.google.android.horologist.media.data.mapper.MediaMapper INSTANCE;
}

public final class MediaPositionMapper {
method public com.google.android.horologist.media.model.MediaPosition? map(androidx.media3.common.Player? player);
field public static final com.google.android.horologist.media.data.mapper.MediaPositionMapper INSTANCE;
}

public final class PlayerStateMapper {
Expand All @@ -46,46 +46,46 @@ package com.google.android.horologist.media.data.repository {

public final class PlayerRepositoryImpl implements java.io.Closeable com.google.android.horologist.media.repository.PlayerRepository {
ctor public PlayerRepositoryImpl();
method public void addMediaItem(com.google.android.horologist.media.model.MediaItem mediaItem);
method public void addMediaItem(int index, com.google.android.horologist.media.model.MediaItem mediaItem);
method public void clearMediaItems();
method public void addMedia(com.google.android.horologist.media.model.Media media);
method public void addMedia(int index, com.google.android.horologist.media.model.Media media);
method public void clearMediaList();
method public void close();
method public void connect(androidx.media3.common.Player player, kotlin.jvm.functions.Function0<kotlin.Unit> onClose);
method public kotlinx.coroutines.flow.StateFlow<java.util.Set<com.google.android.horologist.media.model.Command>> getAvailableCommands();
method public kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> getConnected();
method public kotlinx.coroutines.flow.StateFlow<com.google.android.horologist.media.model.MediaItem> getCurrentMediaItem();
method public int getCurrentMediaItemIndex();
method public kotlinx.coroutines.flow.StateFlow<com.google.android.horologist.media.model.Media> getCurrentMedia();
method public int getCurrentMediaIndex();
method public kotlinx.coroutines.flow.StateFlow<com.google.android.horologist.media.model.PlayerState> getCurrentState();
method public com.google.android.horologist.media.model.MediaItem? getMediaItemAt(int index);
method public int getMediaItemCount();
method public kotlinx.coroutines.flow.StateFlow<com.google.android.horologist.media.model.MediaItemPosition> getMediaItemPosition();
method public com.google.android.horologist.media.model.Media? getMediaAt(int index);
method public int getMediaCount();
method public kotlinx.coroutines.flow.StateFlow<com.google.android.horologist.media.model.MediaPosition> getMediaPosition();
method public kotlinx.coroutines.flow.StateFlow<java.lang.Float> getPlaybackSpeed();
method public kotlinx.coroutines.flow.StateFlow<androidx.media3.common.Player> getPlayer();
method public long getSeekBackIncrement();
method public long getSeekForwardIncrement();
method public kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> getShuffleModeEnabled();
method public boolean hasNextMediaItem();
method public boolean hasPreviousMediaItem();
method public boolean hasNextMedia();
method public boolean hasPreviousMedia();
method public void pause();
method public void play();
method public void play(int mediaItemIndex);
method public void play(int mediaIndex);
method public void prepare();
method public void release();
method public void removeMediaItem(int index);
method public void removeMedia(int index);
method public void seekBack();
method public void seekForward();
method public void setMediaItem(com.google.android.horologist.media.model.MediaItem mediaItem);
method public void setMediaItems(java.util.List<com.google.android.horologist.media.model.MediaItem> mediaItems);
method public void setMedia(com.google.android.horologist.media.model.Media media);
method public void setMediaList(java.util.List<com.google.android.horologist.media.model.Media> mediaList);
method public void setPlaybackSpeed(float speed);
method public void setShuffleModeEnabled(boolean shuffleModeEnabled);
method public void skipToNextMediaItem();
method public void skipToPreviousMediaItem();
method public void skipToNextMedia();
method public void skipToPreviousMedia();
method public void updatePosition();
property public kotlinx.coroutines.flow.StateFlow<java.util.Set<com.google.android.horologist.media.model.Command>> availableCommands;
property public kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> connected;
property public kotlinx.coroutines.flow.StateFlow<com.google.android.horologist.media.model.MediaItem> currentMediaItem;
property public kotlinx.coroutines.flow.StateFlow<com.google.android.horologist.media.model.Media> currentMedia;
property public kotlinx.coroutines.flow.StateFlow<com.google.android.horologist.media.model.PlayerState> currentState;
property public kotlinx.coroutines.flow.StateFlow<com.google.android.horologist.media.model.MediaItemPosition> mediaItemPosition;
property public kotlinx.coroutines.flow.StateFlow<com.google.android.horologist.media.model.MediaPosition> mediaPosition;
property public final kotlinx.coroutines.flow.StateFlow<java.lang.Float> playbackSpeed;
property public final kotlinx.coroutines.flow.StateFlow<androidx.media3.common.Player> player;
property public kotlinx.coroutines.flow.StateFlow<java.lang.Boolean> shuffleModeEnabled;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ public object CommandMapper {
COMMAND_PLAY_PAUSE -> Command.PlayPause
COMMAND_SEEK_BACK -> Command.SeekBack
COMMAND_SEEK_FORWARD -> Command.SeekForward
COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM -> Command.SkipToPreviousMediaItem
COMMAND_SEEK_TO_NEXT_MEDIA_ITEM -> Command.SkipToNextMediaItem
COMMAND_SEEK_TO_PREVIOUS_MEDIA_ITEM -> Command.SkipToPreviousMedia
COMMAND_SEEK_TO_NEXT_MEDIA_ITEM -> Command.SkipToNextMedia
COMMAND_SET_SHUFFLE_MODE -> Command.SetShuffle
else -> throw IllegalArgumentException("Invalid command: $command")
}
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -16,26 +16,40 @@

package com.google.android.horologist.media.data.mapper

import com.google.android.horologist.media.model.MediaItem
import androidx.media3.common.MediaItem as Media3MediaItem
import android.net.Uri
import androidx.media3.common.MediaItem
import androidx.media3.common.MediaItem.RequestMetadata
import androidx.media3.common.MediaMetadata
import com.google.android.horologist.media.model.Media

/**
* Maps a [Media3.MediaItem][Media3MediaItem] into a [MediaItem].
* Maps a [Media] into a [MediaItem].
*/
public object MediaItemMapper {

/**
* @param media3MediaItem [Media3MediaItem] to be mapped.
* @param defaultArtist value for [MediaItem.artist].
*/
public fun map(
media3MediaItem: Media3MediaItem,
defaultArtist: String = ""
): MediaItem = MediaItem(
id = media3MediaItem.mediaId,
uri = media3MediaItem.requestMetadata.mediaUri?.toString() ?: "",
title = media3MediaItem.mediaMetadata.displayTitle?.toString() ?: "",
artist = media3MediaItem.mediaMetadata.artist?.toString() ?: defaultArtist,
artworkUri = media3MediaItem.mediaMetadata.artworkUri?.toString()
public fun map(media: Media): MediaItem {
val parsedUri = Uri.parse(media.uri)
val artworkUri = media.artworkUri?.let(Uri::parse)

return MediaItem.Builder()
.setMediaId(media.id)
.setUri(parsedUri)
.setRequestMetadata(
RequestMetadata.Builder()
.setMediaUri(parsedUri)
.build()
)
.setMediaMetadata(
MediaMetadata.Builder()
.setDisplayTitle(media.title)
.setArtist(media.artist)
.setArtworkUri(artworkUri)
.build()
)
.build()
}

public fun map(media: List<Media>): List<MediaItem> = media.map(
MediaItemMapper::map
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/*
* Copyright 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.google.android.horologist.media.data.mapper

import androidx.media3.common.MediaItem
import com.google.android.horologist.media.model.Media

/**
* Maps a [MediaItem] into a [Media].
*/
public object MediaMapper {

/**
* @param mediaItem [MediaItem] to be mapped.
* @param defaultArtist value for [Media.artist].
*/
public fun map(
mediaItem: MediaItem,
defaultArtist: String = ""
): Media = Media(
id = mediaItem.mediaId,
uri = mediaItem.requestMetadata.mediaUri?.toString() ?: "",
title = mediaItem.mediaMetadata.displayTitle?.toString() ?: "",
artist = mediaItem.mediaMetadata.artist?.toString() ?: defaultArtist,
artworkUri = mediaItem.mediaMetadata.artworkUri?.toString()
)
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,20 @@ package com.google.android.horologist.media.data.mapper

import androidx.media3.common.C
import androidx.media3.common.Player
import com.google.android.horologist.media.model.MediaItemPosition
import com.google.android.horologist.media.model.MediaPosition
import kotlin.time.Duration.Companion.milliseconds

/**
* Maps a [Media3 player][Player] position into a [MediaItemPosition].
* Maps a [Media3 player][Player] position into a [MediaPosition].
*/
public object MediaItemPositionMapper {
public fun map(player: Player?): MediaItemPosition? {
public object MediaPositionMapper {
public fun map(player: Player?): MediaPosition? {
return if (player == null || player.currentMediaItem == null) {
null
} else if (player.duration == C.TIME_UNSET) {
MediaItemPosition.UnknownDuration(player.currentPosition.milliseconds)
MediaPosition.UnknownDuration(player.currentPosition.milliseconds)
} else {
MediaItemPosition.create(
MediaPosition.create(
current = player.currentPosition.milliseconds,
// Ensure progress is max 100%, even given faulty media metadata
duration = (player.duration.coerceAtLeast(player.currentPosition)).milliseconds
Expand Down
Loading

0 comments on commit 983f393

Please sign in to comment.