OP,
Dump him.
Why have positioned yourself as his mother, helping him so much?
Why would you do that?
You have completely changed the dynamic by running around organising shit for him.
Why did YOU feel you had to do this?
Own the fact that you have devalued yourself by running around being his mother.
Stop crying in front of him and back away.
That dirty toy is disgusting and no one who cared anything for anyone would give something so awful.
We teach people how to treat us.
How dare he treat you like that.
Find your anger and self respect.
How dare he think that a grubby toy was all he had to throw your way.
It's not about spend, its about showing respect for you.
Find your anger and tell him to go to hell.
Don't allow this user to hurt you.