private void CopyList(TraktListDetail sourceList, TraktListDetail newList)
{
var copyList = new CopyList { Username = CurrentUser, Source = sourceList, Destination = newList };
var copyThread = new Thread((obj) =>
{
var copyParams = obj as CopyList;
// first create new list
TraktLogger.Info("Creating new list online. Privacy = '{0}', Name = '{1}'", copyParams.Destination.Privacy, copyParams.Destination.Name);
var response = TraktAPI.TraktAPI.CreateCustomList(copyParams.Destination);
if (response != null)
{
// get items from other list
var userListItems = TraktAPI.TraktAPI.GetUserListItems(copyParams.Username, copyParams.Source.Ids.Trakt.ToString(), "min");
// copy items to new list
var itemsToAdd = new TraktSyncAll();
foreach (var item in userListItems)
{
var listItem = new TraktListItem();
listItem.Type = item.Type;
switch (item.Type)
{
case "movie":
if (itemsToAdd.Movies == null)
itemsToAdd.Movies = new List<TraktMovie>();
itemsToAdd.Movies.Add(new TraktMovie { Ids = item.Movie.Ids });
break;
case "show":
if (itemsToAdd.Shows == null)
itemsToAdd.Shows = new List<TraktShow>();
itemsToAdd.Shows.Add(new TraktShow { Ids = item.Show.Ids });
break;
case "season":
if (itemsToAdd.Seasons == null)
itemsToAdd.Seasons = new List<TraktSeason>();
itemsToAdd.Seasons.Add(new TraktSeason { Ids = item.Season.Ids });
break;
case "episode":
if (itemsToAdd.Episodes == null)
itemsToAdd.Episodes = new List<TraktEpisode>();
itemsToAdd.Episodes.Add(new TraktEpisode { Ids = item.Episode.Ids });
break;
case "person":
if (itemsToAdd.People == null)
itemsToAdd.People = new List<TraktPerson>();
itemsToAdd.People.Add(new TraktPerson { Ids = item.Person.Ids });
break;
}
}
// add items to the list
var ItemsAddedResponse = TraktAPI.TraktAPI.AddItemsToList("me", response.Ids.Trakt.ToString(), itemsToAdd);
if (ItemsAddedResponse != null)
{
TraktLists.ClearListCache(TraktSettings.Username);
TraktCache.ClearCustomListCache();
// updated MovingPictures categories and filters menu
if (TraktHelper.IsMovingPicturesAvailableAndEnabled)
{
TraktHandlers.MovingPictures.UpdateCategoriesMenu(SyncListType.CustomList);
TraktHandlers.MovingPictures.UpdateFiltersMenu(SyncListType.CustomList);
}
}
}
})
{
Name = "CopyList",
IsBackground = true
};
copyThread.Start(copyList);
}