Skip to content

Commit

Permalink
Merge pull request #40 from p2devs/issue/36
Browse files Browse the repository at this point in the history
feat: Download comic
  • Loading branch information
pushpender-singh-ap authored Feb 13, 2025
2 parents baa25ff + d86b58b commit 9e3edf8
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 28 deletions.
6 changes: 1 addition & 5 deletions src/Navigation/AppNavigation.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,7 @@ import AnimeVideo from '../Screens/Anime/Video';
import {Details} from '../Screens/Anime';
import {ComicBook, ComicDetails, SeeAll} from '../Screens/Comic';
import {ViewAll} from '../Screens/Anime/Home/ViewAll';
import {MangaDetails} from '../InkNest-Externals/Screens/Manga/Details/MangaDetails';
import {MangaBook} from '../InkNest-Externals/Screens/Manga/Book/MangaBook';
import {MangaViewAll} from '../InkNest-Externals/Screens/Manga/Home/ViewAll';
import MangaSearch from '../InkNest-Externals/Screens/Manga/Search/Search';
import {MangaHome} from '../InkNest-Externals/Screens/Manga/Home';
import { MangaBook, MangaDetails, MangaHome, MangaSearch, MangaViewAll } from '../InkNest-Externals/Screens/Manga';

const Stack = createNativeStackNavigator();

Expand Down
4 changes: 1 addition & 3 deletions src/Navigation/BottomNavigation.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,15 @@ import {createBottomTabNavigator} from '@react-navigation/bottom-tabs';

import Feather from 'react-native-vector-icons/Feather';
import FontAwesome6 from 'react-native-vector-icons/FontAwesome6';
import Ionicons from 'react-native-vector-icons/Ionicons';
import MaterialIcons from 'react-native-vector-icons/MaterialIcons';

import {Search, Settings, Sources} from '../Screens';
import {Settings, Sources} from '../Screens';
import {NAVIGATION} from '../Constants';
import {useSelector} from 'react-redux';
import {AnimeBookmarks, AnimeHome} from '../Screens/Anime';
import {ComicBookmarks, Home, OfflineComic} from '../Screens/Comic';
import {View, StyleSheet} from 'react-native';
import DownTime from '../Components/UIComp/DownTime';
import {MangaHome} from '../Screens/Manga/Home/Home';

const BottomTab = createBottomTabNavigator();

Expand Down
36 changes: 22 additions & 14 deletions src/Redux/Reducers/index.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { createSlice } from '@reduxjs/toolkit';
import {createSlice} from '@reduxjs/toolkit';

const initialState = {
dataByUrl: {},
Expand Down Expand Up @@ -89,7 +89,7 @@ const Reducers = createSlice({
state.error = null;
},
fetchDataSuccess: (state, action) => {
const { url, data } = action.payload;
const {url, data} = action.payload;
state.dataByUrl[url] = data;
state.loading = false;
state.downTime = false;
Expand All @@ -99,38 +99,46 @@ const Reducers = createSlice({
state.error = action.payload;
},
updateData: (state, action) => {
const { url, data, ComicDetailslink, imageLength } = action.payload;
const {url, data, ComicDetailslink, imageLength} = action.payload;
//keep the old data and update the new data
state.dataByUrl[url] = { ...state.dataByUrl[url], ...data };
state.dataByUrl[url] = {...state.dataByUrl[url], ...data};

if (ComicDetailslink && imageLength) {
state.history[ComicDetailslink] = {
...state?.history?.[ComicDetailslink],
readComics: {
...state?.history?.[ComicDetailslink]?.readComics,
[url]: { totalPage: imageLength, lastReadPage: data.lastReadPage }
}
}
[url]: {totalPage: imageLength, lastReadPage: data.lastReadPage},
},
};
}

// state.dataByUrl[url] = data;
},
DownloadComicBook: (state, action) => {
const { link, data, title, } = action.payload;
const {link, data, title} = action.payload;

state.DownloadComic[link] = { title, link, comicBooks: { ...state.DownloadComic[link]?.comicBooks, [data?.link]: data } };
state.DownloadComic[link] = {
title,
link,
comicBooks: {
...state.DownloadComic[link]?.comicBooks,
[data?.link]: data,
},
};
console.log('action.payload', link, data, title);

console.log('state.DownloadComic', state.DownloadComic);

},
DeleteDownloadedComicBook: (state, action) => {
const { comicBooksLink, ChapterLink } = action.payload;
const {comicBooksLink, ChapterLink} = action.payload;
delete state.DownloadComic[comicBooksLink]?.comicBooks[ChapterLink];
if (Object.keys(state.DownloadComic[comicBooksLink]?.comicBooks).length === 0) {
if (
Object.keys(state.DownloadComic[comicBooksLink]?.comicBooks).length ===
0
) {
delete state.DownloadComic[comicBooksLink];
}

},
pushHistory: (state, action) => {
// state.history.push(action.payload);
Expand Down Expand Up @@ -196,6 +204,6 @@ export const {
AddAnimeBookMark,
RemoveAnimeBookMark,
DownloadComicBook,
DeleteDownloadedComicBook
DeleteDownloadedComicBook,
} = Reducers.actions;
export default Reducers.reducer;
22 changes: 16 additions & 6 deletions src/Screens/Comic/Details/ChapterCard.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,10 @@ const ChapterCard = ({item, index, isBookmark, detailPageLink}) => {
state?.data?.DownloadComic?.[detailPageLink]?.comicBooks?.[item?.link],
),
);

const numbersBookmarks = ComicBook?.BookmarkPages?.length;
const [LoadingStatus, setLoadStatus] = useState(false);
const [progress, setProgress] = useState({downloaded: 0, total: 0});
const dispatch = useDispatch();

const handleClick = async () => {
Expand All @@ -48,6 +49,7 @@ const ChapterCard = ({item, index, isBookmark, detailPageLink}) => {
const LoadingComic = async () => {
if (LoadingStatus) return;
setLoadStatus(true);
setProgress({downloaded: 0, total: 0});
crashlytics().log('ChapterCard download clicked');
await analytics().logEvent('newUI_download_comic', {
link: item?.link?.toString(),
Expand Down Expand Up @@ -76,6 +78,7 @@ const ChapterCard = ({item, index, isBookmark, detailPageLink}) => {
},
comicBook: {...data, link: item.link},
setLoadStatus,
onProgress: (downloaded, total) => setProgress({downloaded, total}),
}),
);
};
Expand Down Expand Up @@ -107,7 +110,10 @@ const ChapterCard = ({item, index, isBookmark, detailPageLink}) => {
style={{
color: '#eaebea',
fontSize: 14,
maxWidth: widthPercentageToDP('50%'),
maxWidth:
LoadingStatus && progress
? widthPercentageToDP('30%')
: widthPercentageToDP('50%'),
}}>
{item?.title}
</Text>
Expand Down Expand Up @@ -140,9 +146,13 @@ const ChapterCard = ({item, index, isBookmark, detailPageLink}) => {
) : null}
</View>
{LoadingStatus ? (
<ActivityIndicator size="small" color="skyblue" />
) : null}
{/* {LoadingStatus ? null : !isComicDownload ? (
<View style={{alignItems: 'center'}}>
<ActivityIndicator size="small" color="skyblue" />
<Text style={{fontSize: 12, color: '#fff', marginTop: 4}}>
{progress.downloaded} / {progress.total}
</Text>
</View>
) : !isComicDownload ? (
<Entypo
name="download"
size={24}
Expand All @@ -166,7 +176,7 @@ const ChapterCard = ({item, index, isBookmark, detailPageLink}) => {
navigate(NAVIGATION.offlineComic);
}}
/>
)} */}
)}
</TouchableOpacity>
);
};
Expand Down
3 changes: 3 additions & 0 deletions src/Utils/APIs.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,6 @@ export const AnimeHostName = {
gogoanimes: 'https://ww12.gogoanimes.fi/',
s3taku: 'https://s3taku.com/',
};
export const MangaHostName = {
manganato: 'https://manganato.com/',
};

0 comments on commit 9e3edf8

Please sign in to comment.